homebridge 2.0.0-beta.3 → 2.0.0-beta.31

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 (169) hide show
  1. package/README.md +16 -17
  2. package/bin/homebridge.js +22 -0
  3. package/config-sample.json +3 -3
  4. package/dist/api.d.ts +457 -0
  5. package/dist/api.d.ts.map +1 -0
  6. package/dist/api.js +221 -0
  7. package/dist/api.js.map +1 -0
  8. package/{lib → dist}/bridgeService.d.ts +19 -10
  9. package/dist/bridgeService.d.ts.map +1 -0
  10. package/{lib → dist}/bridgeService.js +85 -117
  11. package/dist/bridgeService.js.map +1 -0
  12. package/dist/childBridgeFork.d.ts +65 -0
  13. package/dist/childBridgeFork.d.ts.map +1 -0
  14. package/dist/childBridgeFork.js +531 -0
  15. package/dist/childBridgeFork.js.map +1 -0
  16. package/{lib → dist}/childBridgeService.d.ts +30 -7
  17. package/dist/childBridgeService.d.ts.map +1 -0
  18. package/{lib → dist}/childBridgeService.js +127 -69
  19. package/dist/childBridgeService.js.map +1 -0
  20. package/dist/cli.d.ts +3 -0
  21. package/dist/cli.d.ts.map +1 -0
  22. package/dist/cli.js +90 -0
  23. package/dist/cli.js.map +1 -0
  24. package/dist/externalPortService.d.ts +54 -0
  25. package/dist/externalPortService.d.ts.map +1 -0
  26. package/dist/externalPortService.js +125 -0
  27. package/dist/externalPortService.js.map +1 -0
  28. package/dist/index.d.ts +122 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +34 -0
  31. package/dist/index.js.map +1 -0
  32. package/{lib → dist}/ipcService.d.ts +22 -5
  33. package/dist/ipcService.d.ts.map +1 -0
  34. package/{lib → dist}/ipcService.js +12 -12
  35. package/dist/ipcService.js.map +1 -0
  36. package/{lib → dist}/logger.d.ts +12 -6
  37. package/dist/logger.d.ts.map +1 -0
  38. package/{lib → dist}/logger.js +27 -28
  39. package/dist/logger.js.map +1 -0
  40. package/dist/matter/index.d.ts +123 -0
  41. package/dist/matter/index.d.ts.map +1 -0
  42. package/dist/matter/index.js +19 -0
  43. package/dist/matter/index.js.map +1 -0
  44. package/dist/matter/matterAccessoryCache.d.ts +96 -0
  45. package/dist/matter/matterAccessoryCache.d.ts.map +1 -0
  46. package/dist/matter/matterAccessoryCache.js +192 -0
  47. package/dist/matter/matterAccessoryCache.js.map +1 -0
  48. package/dist/matter/matterBehaviors.d.ts +194 -0
  49. package/dist/matter/matterBehaviors.d.ts.map +1 -0
  50. package/dist/matter/matterBehaviors.js +665 -0
  51. package/dist/matter/matterBehaviors.js.map +1 -0
  52. package/dist/matter/matterConfigValidator.d.ts +81 -0
  53. package/dist/matter/matterConfigValidator.d.ts.map +1 -0
  54. package/dist/matter/matterConfigValidator.js +240 -0
  55. package/dist/matter/matterConfigValidator.js.map +1 -0
  56. package/dist/matter/matterErrorHandler.d.ts +106 -0
  57. package/dist/matter/matterErrorHandler.d.ts.map +1 -0
  58. package/dist/matter/matterErrorHandler.js +495 -0
  59. package/dist/matter/matterErrorHandler.js.map +1 -0
  60. package/dist/matter/matterLogFormatter.d.ts +19 -0
  61. package/dist/matter/matterLogFormatter.d.ts.map +1 -0
  62. package/dist/matter/matterLogFormatter.js +144 -0
  63. package/dist/matter/matterLogFormatter.js.map +1 -0
  64. package/dist/matter/matterNetworkMonitor.d.ts +68 -0
  65. package/dist/matter/matterNetworkMonitor.d.ts.map +1 -0
  66. package/dist/matter/matterNetworkMonitor.js +249 -0
  67. package/dist/matter/matterNetworkMonitor.js.map +1 -0
  68. package/dist/matter/matterServer.d.ts +656 -0
  69. package/dist/matter/matterServer.d.ts.map +1 -0
  70. package/dist/matter/matterServer.js +1690 -0
  71. package/dist/matter/matterServer.js.map +1 -0
  72. package/dist/matter/matterServerHelpers.d.ts +81 -0
  73. package/dist/matter/matterServerHelpers.d.ts.map +1 -0
  74. package/dist/matter/matterServerHelpers.js +323 -0
  75. package/dist/matter/matterServerHelpers.js.map +1 -0
  76. package/dist/matter/matterSharedTypes.d.ts +170 -0
  77. package/dist/matter/matterSharedTypes.d.ts.map +1 -0
  78. package/dist/matter/matterSharedTypes.js +52 -0
  79. package/dist/matter/matterSharedTypes.js.map +1 -0
  80. package/dist/matter/matterStorage.d.ts +128 -0
  81. package/dist/matter/matterStorage.d.ts.map +1 -0
  82. package/dist/matter/matterStorage.js +415 -0
  83. package/dist/matter/matterStorage.js.map +1 -0
  84. package/dist/matter/matterTypes.d.ts +745 -0
  85. package/dist/matter/matterTypes.d.ts.map +1 -0
  86. package/dist/matter/matterTypes.js +174 -0
  87. package/dist/matter/matterTypes.js.map +1 -0
  88. package/{lib → dist}/platformAccessory.d.ts +8 -6
  89. package/dist/platformAccessory.d.ts.map +1 -0
  90. package/{lib → dist}/platformAccessory.js +19 -16
  91. package/dist/platformAccessory.js.map +1 -0
  92. package/{lib → dist}/plugin.d.ts +2 -3
  93. package/dist/plugin.d.ts.map +1 -0
  94. package/{lib → dist}/plugin.js +39 -51
  95. package/dist/plugin.js.map +1 -0
  96. package/{lib → dist}/pluginManager.d.ts +3 -3
  97. package/dist/pluginManager.d.ts.map +1 -0
  98. package/{lib → dist}/pluginManager.js +76 -81
  99. package/dist/pluginManager.js.map +1 -0
  100. package/{lib → dist}/server.d.ts +23 -1
  101. package/dist/server.d.ts.map +1 -0
  102. package/dist/server.js +811 -0
  103. package/dist/server.js.map +1 -0
  104. package/{lib → dist}/storageService.d.ts.map +1 -1
  105. package/dist/storageService.js +41 -0
  106. package/dist/storageService.js.map +1 -0
  107. package/{lib → dist}/user.d.ts +1 -0
  108. package/dist/user.d.ts.map +1 -0
  109. package/dist/user.js +32 -0
  110. package/dist/user.js.map +1 -0
  111. package/{lib → dist}/util/mac.d.ts +1 -0
  112. package/dist/util/mac.d.ts.map +1 -0
  113. package/dist/util/mac.js +14 -0
  114. package/dist/util/mac.js.map +1 -0
  115. package/dist/version.d.ts.map +1 -0
  116. package/dist/version.js +16 -0
  117. package/dist/version.js.map +1 -0
  118. package/package.json +48 -49
  119. package/bin/homebridge +0 -17
  120. package/lib/api.d.ts +0 -210
  121. package/lib/api.d.ts.map +0 -1
  122. package/lib/api.js +0 -155
  123. package/lib/api.js.map +0 -1
  124. package/lib/bridgeService.d.ts.map +0 -1
  125. package/lib/bridgeService.js.map +0 -1
  126. package/lib/childBridgeFork.d.ts +0 -37
  127. package/lib/childBridgeFork.d.ts.map +0 -1
  128. package/lib/childBridgeFork.js +0 -244
  129. package/lib/childBridgeFork.js.map +0 -1
  130. package/lib/childBridgeService.d.ts.map +0 -1
  131. package/lib/childBridgeService.js.map +0 -1
  132. package/lib/cli.d.ts +0 -4
  133. package/lib/cli.d.ts.map +0 -1
  134. package/lib/cli.js +0 -111
  135. package/lib/cli.js.map +0 -1
  136. package/lib/externalPortService.d.ts +0 -33
  137. package/lib/externalPortService.d.ts.map +0 -1
  138. package/lib/externalPortService.js +0 -64
  139. package/lib/externalPortService.js.map +0 -1
  140. package/lib/index.d.ts +0 -76
  141. package/lib/index.d.ts.map +0 -1
  142. package/lib/index.js +0 -72
  143. package/lib/index.js.map +0 -1
  144. package/lib/ipcService.d.ts.map +0 -1
  145. package/lib/ipcService.js.map +0 -1
  146. package/lib/logger.d.ts.map +0 -1
  147. package/lib/logger.js.map +0 -1
  148. package/lib/platformAccessory.d.ts.map +0 -1
  149. package/lib/platformAccessory.js.map +0 -1
  150. package/lib/plugin.d.ts.map +0 -1
  151. package/lib/plugin.js.map +0 -1
  152. package/lib/pluginManager.d.ts.map +0 -1
  153. package/lib/pluginManager.js.map +0 -1
  154. package/lib/server.d.ts.map +0 -1
  155. package/lib/server.js +0 -457
  156. package/lib/server.js.map +0 -1
  157. package/lib/storageService.js +0 -70
  158. package/lib/storageService.js.map +0 -1
  159. package/lib/user.d.ts.map +0 -1
  160. package/lib/user.js +0 -36
  161. package/lib/user.js.map +0 -1
  162. package/lib/util/mac.d.ts.map +0 -1
  163. package/lib/util/mac.js +0 -20
  164. package/lib/util/mac.js.map +0 -1
  165. package/lib/version.d.ts.map +0 -1
  166. package/lib/version.js +0 -21
  167. package/lib/version.js.map +0 -1
  168. /package/{lib → dist}/storageService.d.ts +0 -0
  169. /package/{lib → dist}/version.d.ts +0 -0
