homebridge-plugin-utils 1.16.0 → 1.18.0

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.
@@ -5,6 +5,7 @@ import { FfmpegProcess } from "./process.js";
5
5
  /**
6
6
  * Options for configuring an fMP4 recording or livestream session.
7
7
  *
8
+ * @property codec - The codec for the input video stream. Valid values are `h264` and `hevc`. Defaults to `h264`.
8
9
  * @property fps - The video frames per second for the session.
9
10
  * @property livestream - Indicates if this is a livestream session (`true`) or a recording (`false`).
10
11
  * @property probesize - Number of bytes to analyze for stream information.
@@ -12,6 +13,7 @@ import { FfmpegProcess } from "./process.js";
12
13
  * @property url - Source URL for livestreaming (RTSP).
13
14
  */
14
15
  interface Fmp4OptionsConfig {
16
+ codec: string;
15
17
  fps: number;
16
18
  livestream: boolean;
17
19
  probesize: number;
@@ -62,7 +64,8 @@ declare class FfmpegFmp4Process extends FfmpegProcess {
62
64
  * @param ffmpegOptions - FFmpeg configuration options.
63
65
  * @param recordingConfig - HomeKit recording configuration for the session.
64
66
  * @param isAudioActive - If `true`, enables audio stream processing.
65
- * @param fmp4Options - Partial configuration for the fMP4 session (fps, url, etc.).
67
+ * @param fmp4Options - Configuration for the fMP4 session (fps, type, url, etc.).
68
+ * @param isVerbose - If `true`, enables more verbose logging for debugging purposes. Defaults to `false`.
66
69
  *
67
70
  * @example
68
71
  *
@@ -70,7 +73,7 @@ declare class FfmpegFmp4Process extends FfmpegProcess {
70
73
  * const process = new FfmpegFmp4Process(ffmpegOptions, recordingConfig, true, { fps: 30 });
71
74
  * ```
72
75
  */
73
- constructor(ffmpegOptions: FfmpegOptions, recordingConfig: CameraRecordingConfiguration, isAudioActive: boolean, fmp4Options?: Partial<Fmp4OptionsConfig>);
76
+ constructor(ffmpegOptions: FfmpegOptions, recordingConfig: CameraRecordingConfiguration, isAudioActive: boolean, fmp4Options?: Partial<Fmp4OptionsConfig>, isVerbose?: boolean);
74
77
  /**
75
78
  * Prepares and configures the FFmpeg process for reading and parsing output fMP4 data.
76
79
  *
@@ -181,11 +184,13 @@ export declare class FfmpegRecordingProcess extends FfmpegFmp4Process {
181
184
  * @param options - FFmpeg configuration options.
182
185
  * @param recordingConfig - HomeKit recording configuration for the session.
183
186
  * @param fps - Video frames per second.
184
- * @param isAudioActive - If `true`, enables audio stream processing.
187
+ * @param processAudio - If `true`, enables audio stream processing.
185
188
  * @param probesize - Stream analysis size, in bytes.
186
189
  * @param timeshift - Timeshift offset for event-based recording, in milliseconds.
190
+ * @param codec - Codec for the video stream input. Valid values are: `h264` and `hevc`. Defaults to `h264`.
191
+ * @param isVerbose - If `true`, enables more verbose logging for debugging purposes. Defaults to `false`.
187
192
  */
188
- constructor(options: FfmpegOptions, recordingConfig: CameraRecordingConfiguration, fps: number, isAudioActive: boolean, probesize: number, timeshift: number);
193
+ constructor(options: FfmpegOptions, recordingConfig: CameraRecordingConfiguration, fps: number, processAudio: boolean, probesize: number, timeshift: number, codec?: string, isVerbose?: boolean);
189
194
  }
190
195
  /**
191
196
  * Manages a HomeKit livestream FFmpeg process for generating fMP4 segments.
@@ -211,9 +216,11 @@ export declare class FfmpegLivestreamProcess extends FfmpegFmp4Process {
211
216
  * @param recordingConfig - HomeKit recording configuration for the session.
212
217
  * @param url - Source RTSP or livestream URL.
213
218
  * @param fps - Video frames per second.
214
- * @param isAudioActive - If `true`, enables audio stream processing.
219
+ * @param processAudio - If `true`, enables audio stream processing. Defaults to `true`.
220
+ * @param codec - Codec for the video stream input. Valid values are: `h264` and `hevc`. Defaults to `h264`.
221
+ * @param isVerbose - If `true`, enables more verbose logging for debugging purposes. Defaults to `false`.
215
222
  */
216
- constructor(options: FfmpegOptions, recordingConfig: CameraRecordingConfiguration, url: string, fps: number, isAudioActive: boolean);
223
+ constructor(options: FfmpegOptions, recordingConfig: CameraRecordingConfiguration, url: string, fps: number, processAudio?: boolean, codec?: string, isVerbose?: boolean);
217
224
  /**
218
225
  * Gets the fMP4 initialization segment generated by FFmpeg for the livestream.
219
226
  *
@@ -69,7 +69,8 @@ class FfmpegFmp4Process extends FfmpegProcess {
69
69
  * @param ffmpegOptions - FFmpeg configuration options.
70
70
  * @param recordingConfig - HomeKit recording configuration for the session.
71
71
  * @param isAudioActive - If `true`, enables audio stream processing.
72
- * @param fmp4Options - Partial configuration for the fMP4 session (fps, url, etc.).
72
+ * @param fmp4Options - Configuration for the fMP4 session (fps, type, url, etc.).
73
+ * @param isVerbose - If `true`, enables more verbose logging for debugging purposes. Defaults to `false`.
73
74
  *
74
75
  * @example
75
76
  *
@@ -77,7 +78,7 @@ class FfmpegFmp4Process extends FfmpegProcess {
77
78
  * const process = new FfmpegFmp4Process(ffmpegOptions, recordingConfig, true, { fps: 30 });
78
79
  * ```
79
80
  */
80
- constructor(ffmpegOptions, recordingConfig, isAudioActive, fmp4Options = {}) {
81
+ constructor(ffmpegOptions, recordingConfig, isAudioActive, fmp4Options = {}, isVerbose = false) {
81
82
  // Initialize our parent.
82
83
  super(ffmpegOptions);
83
84
  // We want to log errors when they occur.
@@ -89,6 +90,7 @@ class FfmpegFmp4Process extends FfmpegProcess {
89
90
  // Initialize our state.
90
91
  this.isLivestream = fmp4Options.livestream ?? false;
91
92
  this.isTimedOut = false;
93
+ fmp4Options.codec ??= "h264";
92
94
  fmp4Options.fps ??= 30;
93
95
  fmp4Options.url ??= "";
94
96
  // Save our recording configuration.
@@ -107,8 +109,9 @@ class FfmpegFmp4Process extends FfmpegProcess {
107
109
  this.commandLineArgs = [
108
110
  "-hide_banner",
109
111
  "-nostats",
110
- "-fflags", "+discardcorrupt+genpts",
111
- "-err_detect", "ignore_err"
112
+ "-fflags", "+discardcorrupt",
113
+ "-err_detect", "ignore_err",
114
+ ...this.options.videoDecoder(fmp4Options.codec)
112
115
  ];
113
116
  if (this.isLivestream) {
114
117
  this.commandLineArgs.push("-avioflags", "direct", "-rtsp_transport", "tcp", "-i", fmp4Options.url);
@@ -133,10 +136,11 @@ class FfmpegFmp4Process extends FfmpegProcess {
133
136
  if (this.isLivestream) {
134
137
  this.commandLineArgs.push("-frag_duration", "1000000");
135
138
  }
136
- // -movflags flags In the generated fMP4 stream: start a new fragment at each keyframe, write a blank MOOV box, and avoid writing absolute offsets.
139
+ // -movflags flags In the generated fMP4 stream: set the default-base-is-moof flag in the header, write an initial empty MOOV box, start a new fragment
140
+ // at each keyframe, skip creating a segment index (SIDX) box in fragments, and skip writing the final MOOV trailer since it's unneeded.
137
141
  // -reset_timestamps Reset timestamps at the beginning of each segment.
138
142
  // -metadata Set the metadata to the name of the camera to distinguish between FFmpeg sessions.
139
- this.commandLineArgs.push("-movflags", "frag_keyframe+empty_moov+default_base_moof+skip_sidx+skip_trailer", "-reset_timestamps", "1", "-metadata", "comment=" + this.options.name() + " " + (this.isLivestream ? "Livestream Buffer" : "HKSV Event"));
143
+ this.commandLineArgs.push("-movflags", "default_base_moof+empty_moov+frag_keyframe+skip_sidx+skip_trailer", "-reset_timestamps", "1", "-metadata", "comment=" + this.options.name() + " " + (this.isLivestream ? "Livestream Buffer" : "HKSV Event"));
140
144
  if (isAudioActive) {
141
145
  // Configure the audio portion of the command line. Options we use are:
142
146
  //
@@ -148,9 +152,9 @@ class FfmpegFmp4Process extends FfmpegProcess {
148
152
  //
149
153
  // -f mp4 Tell ffmpeg that it should create an MP4-encoded output stream.
150
154
  // pipe:1 Output the stream to standard output.
151
- this.commandLineArgs.push("-f", "mp4", "pipe:1");
155
+ this.commandLineArgs.push("-f", "mp4", "-avioflags", "direct", "pipe:1");
152
156
  // Additional logging, but only if we're debugging.
153
- if (this.options.codecSupport.verbose || this.isVerbose) {
157
+ if (isVerbose || this.isVerbose) {
154
158
  this.commandLineArgs.unshift("-loglevel", "level+verbose");
155
159
  }
156
160
  }
@@ -449,12 +453,14 @@ export class FfmpegRecordingProcess extends FfmpegFmp4Process {
449
453
  * @param options - FFmpeg configuration options.
450
454
  * @param recordingConfig - HomeKit recording configuration for the session.
451
455
  * @param fps - Video frames per second.
452
- * @param isAudioActive - If `true`, enables audio stream processing.
456
+ * @param processAudio - If `true`, enables audio stream processing.
453
457
  * @param probesize - Stream analysis size, in bytes.
454
458
  * @param timeshift - Timeshift offset for event-based recording, in milliseconds.
459
+ * @param codec - Codec for the video stream input. Valid values are: `h264` and `hevc`. Defaults to `h264`.
460
+ * @param isVerbose - If `true`, enables more verbose logging for debugging purposes. Defaults to `false`.
455
461
  */
456
- constructor(options, recordingConfig, fps, isAudioActive, probesize, timeshift) {
457
- super(options, recordingConfig, isAudioActive, { fps: fps, probesize: probesize, timeshift: timeshift });
462
+ constructor(options, recordingConfig, fps, processAudio, probesize, timeshift, codec = "h264", isVerbose = false) {
463
+ super(options, recordingConfig, processAudio, { codec: codec, fps: fps, probesize: probesize, timeshift: timeshift }, isVerbose);
458
464
  }
459
465
  }
460
466
  /**
@@ -481,10 +487,12 @@ export class FfmpegLivestreamProcess extends FfmpegFmp4Process {
481
487
  * @param recordingConfig - HomeKit recording configuration for the session.
482
488
  * @param url - Source RTSP or livestream URL.
483
489
  * @param fps - Video frames per second.
484
- * @param isAudioActive - If `true`, enables audio stream processing.
490
+ * @param processAudio - If `true`, enables audio stream processing. Defaults to `true`.
491
+ * @param codec - Codec for the video stream input. Valid values are: `h264` and `hevc`. Defaults to `h264`.
492
+ * @param isVerbose - If `true`, enables more verbose logging for debugging purposes. Defaults to `false`.
485
493
  */
486
- constructor(options, recordingConfig, url, fps, isAudioActive) {
487
- super(options, recordingConfig, isAudioActive, { fps: fps, livestream: true, url: url });
494
+ constructor(options, recordingConfig, url, fps, processAudio = true, codec = "h264", isVerbose = false) {
495
+ super(options, recordingConfig, processAudio, { codec: codec, fps: fps, livestream: true, url: url }, isVerbose);
488
496
  }
489
497
  /**
490
498
  * Gets the fMP4 initialization segment generated by FFmpeg for the livestream.
@@ -1 +1 @@
1
- {"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/ffmpeg/record.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/ffmpeg/record.ts"],"names":[],"mappings":"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"}
package/dist/service.d.ts CHANGED
@@ -6,35 +6,73 @@
6
6
  import type { HAP, PlatformAccessory, Service, WithUUID } from "homebridge";
7
7
  import { type Nullable } from "./util.js";
8
8
  /**
9
- * Utility method that either creates a new service on an accessory, if needed, or returns an existing one. It optionally executes a callback to initialize a new
10
- * instance of a service, if needed. Additionally, the various name characteristics of the service will be set to the specified name, optionally adding them as needed.
9
+ * Utility method that either creates a new service on an accessory if needed, or returns an existing one. Optionally, it executes a callback to initialize a new
10
+ * service instance. Additionally, the various name characteristics of the service are set to the specified name, and optionally added if necessary.
11
11
  *
12
12
  * @param hap - HAP instance associated with the Homebridge plugin.
13
- * @param accessory - Homebridge accessory to check.
14
- * @param serviceType - Service type that is being instantiated or retrieved.
13
+ * @param accessory - The Homebridge accessory to check or modify.
14
+ * @param serviceType - The type of service to instantiate or retrieve.
15
15
  * @param name - Name to be displayed to the end user for this service.
16
- * @param subtype - Service subtype, if needed.
17
- * @param onServiceCreate - Callback to be used when a new service is created. It is not called when an existing service is found.
16
+ * @param subtype - Optional service subtype to uniquely identify the service.
17
+ * @param onServiceCreate - Optional callback invoked only when a new service is created, receiving the new service as its argument.
18
18
  *
19
- * @returns Returns the created or retrieved service, `null` otherwise.
19
+ * @returns Returns the created or retrieved service, or `null` if service creation failed.
20
20
  *
21
- * @remarks `onServiceCreate` is called with the newly created service as an argument to allow the caller to optionally configure it.
21
+ * @remarks
22
+ * This method ensures that the service's display name and available name characteristics are updated to the specified name. If `onServiceCreate` is provided,
23
+ * it will only be called for newly created services, not for existing ones.
24
+ *
25
+ * The `ConfiguredName` and `Name` characteristics are conditionally added or updated based on the type of service, in accordance with HomeKit requirements.
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * // Example: Ensure a Lightbulb service exists with a user-friendly name, and initialize it if newly created.
30
+ * const lightbulbService = acquireService(hap, accessory, hap.Service.Lightbulb, "Living Room Lamp", undefined, (svc: Service): void => {
31
+ *
32
+ * // Called only if the service is newly created.
33
+ * svc.setCharacteristic(hap.Characteristic.On, false);
34
+ * });
35
+ *
36
+ * if(lightbulbService) {
37
+ *
38
+ * // Service is now available, with display name set and optional characteristics managed.
39
+ * lightbulbService.updateCharacteristic(hap.Characteristic.Brightness, 75);
40
+ * }
41
+ * ```
22
42
  *
23
43
  * @category Accessory
24
44
  */
25
45
  export declare function acquireService(hap: HAP, accessory: PlatformAccessory, serviceType: WithUUID<typeof Service>, name: string, subtype?: string, onServiceCreate?: (svc: Service) => void): Nullable<Service>;
26
46
  /**
27
- * Validate whether a service should exist, removing it if needed.
47
+ * Validates whether a specific service should exist on the given accessory, removing the service if it fails validation.
48
+ *
49
+ * @param accessory - The Homebridge accessory to inspect and potentially modify.
50
+ * @param serviceType - The type of Homebridge service being checked or instantiated.
51
+ * @param validate - A boolean or a function that determines if the service should exist. If a function is provided, it receives a boolean indicating whether the
52
+ * service currently exists, and should return `true` to keep the service, or `false` to remove it.
53
+ * @param subtype - Optional service subtype to uniquely identify the service.
54
+ *
55
+ * @returns `true` if the service is valid (and kept), or `false` if it was removed.
56
+ *
57
+ * @remarks
58
+ * The `validate` parameter can be either:
59
+ * - a boolean (where `true` means keep the service, `false` means remove it).
60
+ * - a function (which is called with `hasService: boolean` and returns whether to keep the service).
61
+ *
62
+ * If the service should not exist according to `validate`, and it is currently present, this function will remove it from the accessory.
28
63
  *
29
- * @param accessory - Homebridge accessory to check.
30
- * @param serviceType - Service type that is being instantiated or retrieved.
31
- * @param validate - Function to be used to test whether a service should exist or not.
32
- * @param subtype - Service subtype, if needed.
64
+ * @example
65
+ * ```typescript
66
+ * // Remove a service if it exists
67
+ * validService(accessory, Service.Switch, false);
33
68
  *
34
- * @returns Returns `true` if the service is valid, will remove the service and return `false` otherwise.
69
+ * // Only keep a service if a configuration flag is true
70
+ * validService(accessory, Service.Switch, config.enableSwitch);
35
71
  *
36
- * @remarks `validate` is called with an argument of `true` if the service currently exists on the accessory and `false` otherwise.
72
+ * // Keep a service if it currently exists, or add it if a certain condition is met
73
+ * validService(accessory, Service.Switch, (hasService) => hasService || config.enableSwitch);
74
+ * ```
37
75
  *
38
76
  * @category Accessory
39
77
  */
40
- export declare function validService(accessory: PlatformAccessory, serviceType: WithUUID<typeof Service>, validate: (hasService: boolean) => boolean, subtype?: string): boolean;
78
+ export declare function validService(accessory: PlatformAccessory, serviceType: WithUUID<typeof Service>, validate: boolean | ((hasService: boolean) => boolean), subtype?: string): boolean;
package/dist/service.js CHANGED
@@ -4,19 +4,39 @@
4
4
  */
5
5
  import { validateName } from "./util.js";
6
6
  /**
7
- * Utility method that either creates a new service on an accessory, if needed, or returns an existing one. It optionally executes a callback to initialize a new
8
- * instance of a service, if needed. Additionally, the various name characteristics of the service will be set to the specified name, optionally adding them as needed.
7
+ * Utility method that either creates a new service on an accessory if needed, or returns an existing one. Optionally, it executes a callback to initialize a new
8
+ * service instance. Additionally, the various name characteristics of the service are set to the specified name, and optionally added if necessary.
9
9
  *
10
10
  * @param hap - HAP instance associated with the Homebridge plugin.
11
- * @param accessory - Homebridge accessory to check.
12
- * @param serviceType - Service type that is being instantiated or retrieved.
11
+ * @param accessory - The Homebridge accessory to check or modify.
12
+ * @param serviceType - The type of service to instantiate or retrieve.
13
13
  * @param name - Name to be displayed to the end user for this service.
14
- * @param subtype - Service subtype, if needed.
15
- * @param onServiceCreate - Callback to be used when a new service is created. It is not called when an existing service is found.
14
+ * @param subtype - Optional service subtype to uniquely identify the service.
15
+ * @param onServiceCreate - Optional callback invoked only when a new service is created, receiving the new service as its argument.
16
16
  *
17
- * @returns Returns the created or retrieved service, `null` otherwise.
17
+ * @returns Returns the created or retrieved service, or `null` if service creation failed.
18
18
  *
19
- * @remarks `onServiceCreate` is called with the newly created service as an argument to allow the caller to optionally configure it.
19
+ * @remarks
20
+ * This method ensures that the service's display name and available name characteristics are updated to the specified name. If `onServiceCreate` is provided,
21
+ * it will only be called for newly created services, not for existing ones.
22
+ *
23
+ * The `ConfiguredName` and `Name` characteristics are conditionally added or updated based on the type of service, in accordance with HomeKit requirements.
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * // Example: Ensure a Lightbulb service exists with a user-friendly name, and initialize it if newly created.
28
+ * const lightbulbService = acquireService(hap, accessory, hap.Service.Lightbulb, "Living Room Lamp", undefined, (svc: Service): void => {
29
+ *
30
+ * // Called only if the service is newly created.
31
+ * svc.setCharacteristic(hap.Characteristic.On, false);
32
+ * });
33
+ *
34
+ * if(lightbulbService) {
35
+ *
36
+ * // Service is now available, with display name set and optional characteristics managed.
37
+ * lightbulbService.updateCharacteristic(hap.Characteristic.Brightness, 75);
38
+ * }
39
+ * ```
20
40
  *
21
41
  * @category Accessory
22
42
  */
@@ -72,24 +92,42 @@ export function acquireService(hap, accessory, serviceType, name, subtype, onSer
72
92
  return service;
73
93
  }
74
94
  /**
75
- * Validate whether a service should exist, removing it if needed.
95
+ * Validates whether a specific service should exist on the given accessory, removing the service if it fails validation.
76
96
  *
77
- * @param accessory - Homebridge accessory to check.
78
- * @param serviceType - Service type that is being instantiated or retrieved.
79
- * @param validate - Function to be used to test whether a service should exist or not.
80
- * @param subtype - Service subtype, if needed.
97
+ * @param accessory - The Homebridge accessory to inspect and potentially modify.
98
+ * @param serviceType - The type of Homebridge service being checked or instantiated.
99
+ * @param validate - A boolean or a function that determines if the service should exist. If a function is provided, it receives a boolean indicating whether the
100
+ * service currently exists, and should return `true` to keep the service, or `false` to remove it.
101
+ * @param subtype - Optional service subtype to uniquely identify the service.
81
102
  *
82
- * @returns Returns `true` if the service is valid, will remove the service and return `false` otherwise.
103
+ * @returns `true` if the service is valid (and kept), or `false` if it was removed.
83
104
  *
84
- * @remarks `validate` is called with an argument of `true` if the service currently exists on the accessory and `false` otherwise.
105
+ * @remarks
106
+ * The `validate` parameter can be either:
107
+ * - a boolean (where `true` means keep the service, `false` means remove it).
108
+ * - a function (which is called with `hasService: boolean` and returns whether to keep the service).
109
+ *
110
+ * If the service should not exist according to `validate`, and it is currently present, this function will remove it from the accessory.
111
+ *
112
+ * @example
113
+ * ```typescript
114
+ * // Remove a service if it exists
115
+ * validService(accessory, Service.Switch, false);
116
+ *
117
+ * // Only keep a service if a configuration flag is true
118
+ * validService(accessory, Service.Switch, config.enableSwitch);
119
+ *
120
+ * // Keep a service if it currently exists, or add it if a certain condition is met
121
+ * validService(accessory, Service.Switch, (hasService) => hasService || config.enableSwitch);
122
+ * ```
85
123
  *
86
124
  * @category Accessory
87
125
  */
88
126
  export function validService(accessory, serviceType, validate, subtype) {
89
- // Find the switch service, if it exists.
127
+ // Find the service, if it exists.
90
128
  const service = subtype ? accessory.getServiceById(serviceType, subtype) : accessory.getService(serviceType);
91
129
  // Validate whether we should have the service. If not, remove it.
92
- if (!validate(!!service)) {
130
+ if (!((typeof validate === "function") ? validate(!!service) : validate)) {
93
131
  if (service) {
94
132
  accessory.removeService(service);
95
133
  }
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "homebridge-plugin-utils",
3
- "version": "1.16.0",
3
+ "version": "1.18.0",
4
4
  "displayName": "Homebridge Plugin Utilities",
5
5
  "description": "Opinionated utilities to provide common capabilities and create rich configuration webUI experiences for Homebridge plugins.",
6
6
  "author": {
@@ -40,13 +40,13 @@
40
40
  },
41
41
  "main": "dist/index.js",
42
42
  "devDependencies": {
43
- "@stylistic/eslint-plugin": "4.2.0",
44
- "@types/node": "22.15.18",
43
+ "@stylistic/eslint-plugin": "4.4.0",
44
+ "@types/node": "22.15.21",
45
45
  "@types/ws": "^8.18.1",
46
46
  "eslint": "^9.27.0",
47
47
  "homebridge": "1.9.0",
48
48
  "shx": "0.4.0",
49
- "typedoc": "0.28.4",
49
+ "typedoc": "0.28.5",
50
50
  "typedoc-plugin-markdown": "4.6.3",
51
51
  "typescript": "5.8.3",
52
52
  "typescript-eslint": "^8.32.1"