@@ -0,0 +1,125 @@
1
+ import { Logger } from './logger.js';
2
+ /**
3
+ * Allocates ports from the user defined `config.ports` and `config.matterPorts` options
4
+ * This service is used to allocate ports for external accessories on the main bridge, and child bridges.
5
+ * HAP ports and Matter ports are managed separately with their own ranges.
6
+ */
7
+ export class ExternalPortService {
8
+ externalPorts;
9
+ matterPorts;
10
+ nextExternalPort;
11
+ nextMatterPort;
12
+ allocatedPorts = new Map();
13
+ allocatedMatterPorts = new Map();
14
+ constructor(externalPorts, matterPorts) {
15
+ this.externalPorts = externalPorts;
16
+ this.matterPorts = matterPorts;
17
+ }
18
+ /**
19
+ * Returns the next available HAP port in the external port config.
20
+ * If the external port is not configured by the user it will return undefined.
21
+ * If the port range has been exhausted it will return undefined.
22
+ */
23
+ async requestPort(username) {
24
+ // check to see if this device has already requested an external port
25
+ const existingPortAllocation = this.allocatedPorts.get(username);
26
+ if (existingPortAllocation) {
27
+ return existingPortAllocation;
28
+ }
29
+ // get the next unused port
30
+ const port = this.getNextFreePort();
31
+ this.allocatedPorts.set(username, port);
32
+ return port;
33
+ }
34
+ /**
35
+ * Returns the next available Matter port in the Matter port config.
36
+ * If Matter ports are not configured, falls back to range 5530-5541.
37
+ * If the port range has been exhausted it will return undefined.
38
+ *
39
+ * @param uuid - Unique identifier for the Matter accessory (can be accessory UUID or other unique string)
40
+ */
41
+ async requestMatterPort(uuid) {
42
+ // check to see if this accessory has already requested a Matter port
43
+ const existingPortAllocation = this.allocatedMatterPorts.get(uuid);
44
+ if (existingPortAllocation) {
45
+ return existingPortAllocation;
46
+ }
47
+ // get the next unused Matter port
48
+ const port = this.getNextFreeMatterPort();
49
+ this.allocatedMatterPorts.set(uuid, port);
50
+ return port;
51
+ }
52
+ /**
53
+ * Get an unused Matter port without allocating it.
54
+ * Useful for UI/API to get a suggested port.
55
+ * Falls back to random port in range 5530-5541 if no port range configured.
56
+ */
57
+ getUnusedMatterPort() {
58
+ if (!this.matterPorts) {
59
+ // Fallback to Matter default range if not configured
60
+ return Math.floor(Math.random() * (5541 - 5530 + 1) + 5530);
61
+ }
62
+ // Try to find an unused port in the configured range
63
+ const port = this.getNextFreeMatterPort();
64
+ if (port) {
65
+ return port;
66
+ }
67
+ // If all ports exhausted, return random from configured range
68
+ return Math.floor(Math.random() * (this.matterPorts.end - this.matterPorts.start + 1) + this.matterPorts.start);
69
+ }
70
+ getNextFreePort() {
71
+ if (!this.externalPorts) {
72
+ return undefined;
73
+ }
74
+ if (this.nextExternalPort === undefined) {
75
+ this.nextExternalPort = this.externalPorts.start;
76
+ return this.nextExternalPort;
77
+ }
78
+ this.nextExternalPort++;
79
+ if (this.nextExternalPort <= this.externalPorts.end) {
80
+ return this.nextExternalPort;
81
+ }
82
+ Logger.internal.warn('External HAP port pool ran out of ports. Falling back to random port assignment.');
83
+ return undefined;
84
+ }
85
+ getNextFreeMatterPort() {
86
+ if (!this.matterPorts) {
87
+ // Fallback to Matter default range
88
+ return Math.floor(Math.random() * (5541 - 5530 + 1) + 5530);
89
+ }
90
+ if (this.nextMatterPort === undefined) {
91
+ this.nextMatterPort = this.matterPorts.start;
92
+ return this.nextMatterPort;
93
+ }
94
+ this.nextMatterPort++;
95
+ if (this.nextMatterPort <= this.matterPorts.end) {
96
+ return this.nextMatterPort;
97
+ }
98
+ Logger.internal.warn('Matter port pool ran out of ports. Falling back to random port assignment in range 5530-5541.');
99
+ // Fallback to random in default Matter range
100
+ return Math.floor(Math.random() * (5541 - 5530 + 1) + 5530);
101
+ }
102
+ }
103
+ /**
104
+ * This is the child bridge version of the port allocation service.
105
+ * It requests free ports from the main bridge's port service via IPC.
106
+ */
107
+ export class ChildBridgeExternalPortService extends ExternalPortService {
108
+ childBridge;
109
+ constructor(childBridge) {
110
+ super();
111
+ this.childBridge = childBridge;
112
+ }
113
+ async requestPort(username) {
114
+ return await this.childBridge.requestExternalPort(username);
115
+ }
116
+ async requestMatterPort(uniqueId) {
117
+ // For child bridges, request Matter port from parent via IPC
118
+ return await this.childBridge.requestMatterPort(uniqueId);
119
+ }
120
+ getUnusedMatterPort() {
121
+ // For child bridges without IPC call, return random port in default range
122
+ return Math.floor(Math.random() * (5541 - 5530 + 1) + 5530);
123
+ }
124
+ }
125
+ //# sourceMappingURL=externalPortService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"externalPortService.js","sourceRoot":"","sources":["../src/externalPortService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Export HAP
3
+ */
4
+ import type { API } from './api.js';
5
+ export type HAP = API['hap'];
6
+ /**
7
+ * Export types for basically everything but the actual API implementation
8
+ */
9
+ export type { AccessoryIdentifier, AccessoryName, AccessoryPlugin, AccessoryPluginConstructor, API, DynamicPlatformPlugin, IndependentPlatformPlugin, MatterAPI, PlatformIdentifier, PlatformName, PlatformPluginConstructor, PluginIdentifier, PluginInitializer, PluginName, ScopedPluginName, StaticPlatformPlugin, } from './api.js';
10
+ /**
11
+ * Export API const enums
12
+ */
13
+ export { APIEvent, PluginType } from './api.js';
14
+ /**
15
+ * Export bridge types
16
+ */
17
+ export type { AccessoryConfig, BridgeConfiguration, HomebridgeConfig, PlatformConfig, } from './bridgeService.js';
18
+ /**
19
+ * Export port types
20
+ */
21
+ export type { ExternalPortsConfiguration } from './externalPortService.js';
22
+ /**
23
+ * Export Logger const enums
24
+ */
25
+ export { LogLevel } from './logger.js';
26
+ /**
27
+ * Export Logger types
28
+ */
29
+ export type { Logger, Logging } from './logger.js';
30
+ /**
31
+ * ═══════════════════════════════════════════════════════════════════════
32
+ * Matter Protocol - Plugin API Exports
33
+ * ═══════════════════════════════════════════════════════════════════════
34
+ */
35
+ /**
36
+ * Matter cluster command request types namespace for type-safe handlers
37
+ * @example
38
+ * ```typescript
39
+ * import type { MatterRequests } from 'homebridge'
40
+ *
41
+ * handlers: {
42
+ * levelControl: {
43
+ * moveToLevel: async (args: MatterRequests.MoveToLevel) => {
44
+ * console.log(`Level: ${args.level}`)
45
+ * }
46
+ * }
47
+ * }
48
+ * ```
49
+ */
50
+ export { MatterRequests } from './matter/index.js';
51
+ /**
52
+ * Matter cache types
53
+ */
54
+ export type { SerializedMatterAccessory } from './matter/matterAccessoryCache.js';
55
+ export type { MatterAccessoriesResponse, MatterAccessoryInfo, MatterBridgeMetadata, MatterCommissioningInfo, MatterServerConfig, } from './matter/matterSharedTypes.js';
56
+ export { ChildMatterMessageType, MatterBridgeStatus } from './matter/matterSharedTypes.js';
57
+ /**
58
+ * Matter accessory and configuration types
59
+ */
60
+ export type { MatterAccessory, MatterClusterHandlers, MatterClusterName, MatterCommandHandler, MatterConfig, } from './matter/matterTypes.js';
61
+ /**
62
+ * Matter device types, clusters, and cluster names
63
+ * Access via api.matter.deviceTypes, api.matter.clusters, api.matter.clusterNames
64
+ */
65
+ export { clusterNames, clusters, devices, deviceTypes } from './matter/matterTypes.js';
66
+ /**
67
+ * ═══════════════════════════════════════════════════════════════════════
68
+ * Matter Protocol - UI Integration Types
69
+ * ═══════════════════════════════════════════════════════════════════════
70
+ */
71
+ /**
72
+ * Matter error types for error handling
73
+ */
74
+ export { MatterCommissioningError, MatterDeviceError, MatterError, MatterErrorType, MatterNetworkError, MatterStorageError, } from './matter/matterTypes.js';
75
+ export type { EndpointType, MatterErrorDetails } from './matter/matterTypes.js';
76
+ /**
77
+ * Export Platform Accessory const enums
78
+ */
79
+ export { PlatformAccessoryEvent } from './platformAccessory.js';
80
+ /**
81
+ * Export Platform Accessory Types
82
+ */
83
+ export type { PlatformAccessory, UnknownContext } from './platformAccessory.js';
84
+ /**
85
+ * Export server types
86
+ */
87
+ export type { HomebridgeOptions } from './server.js';
88
+ /**
89
+ * Export User Types
90
+ */
91
+ export type { User } from './user.js';
92
+ /**
93
+ * Export the CONST ENUMS from hap-nodejs
94
+ * These get converted to their string value at compile time
95
+ * and can be safely used directly.
96
+ */
97
+ export { Access, AccessControlEvent, AccessLevel, AccessoryEventTypes, AdaptiveLightingControllerEvents, AdaptiveLightingControllerMode, AudioBitrate, AudioCodecTypes, AudioRecordingCodecType, AudioRecordingSamplerate, AudioSamplerate, AudioStreamingCodecType, AudioStreamingSamplerate, ButtonState, ButtonType, CameraControllerEvents, Categories, ChangeReason, CharacteristicEventTypes, DataFormatTags, DataStreamConnectionEvent, DataStreamServerEvent, DataStreamStatus, DefaultControllerType, EventTriggerOption, Formats, H264Level, H264Profile, HAPServerEventTypes, HAPStatus, HDSProtocolSpecificErrorReason, HDSStatus, MediaContainerType, PacketDataType, Perms, Protocols, RemoteControllerEvents, ResourceRequestReason, ServiceEventTypes, SiriAudioSessionEvents, SRTPCryptoSuites, StreamRequestTypes, TargetCategory, TargetUpdates, Topics, Units, } from 'hap-nodejs';
98
+ /**
99
+ * Export HAP-NodeJS namespaces as type only
100
+ */
101
+ export type { DataStreamParser } from 'hap-nodejs';
102
+ /**
103
+ * Export HAP-NodeJS classes as type only
104
+ */
105
+ export type { AccessControlManagement, AdaptiveLightingController, CameraController, Characteristic, ColorUtils, DataStreamConnection, DataStreamManagement, DataStreamReader, DataStreamServer, DataStreamWriter, DoorbellController, HAPServer, HapStatusError, HAPStorage, HDSProtocolError, RecordingManagement, RemoteController, RTPStreamManagement, Service, SiriAudioSession, } from 'hap-nodejs';
106
+ /**
107
+ * Export HAP-NodeJS interfaces as type only
108
+ */
109
+ export type { ActiveAdaptiveLightingTransition, AdaptiveLightingOptions, AdaptiveLightingTransitionCurveEntry, BrightnessAdjustmentMultiplierRange, CameraControllerOptions, CameraRecordingConfiguration, CameraRecordingDelegate, CameraStreamingDelegate, CharacteristicOperationContext, CharacteristicProps, Controller, ControllerConstructor, ControllerContext, ControllerServiceMap, DataStreamProtocolHandler, DoorbellOptions, H264CodecParameters, MediaContainerConfiguration, ProxiedSourceResponse, PublishInfo, RecordingManagementState, RecordingPacket, RTPProxyOptions, RTPStreamManagementState, SelectedH264CodecParameters, SerializableController, ServiceConfigurationChange, SiriAudioStreamProducer, SiriAudioStreamProducerConstructor, SourceResponse, VideoRecordingOptions, } from 'hap-nodejs';
110
+ /**
111
+ * Export HAP-NodeJS type aliases as type only
112
+ */
113
+ export type { AccessoriesCallback, AccessoryCharacteristicChange, AdditionalAuthorizationHandler, AddPairingCallback, AudioCodecConfiguration, AudioCodecParameters, AudioFrame, AudioInfo, AudioRecordingCodec, AudioRecordingOptions, AudioStreamingCodec, AudioStreamingOptions, ButtonConfiguration, CameraRecordingOptions, CameraStreamingOptions, CharacteristicChange, CharacteristicGetCallback, CharacteristicGetHandler, CharacteristicSetCallback, CharacteristicSetHandler, CharacteristicValue, ConstructorArgs, ControllerType, ErrorHandler, EventHandler, FrameHandler, GlobalEventHandler, GlobalRequestHandler, HAPHttpError, HAPPincode, IdentificationCallback, IdentifyCallback, InterfaceName, IPAddress, IPv4Address, IPv6Address, ListPairingsCallback, MacAddress, NodeCallback, Nullable, PairCallback, PairingsCallback, PartialAllowingNull, PreparedDataStreamSession, PrepareStreamCallback, PrepareStreamRequest, PrepareStreamResponse, PrimitiveTypes, ReadCharacteristicsCallback, ReconfiguredVideoInfo, ReconfigureStreamRequest, RemovePairingCallback, RequestHandler, Resolution, ResourceRequestCallback, ResponseHandler, RTPTime, SerializedServiceMap, ServiceCharacteristicChange, ServiceId, SessionIdentifier, SnapshotRequest, SnapshotRequestCallback, Source, StartStreamRequest, StateChangeDelegate, StopStreamRequest, StreamingRequest, StreamRequestCallback, StreamSessionIdentifier, SupportedButtonConfiguration, SupportedConfiguration, TargetConfiguration, TLVEncodable, VideoInfo, VideoStreamingOptions, VoidCallback, WithUUID, WriteCharacteristicsCallback, } from 'hap-nodejs';
114
+ /**
115
+ * Export HAP-NodeJS variables as type only
116
+ */
117
+ export type { LegacyTypes, uuid } from 'hap-nodejs';
118
+ /**
119
+ * Export HAP-NodeJS functions as type only
120
+ */
121
+ export type { clone, decode, decodeList, decodeWithLists, encode, epochMillisFromMillisSince2001_01_01, epochMillisFromMillisSince2001_01_01Buffer, once, } from 'hap-nodejs';
122
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Export API const enums
3
+ */
4
+ export { APIEvent, PluginType } from './api.js';
5
+ /**
6
+ * Export Logger const enums
7
+ */
8
+ export { LogLevel } from './logger.js';
9
+ export { ChildMatterMessageType, MatterBridgeStatus } from './matter/matterSharedTypes.js';
10
+ /**
11
+ * Matter device types, clusters, and cluster names
12
+ * Access via api.matter.deviceTypes, api.matter.clusters, api.matter.clusterNames
13
+ */
14
+ export { clusterNames, clusters, devices, deviceTypes } from './matter/matterTypes.js';
15
+ /**
16
+ * ═══════════════════════════════════════════════════════════════════════
17
+ * Matter Protocol - UI Integration Types
18
+ * ═══════════════════════════════════════════════════════════════════════
19
+ */
20
+ /**
21
+ * Matter error types for error handling
22
+ */
23
+ export { MatterCommissioningError, MatterDeviceError, MatterError, MatterErrorType, MatterNetworkError, MatterStorageError, } from './matter/matterTypes.js';
24
+ /**
25
+ * Export Platform Accessory const enums
26
+ */
27
+ export { PlatformAccessoryEvent } from './platformAccessory.js';
28
+ /**
29
+ * Export the CONST ENUMS from hap-nodejs
30
+ * These get converted to their string value at compile time
31
+ * and can be safely used directly.
32
+ */
33
+ export { Access, AccessControlEvent, AccessLevel, AccessoryEventTypes, AdaptiveLightingControllerEvents, AdaptiveLightingControllerMode, AudioBitrate, AudioCodecTypes, AudioRecordingCodecType, AudioRecordingSamplerate, AudioSamplerate, AudioStreamingCodecType, AudioStreamingSamplerate, ButtonState, ButtonType, CameraControllerEvents, Categories, ChangeReason, CharacteristicEventTypes, DataFormatTags, DataStreamConnectionEvent, DataStreamServerEvent, DataStreamStatus, DefaultControllerType, EventTriggerOption, Formats, H264Level, H264Profile, HAPServerEventTypes, HAPStatus, HDSProtocolSpecificErrorReason, HDSStatus, MediaContainerType, PacketDataType, Perms, Protocols, RemoteControllerEvents, ResourceRequestReason, ServiceEventTypes, SiriAudioSessionEvents, SRTPCryptoSuites, StreamRequestTypes, TargetCategory, TargetUpdates, Topics, Units, } from 'hap-nodejs';
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA8BA;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAiB/C;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AA2CtC,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAa1F;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAEtF;;;;GAIG;AAEH;;GAEG;AACH,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,yBAAyB,CAAA;AAIhC;;GAEG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAiB/D;;;;GAIG;AACH,OAAO,EACL,MAAM,EACN,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,gCAAgC,EAChC,8BAA8B,EAC9B,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,WAAW,EACX,UAAU,EACV,sBAAsB,EACtB,UAAU,EACV,YAAY,EACZ,wBAAwB,EACxB,cAAc,EACd,yBAAyB,EACzB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EAClB,OAAO,EACP,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,SAAS,EACT,8BAA8B,EAC9B,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,KAAK,EACL,SAAS,EACT,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,MAAM,EACN,KAAK,GACN,MAAM,YAAY,CAAA"}
@@ -1,4 +1,4 @@
1
- import { EventEmitter } from "events";
1
+ import { EventEmitter } from 'node:events';
2
2
  export declare const enum IpcIncomingEvent {
3
3
  RESTART_CHILD_BRIDGE = "restartChildBridge",
4
4
  STOP_CHILD_BRIDGE = "stopChildBridge",
@@ -10,11 +10,28 @@ export declare const enum IpcOutgoingEvent {
10
10
  CHILD_BRIDGE_METADATA_RESPONSE = "childBridgeMetadataResponse",
11
11
  CHILD_BRIDGE_STATUS_UPDATE = "childBridgeStatusUpdate"
12
12
  }
13
+ /**
14
+ * Server status update message sent from Homebridge to parent process
15
+ */
16
+ export interface ServerStatusUpdate {
17
+ status: string;
18
+ paired: boolean | null;
19
+ setupUri: string | null;
20
+ name: string;
21
+ username: string;
22
+ pin: string;
23
+ matter: {
24
+ enabled: boolean;
25
+ port?: number;
26
+ setupUri?: string;
27
+ pin?: string;
28
+ serialNumber?: string;
29
+ commissioned?: boolean;
30
+ deviceCount?: number;
31
+ };
32
+ }
13
33
  export declare interface IpcService {
14
- on(event: IpcIncomingEvent.RESTART_CHILD_BRIDGE, listener: (childBridgeUsername: string) => void): this;
15
- on(event: IpcIncomingEvent.STOP_CHILD_BRIDGE, listener: (childBridgeUsername: string) => void): this;
16
- on(event: IpcIncomingEvent.START_CHILD_BRIDGE, listener: (childBridgeUsername: string) => void): this;
17
- on(event: IpcIncomingEvent.CHILD_BRIDGE_METADATA_REQUEST, listener: () => void): this;
34
+ on: ((event: IpcIncomingEvent.RESTART_CHILD_BRIDGE, listener: (childBridgeUsername: string) => void) => this) & ((event: IpcIncomingEvent.STOP_CHILD_BRIDGE, listener: (childBridgeUsername: string) => void) => this) & ((event: IpcIncomingEvent.START_CHILD_BRIDGE, listener: (childBridgeUsername: string) => void) => this) & ((event: IpcIncomingEvent.CHILD_BRIDGE_METADATA_REQUEST, listener: () => void) => this);
18
35
  }
19
36
  export declare class IpcService extends EventEmitter {
20
37
  constructor();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipcService.d.ts","sourceRoot":"","sources":["../src/ipcService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI1C,0BAAkB,gBAAgB;IAChC,oBAAoB,uBAAuB;IAC3C,iBAAiB,oBAAoB;IACrC,kBAAkB,qBAAqB;IACvC,6BAA6B,+BAA+B;CAC7D;AAGD,0BAAkB,gBAAgB;IAChC,oBAAoB,uBAAuB;IAC3C,8BAA8B,gCAAgC;IAC9D,0BAA0B,4BAA4B;CACvD;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE;QACN,OAAO,EAAE,OAAO,CAAA;QAChB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;CACF;AAGD,MAAM,CAAC,OAAO,WAAW,UAAU;IACjC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,oBAAoB,EAAE,QAAQ,EAAE,CAAC,mBAAmB,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,QAAQ,EAAE,CAAC,mBAAmB,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,kBAAkB,EAAE,QAAQ,EAAE,CAAC,mBAAmB,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,6BAA6B,EAAE,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC,CAAA;CAC3Z;AAGD,qBAAa,UAAW,SAAQ,YAAY;;IAK1C;;;OAGG;IACI,KAAK,IAAI,IAAI;IASpB;;;;OAIG;IACI,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;CAQ9D"}
@@ -1,21 +1,22 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IpcService = exports.IpcOutgoingEvent = exports.IpcIncomingEvent = void 0;
4
- const events_1 = require("events");
5
- var IpcIncomingEvent;
1
+ import { EventEmitter } from 'node:events';
2
+ import process from 'node:process';
3
+ // eslint-disable-next-line no-restricted-syntax
4
+ export var IpcIncomingEvent;
6
5
  (function (IpcIncomingEvent) {
7
6
  IpcIncomingEvent["RESTART_CHILD_BRIDGE"] = "restartChildBridge";
8
7
  IpcIncomingEvent["STOP_CHILD_BRIDGE"] = "stopChildBridge";
9
8
  IpcIncomingEvent["START_CHILD_BRIDGE"] = "startChildBridge";
10
9
  IpcIncomingEvent["CHILD_BRIDGE_METADATA_REQUEST"] = "childBridgeMetadataRequest";
11
- })(IpcIncomingEvent || (exports.IpcIncomingEvent = IpcIncomingEvent = {}));
12
- var IpcOutgoingEvent;
10
+ })(IpcIncomingEvent || (IpcIncomingEvent = {}));
11
+ // eslint-disable-next-line no-restricted-syntax
12
+ export var IpcOutgoingEvent;
13
13
  (function (IpcOutgoingEvent) {
14
14
  IpcOutgoingEvent["SERVER_STATUS_UPDATE"] = "serverStatusUpdate";
15
15
  IpcOutgoingEvent["CHILD_BRIDGE_METADATA_RESPONSE"] = "childBridgeMetadataResponse";
16
16
  IpcOutgoingEvent["CHILD_BRIDGE_STATUS_UPDATE"] = "childBridgeStatusUpdate";
17
- })(IpcOutgoingEvent || (exports.IpcOutgoingEvent = IpcOutgoingEvent = {}));
18
- class IpcService extends events_1.EventEmitter {
17
+ })(IpcOutgoingEvent || (IpcOutgoingEvent = {}));
18
+ // eslint-disable-next-line ts/no-unsafe-declaration-merging
19
+ export class IpcService extends EventEmitter {
19
20
  constructor() {
20
21
  super();
21
22
  }
@@ -24,8 +25,8 @@ class IpcService extends events_1.EventEmitter {
24
25
  * Currently this will only listen for messages from a parent process.
25
26
  */
26
27
  start() {
27
- process.on("message", (message) => {
28
- if (!message || typeof message !== "object" || !message.id) {
28
+ process.on('message', (message) => {
29
+ if (!message || typeof message !== 'object' || !message.id) {
29
30
  return;
30
31
  }
31
32
  this.emit(message.id, message.data);
@@ -45,5 +46,4 @@ class IpcService extends events_1.EventEmitter {
45
46
  }
46
47
  }
47
48
  }
48
- exports.IpcService = IpcService;
49
49
  //# sourceMappingURL=ipcService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipcService.js","sourceRoot":"","sources":["../src/ipcService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,OAAO,MAAM,cAAc,CAAA;AAElC,gDAAgD;AAChD,MAAM,CAAN,IAAkB,gBAKjB;AALD,WAAkB,gBAAgB;IAChC,+DAA2C,CAAA;IAC3C,yDAAqC,CAAA;IACrC,2DAAuC,CAAA;IACvC,gFAA4D,CAAA;AAC9D,CAAC,EALiB,gBAAgB,KAAhB,gBAAgB,QAKjC;AAED,gDAAgD;AAChD,MAAM,CAAN,IAAkB,gBAIjB;AAJD,WAAkB,gBAAgB;IAChC,+DAA2C,CAAA;IAC3C,kFAA8D,CAAA;IAC9D,0EAAsD,CAAA;AACxD,CAAC,EAJiB,gBAAgB,KAAhB,gBAAgB,QAIjC;AA4BD,4DAA4D;AAC5D,MAAM,OAAO,UAAW,SAAQ,YAAY;IAC1C;QACE,KAAK,EAAE,CAAA;IACT,CAAC;IAED;;;OAGG;IACI,KAAK;QACV,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAoC,EAAE,EAAE;YAC7D,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;gBAC3D,OAAM;YACR,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,EAAoB,EAAE,IAAa;QACpD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE;gBACF,IAAI;aACL,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF"}
@@ -24,12 +24,12 @@ export declare const enum LogLevel {
24
24
  export interface Logging {
25
25
  prefix: string;
26
26
  (message: string, ...parameters: any[]): void;
27
- info(message: string, ...parameters: any[]): void;
28
- success(message: string, ...parameters: any[]): void;
29
- warn(message: string, ...parameters: any[]): void;
30
- error(message: string, ...parameters: any[]): void;
31
- debug(message: string, ...parameters: any[]): void;
32
- log(level: LogLevel, message: string, ...parameters: any[]): void;
27
+ info: (message: string, ...parameters: any[]) => void;
28
+ success: (message: string, ...parameters: any[]) => void;
29
+ warn: (message: string, ...parameters: any[]) => void;
30
+ error: (message: string, ...parameters: any[]) => void;
31
+ debug: (message: string, ...parameters: any[]) => void;
32
+ log: (level: LogLevel, message: string, ...parameters: any[]) => void;
33
33
  }
34
34
  /**
35
35
  * Logger class
@@ -59,6 +59,12 @@ export declare class Logger {
59
59
  * @param enabled {boolean}
60
60
  */
61
61
  static setTimestampEnabled(enabled?: boolean): void;
62
+ /**
63
+ * Check if timestamps are enabled in log messages.
64
+ *
65
+ * @returns {boolean} true if timestamps are enabled
66
+ */
67
+ static isTimestampEnabled(): boolean;
62
68
  /**
63
69
  * Forces color in logging output, even if it seems like color is unsupported.
64
70
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,0BAAkB,QAAQ;IACxB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;IAC7C,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;IACrD,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;IACxD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;IACrD,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;IACtD,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;IACtD,GAAG,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;CACtE;AAaD;;GAEG;AACH,qBAAa,MAAM;IACjB,gBAAuB,QAAQ,SAAe;IAC9C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAA6B;IAChE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAQ;IACnC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAO;IAEtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;gBAEZ,MAAM,CAAC,EAAE,MAAM;IAI3B;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAyB1C;;;;OAIG;WACW,eAAe,CAAC,OAAO,GAAE,OAAc,GAAG,IAAI;IAI5D;;;;OAIG;WACW,mBAAmB,CAAC,OAAO,GAAE,OAAc,GAAG,IAAI;IAIhE;;;;OAIG;WACW,kBAAkB,IAAI,OAAO;IAI3C;;OAEG;WACW,UAAU,IAAI,IAAI;IAIzB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,GAAG,EAAE,GAAG,IAAI;IAIjD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,GAAG,EAAE,GAAG,IAAI;IAIpD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,GAAG,EAAE,GAAG,IAAI;IAIjD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,GAAG,EAAE,GAAG,IAAI;IAIlD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,GAAG,EAAE,GAAG,IAAI;IAIlD,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,GAAG,EAAE,GAAG,IAAI;CAoCzE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnD"}
@@ -1,13 +1,5 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Logger = exports.LogLevel = void 0;
7
- exports.getLogPrefix = getLogPrefix;
8
- /* eslint-disable @typescript-eslint/no-explicit-any */
9
- const util_1 = __importDefault(require("util"));
10
- const chalk_1 = __importDefault(require("chalk"));
1
+ import util from 'node:util';
2
+ import chalk from 'chalk';
11
3
  /**
12
4
  * Log levels to indicate importance of the logged message.
13
5
  * Every level corresponds to a certain color.
@@ -20,18 +12,19 @@ const chalk_1 = __importDefault(require("chalk"));
20
12
  *
21
13
  * Messages with DEBUG level are only displayed if explicitly enabled.
22
14
  */
23
- var LogLevel;
15
+ // eslint-disable-next-line no-restricted-syntax
16
+ export var LogLevel;
24
17
  (function (LogLevel) {
25
18
  LogLevel["INFO"] = "info";
26
19
  LogLevel["SUCCESS"] = "success";
27
20
  LogLevel["WARN"] = "warn";
28
21
  LogLevel["ERROR"] = "error";
29
22
  LogLevel["DEBUG"] = "debug";
30
- })(LogLevel || (exports.LogLevel = LogLevel = {}));
23
+ })(LogLevel || (LogLevel = {}));
31
24
  /**
32
25
  * Logger class
33
26
  */
34
- class Logger {
27
+ export class Logger {
35
28
  static internal = new Logger();
36
29
  static loggerCache = new Map(); // global cache of logger instances by plugin name
37
30
  static debugEnabled = false;
@@ -60,9 +53,8 @@ class Logger {
60
53
  log.debug = logger.debug;
61
54
  log.log = logger.log;
62
55
  log.prefix = logger.prefix;
63
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
64
- // @ts-ignore
65
- const logging = log; // I aimed to not use ts-ignore in this project, but this evil "thing" above is hell
56
+ // @ts-expect-error: I aimed to not use ts-ignore in this project, but this evil "thing" above is hell
57
+ const logging = log;
66
58
  Logger.loggerCache.set(prefix, logging);
67
59
  return logging;
68
60
  }
@@ -83,11 +75,19 @@ class Logger {
83
75
  static setTimestampEnabled(enabled = true) {
84
76
  Logger.timestampEnabled = enabled;
85
77
  }
78
+ /**
79
+ * Check if timestamps are enabled in log messages.
80
+ *
81
+ * @returns {boolean} true if timestamps are enabled
82
+ */
83
+ static isTimestampEnabled() {
84
+ return Logger.timestampEnabled;
85
+ }
86
86
  /**
87
87
  * Forces color in logging output, even if it seems like color is unsupported.
88
88
  */
89
89
  static forceColor() {
90
- chalk_1.default.level = 1; // `1` - Basic 16 colors support.
90
+ chalk.level = 1; // `1` - Basic 16 colors support.
91
91
  }
92
92
  info(message, ...parameters) {
93
93
  this.log("info" /* LogLevel.INFO */, message, ...parameters);
@@ -108,40 +108,39 @@ class Logger {
108
108
  if (level === "debug" /* LogLevel.DEBUG */ && !Logger.debugEnabled) {
109
109
  return;
110
110
  }
111
- message = util_1.default.format(message, ...parameters);
112
- let loggingFunction = console.log;
111
+ message = util.format(message, ...parameters);
112
+ let loggingFunction = console.log; // eslint-disable-line no-console
113
113
  switch (level) {
114
114
  case "success" /* LogLevel.SUCCESS */:
115
- message = chalk_1.default.green(message);
115
+ message = chalk.green(message);
116
116
  break;
117
117
  case "warn" /* LogLevel.WARN */:
118
- message = chalk_1.default.yellow(message);
118
+ message = chalk.yellow(message);
119
119
  loggingFunction = console.error;
120
120
  break;
121
121
  case "error" /* LogLevel.ERROR */:
122
- message = chalk_1.default.red(message);
122
+ message = chalk.red(message);
123
123
  loggingFunction = console.error;
124
124
  break;
125
125
  case "debug" /* LogLevel.DEBUG */:
126
- message = chalk_1.default.gray(message);
126
+ message = chalk.gray(message);
127
127
  break;
128
128
  }
129
129
  if (this.prefix) {
130
- message = getLogPrefix(this.prefix) + " " + message;
130
+ message = `${getLogPrefix(this.prefix)} ${message}`;
131
131
  }
132
132
  if (Logger.timestampEnabled) {
133
133
  const date = new Date();
134
- message = chalk_1.default.white(`[${date.toLocaleString()}] `) + message;
134
+ message = chalk.white(`[${date.toLocaleString()}] `) + message;
135
135
  }
136
136
  loggingFunction(message);
137
137
  }
138
138
  }
139
- exports.Logger = Logger;
140
139
  /**
141
140
  * Gets the prefix
142
141
  * @param prefix
143
142
  */
144
- function getLogPrefix(prefix) {
145
- return chalk_1.default.cyan(`[${prefix}]`);
143
+ export function getLogPrefix(prefix) {
144
+ return chalk.cyan(`[${prefix}]`);
146
145
  }
147
146
  //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}