homebridge-dummy 1.1.1-beta.0 → 1.2.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.
Files changed (59) hide show
  1. package/CHANGELOG.md +9 -4
  2. package/README.md +27 -133
  3. package/config.schema.json +12 -1
  4. package/dist/accessory/base.d.ts +3 -0
  5. package/dist/accessory/base.js +7 -4
  6. package/dist/accessory/base.js.map +1 -1
  7. package/dist/accessory/group.d.ts +2 -7
  8. package/dist/accessory/group.js +5 -14
  9. package/dist/accessory/group.js.map +1 -1
  10. package/dist/accessory/lock.d.ts +4 -1
  11. package/dist/accessory/lock.js +14 -4
  12. package/dist/accessory/lock.js.map +1 -1
  13. package/dist/accessory/onoff/lightbulb.d.ts +4 -2
  14. package/dist/accessory/onoff/lightbulb.js +15 -9
  15. package/dist/accessory/onoff/lightbulb.js.map +1 -1
  16. package/dist/accessory/onoff/onoff.d.ts +3 -1
  17. package/dist/accessory/onoff/onoff.js +13 -7
  18. package/dist/accessory/onoff/onoff.js.map +1 -1
  19. package/dist/accessory/onoff/outlet.d.ts +1 -1
  20. package/dist/accessory/onoff/outlet.js.map +1 -1
  21. package/dist/accessory/onoff/switch.d.ts +1 -1
  22. package/dist/accessory/onoff/switch.js.map +1 -1
  23. package/dist/accessory/position/blind.d.ts +1 -1
  24. package/dist/accessory/position/blind.js.map +1 -1
  25. package/dist/accessory/position/door.d.ts +1 -1
  26. package/dist/accessory/position/door.js.map +1 -1
  27. package/dist/accessory/position/position.d.ts +3 -0
  28. package/dist/accessory/position/position.js +14 -3
  29. package/dist/accessory/position/position.js.map +1 -1
  30. package/dist/accessory/position/window.d.ts +1 -1
  31. package/dist/accessory/position/window.js.map +1 -1
  32. package/dist/accessory/thermostat.d.ts +6 -1
  33. package/dist/accessory/thermostat.js +33 -21
  34. package/dist/accessory/thermostat.js.map +1 -1
  35. package/dist/homebridge/platform.d.ts +1 -0
  36. package/dist/homebridge/platform.js +10 -3
  37. package/dist/homebridge/platform.js.map +1 -1
  38. package/dist/homebridge-ui/public/index.html +1 -1
  39. package/dist/homebridge-ui/public/ui.js +1 -1
  40. package/dist/i18n/en.d.ts +14 -0
  41. package/dist/i18n/en.js +19 -5
  42. package/dist/i18n/en.js.map +1 -1
  43. package/dist/i18n/i18n.d.ts +14 -0
  44. package/dist/i18n/template.d.ts +14 -0
  45. package/dist/i18n/zz.d.ts +14 -0
  46. package/dist/model/enums.d.ts +8 -0
  47. package/dist/model/enums.js +9 -0
  48. package/dist/model/enums.js.map +1 -1
  49. package/dist/model/types.d.ts +2 -0
  50. package/dist/model/webhook.d.ts +27 -0
  51. package/dist/model/webhook.js +161 -0
  52. package/dist/model/webhook.js.map +1 -0
  53. package/dist/tools/log.d.ts +6 -2
  54. package/dist/tools/log.js +28 -1
  55. package/dist/tools/log.js.map +1 -1
  56. package/dist/tools/validation.d.ts +0 -2
  57. package/dist/tools/validation.js +0 -7
  58. package/dist/tools/validation.js.map +1 -1
  59. package/package.json +5 -1
@@ -139,6 +139,7 @@ declare const translations: {
139
139
  defaultTemperature: string;
140
140
  delay: string;
141
141
  disableLogging: string;
142
+ enableWebook: string;
142
143
  groupName: string;
143
144
  interval: string;
144
145
  name: string;
@@ -197,5 +198,18 @@ declare const translations: {
197
198
  unsupportedType: string;
198
199
  welcome: string[];
199
200
  };
201
+ webhook: {
202
+ missing: string;
203
+ received: string;
204
+ register: string;
205
+ started: string;
206
+ stopped: string;
207
+ stopping: string;
208
+ validRange: string;
209
+ validValues: string;
210
+ unregisteredCommand: string;
211
+ unsupportedCommand: string;
212
+ unregisteredId: string;
213
+ };
200
214
  };
201
215
  export { translations as strings };
@@ -130,6 +130,7 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
130
130
  defaultTemperature: string;
131
131
  delay: string;
132
132
  disableLogging: string;
133
+ enableWebook: string;
133
134
  groupName: string;
134
135
  interval: string;
135
136
  name: string;
@@ -188,5 +189,18 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
188
189
  unsupportedType: string;
189
190
  welcome: string[];
190
191
  };
192
+ webhook: {
193
+ missing: string;
194
+ received: string;
195
+ register: string;
196
+ started: string;
197
+ stopped: string;
198
+ stopping: string;
199
+ validRange: string;
200
+ validValues: string;
201
+ unregisteredCommand: string;
202
+ unsupportedCommand: string;
203
+ unregisteredId: string;
204
+ };
191
205
  };
192
206
  export default REPLACE_THIS_WITH_ISO_CODE;
package/dist/i18n/zz.d.ts CHANGED
@@ -130,6 +130,7 @@ declare const zz: {
130
130
  defaultTemperature: string;
131
131
  delay: string;
132
132
  disableLogging: string;
133
+ enableWebook: string;
133
134
  groupName: string;
134
135
  interval: string;
135
136
  name: string;
@@ -188,5 +189,18 @@ declare const zz: {
188
189
  unsupportedType: string;
189
190
  welcome: string[];
190
191
  };
192
+ webhook: {
193
+ missing: string;
194
+ received: string;
195
+ register: string;
196
+ started: string;
197
+ stopped: string;
198
+ stopping: string;
199
+ validRange: string;
200
+ validValues: string;
201
+ unregisteredCommand: string;
202
+ unsupportedCommand: string;
203
+ unregisteredId: string;
204
+ };
191
205
  };
192
206
  export default zz;
@@ -54,3 +54,11 @@ export declare enum TemperatureUnits {
54
54
  CELSIUS = "C",
55
55
  FAHRENHEIT = "F"
56
56
  }
57
+ export declare enum WebhookCommand {
58
+ Brightness = "Brightness",
59
+ LockTargetState = "LockTargetState",
60
+ On = "On",
61
+ TargetHeatingCoolingState = "TargetHeatingCoolingState",
62
+ TargetPosition = "TargetPosition",
63
+ TargetTemperature = "TargetTemperature"
64
+ }
@@ -63,4 +63,13 @@ export var TemperatureUnits;
63
63
  TemperatureUnits["CELSIUS"] = "C";
64
64
  TemperatureUnits["FAHRENHEIT"] = "F";
65
65
  })(TemperatureUnits || (TemperatureUnits = {}));
66
+ export var WebhookCommand;
67
+ (function (WebhookCommand) {
68
+ WebhookCommand["Brightness"] = "Brightness";
69
+ WebhookCommand["LockTargetState"] = "LockTargetState";
70
+ WebhookCommand["On"] = "On";
71
+ WebhookCommand["TargetHeatingCoolingState"] = "TargetHeatingCoolingState";
72
+ WebhookCommand["TargetPosition"] = "TargetPosition";
73
+ WebhookCommand["TargetTemperature"] = "TargetTemperature";
74
+ })(WebhookCommand || (WebhookCommand = {}));
66
75
  //# sourceMappingURL=enums.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/model/enums.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aASX;AATD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,wCAAuB,CAAA;IACvB,gDAA+B,CAAA;IAC/B,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;IACjB,0CAAyB,CAAA;IACzB,kCAAiB,CAAA;IACjB,kDAAiC,CAAA;AACnC,CAAC,EATW,aAAa,KAAb,aAAa,QASxB;AAED,MAAM,CAAN,IAAY,UAQX;AARD,WAAY,UAAU;IACpB,yDAA2C,CAAA;IAC3C,2DAA6C,CAAA;IAC7C,6CAA+B,CAAA;IAC/B,uCAAyB,CAAA;IACzB,2CAA6B,CAAA;IAC7B,iDAAmC,CAAA;IACnC,yCAA2B,CAAA;AAC7B,CAAC,EARW,UAAU,KAAV,UAAU,QAQrB;AAED,MAAM,CAAN,IAAY,oBAQX;AARD,WAAY,oBAAoB;IAC9B,uEAA+C,CAAA;IAC/C,yEAAiD,CAAA;IACjD,iEAAyC,CAAA;IACzC,qDAA6B,CAAA;IAC7B,yDAAiC,CAAA;IACjC,+DAAuC,CAAA;IACvC,uDAA+B,CAAA;AACjC,CAAC,EARW,oBAAoB,KAApB,oBAAoB,QAQ/B;AAED,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,qCAAiB,CAAA;IACjB,yCAAqB,CAAA;AACvB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAED,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,oCAAiB,CAAA;AACnB,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AAED,MAAM,CAAN,IAAY,sBAKX;AALD,WAAY,sBAAsB;IAChC,qCAAW,CAAA;IACX,uCAAa,CAAA;IACb,uCAAa,CAAA;IACb,uCAAa,CAAA;AACf,CAAC,EALW,sBAAsB,KAAtB,sBAAsB,QAKjC;AAED,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,0CAA6B,CAAA;IAC7B,gCAAmB,CAAA;IACnB,gCAAmB,CAAA;IACnB,4BAAe,CAAA;AACjB,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB;AAED,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,qCAAqB,CAAA;IACrB,6BAAa,CAAA;AACf,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AAED,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,iCAAa,CAAA;IACb,oCAAgB,CAAA;AAClB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B"}
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/model/enums.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aASX;AATD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,wCAAuB,CAAA;IACvB,gDAA+B,CAAA;IAC/B,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;IACjB,0CAAyB,CAAA;IACzB,kCAAiB,CAAA;IACjB,kDAAiC,CAAA;AACnC,CAAC,EATW,aAAa,KAAb,aAAa,QASxB;AAED,MAAM,CAAN,IAAY,UAQX;AARD,WAAY,UAAU;IACpB,yDAA2C,CAAA;IAC3C,2DAA6C,CAAA;IAC7C,6CAA+B,CAAA;IAC/B,uCAAyB,CAAA;IACzB,2CAA6B,CAAA;IAC7B,iDAAmC,CAAA;IACnC,yCAA2B,CAAA;AAC7B,CAAC,EARW,UAAU,KAAV,UAAU,QAQrB;AAED,MAAM,CAAN,IAAY,oBAQX;AARD,WAAY,oBAAoB;IAC9B,uEAA+C,CAAA;IAC/C,yEAAiD,CAAA;IACjD,iEAAyC,CAAA;IACzC,qDAA6B,CAAA;IAC7B,yDAAiC,CAAA;IACjC,+DAAuC,CAAA;IACvC,uDAA+B,CAAA;AACjC,CAAC,EARW,oBAAoB,KAApB,oBAAoB,QAQ/B;AAED,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,qCAAiB,CAAA;IACjB,yCAAqB,CAAA;AACvB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAED,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,oCAAiB,CAAA;AACnB,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AAED,MAAM,CAAN,IAAY,sBAKX;AALD,WAAY,sBAAsB;IAChC,qCAAW,CAAA;IACX,uCAAa,CAAA;IACb,uCAAa,CAAA;IACb,uCAAa,CAAA;AACf,CAAC,EALW,sBAAsB,KAAtB,sBAAsB,QAKjC;AAED,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,0CAA6B,CAAA;IAC7B,gCAAmB,CAAA;IACnB,gCAAmB,CAAA;IACnB,4BAAe,CAAA;AACjB,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB;AAED,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,qCAAqB,CAAA;IACrB,6BAAa,CAAA;AACf,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AAED,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,iCAAa,CAAA;IACb,oCAAgB,CAAA;AAClB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAED,MAAM,CAAN,IAAY,cAOX;AAPD,WAAY,cAAc;IACxB,2CAAyB,CAAA;IACzB,qDAAmC,CAAA;IACnC,2BAAS,CAAA;IACT,yEAAuD,CAAA;IACvD,mDAAiC,CAAA;IACjC,yDAAuC,CAAA;AACzC,CAAC,EAPW,cAAc,KAAd,cAAc,QAOzB"}
@@ -16,6 +16,7 @@ export type LegacyAccessoryConfig = AccessoryConfig & {
16
16
  export type DummyPlatformConfig = PlatformConfig & {
17
17
  accessories?: DummyConfig[];
18
18
  migrationNeeded?: boolean;
19
+ verbose?: boolean;
19
20
  };
20
21
  export type Assertable = {};
21
22
  export type ScheduleConfig = Assertable & {
@@ -44,6 +45,7 @@ export type DummyConfig = {
44
45
  timer?: TimerConfig;
45
46
  schedule?: ScheduleConfig;
46
47
  resetOnRestart?: boolean;
48
+ enableWebook?: boolean;
47
49
  disableLogging?: boolean;
48
50
  };
49
51
  export type OnOffConfig = DummyConfig & {
@@ -0,0 +1,27 @@
1
+ import { CharacteristicValue } from 'homebridge';
2
+ import { WebhookCommand } from './enums.js';
3
+ import { CharacteristicType, DummyConfig } from './types.js';
4
+ import { DummyAccessory } from '../accessory/base.js';
5
+ import { Log } from '../tools/log.js';
6
+ type WebhookCallback = (value: CharacteristicValue) => (string);
7
+ export declare class Webhook {
8
+ readonly id: string;
9
+ readonly command: WebhookCommand;
10
+ readonly callback: WebhookCallback;
11
+ constructor(id: string, command: WebhookCommand, callback: WebhookCallback);
12
+ }
13
+ export declare class WebhookManager {
14
+ private readonly Characteristic;
15
+ private readonly log;
16
+ private server;
17
+ private readonly webhooks;
18
+ constructor(Characteristic: CharacteristicType, log: Log);
19
+ registerAccessory(accessory: DummyAccessory<DummyConfig>): void;
20
+ startServer(): void;
21
+ teardown(): void;
22
+ private requestHandler;
23
+ private isValidValue;
24
+ private isValueWithinRange;
25
+ private onBadRequest;
26
+ }
27
+ export {};
@@ -0,0 +1,161 @@
1
+ import escape from 'escape-html';
2
+ import express from 'express';
3
+ import { TemperatureUnits, WebhookCommand } from './enums.js';
4
+ import { assert } from '../tools/validation.js';
5
+ import { strings } from '../i18n/i18n.js';
6
+ import { fromCelsius, toCelsius } from '../tools/temperature.js';
7
+ const DEFAULT_PORT = 63743;
8
+ const MINIMUM_TEMPERATURE = 10;
9
+ const MAXIMUM_TEMPERATURE = 38;
10
+ export class Webhook {
11
+ id;
12
+ command;
13
+ callback;
14
+ constructor(id, command, callback) {
15
+ this.id = id;
16
+ this.command = command;
17
+ this.callback = callback;
18
+ }
19
+ }
20
+ export class WebhookManager {
21
+ Characteristic;
22
+ log;
23
+ server = undefined;
24
+ webhooks = new Map();
25
+ constructor(Characteristic, log) {
26
+ this.Characteristic = Characteristic;
27
+ this.log = log;
28
+ }
29
+ registerAccessory(accessory) {
30
+ for (const webhook of accessory.webhooks()) {
31
+ let callbacks = this.webhooks.get(webhook.command);
32
+ if (callbacks === undefined) {
33
+ callbacks = new Map();
34
+ this.webhooks.set(webhook.command, callbacks);
35
+ }
36
+ callbacks.set(webhook.id, webhook.callback);
37
+ this.log.ifVerbose(strings.webhook.register, `'${webhook.id}'`, `'${webhook.command}'`);
38
+ }
39
+ }
40
+ startServer() {
41
+ if (this.server !== undefined) {
42
+ throw new Error('Trying to start webhook server when it is already running');
43
+ }
44
+ if (this.webhooks.size === 0) {
45
+ return;
46
+ }
47
+ const exp = express();
48
+ exp.use(express.urlencoded({ extended: true }));
49
+ exp.use(express.json());
50
+ exp.post('/', (request, response) => {
51
+ this.requestHandler(request, response);
52
+ });
53
+ this.server = exp.listen(DEFAULT_PORT, () => {
54
+ this.log.ifVerbose(strings.webhook.started, DEFAULT_PORT);
55
+ });
56
+ }
57
+ teardown() {
58
+ this.log.ifVerbose(strings.webhook.stopping);
59
+ this.server?.close(() => {
60
+ this.log.ifVerbose(strings.webhook.stopped);
61
+ });
62
+ }
63
+ ;
64
+ requestHandler(request, response) {
65
+ const body = request.body;
66
+ this.log.ifVerbose(`${strings.webhook.received}\n${JSON.stringify(body)}`);
67
+ if (!assert(this.log, 'Webhook', body, 'id', 'command', 'value')) {
68
+ const missingValues = ['id', 'command', 'value'].filter((key) => body[key] === undefined);
69
+ this.onBadRequest(response, `${strings.webhook.missing} ${missingValues.join(', ')}`, false);
70
+ return;
71
+ }
72
+ const id = body.id;
73
+ const command = body.command;
74
+ let value = body.value;
75
+ let validRequest;
76
+ let requirements;
77
+ switch (command) {
78
+ case WebhookCommand.Brightness: {
79
+ validRequest = this.isValueWithinRange(value, 0, 100);
80
+ requirements = strings.webhook.validRange.replace('%s', `'${command}'`).replace('%s', '0').replace('%s', '100');
81
+ break;
82
+ }
83
+ case WebhookCommand.LockTargetState: {
84
+ validRequest = this.isValidValue(value, [this.Characteristic.LockTargetState.UNSECURED, this.Characteristic.LockTargetState.SECURED]);
85
+ const validValues = '0 (UNSECURED), 1 (SECURED)';
86
+ requirements = `${strings.webhook.validValues.replace('%s', `'${command}'`)} ${validValues}`;
87
+ break;
88
+ }
89
+ case WebhookCommand.On: {
90
+ validRequest = this.isValidValue(value, [true, false]);
91
+ requirements = `${strings.webhook.validValues.replace('%s', `'${command}'`)} true, false`;
92
+ break;
93
+ }
94
+ case WebhookCommand.TargetHeatingCoolingState: {
95
+ validRequest = this.isValidValue(value, [
96
+ this.Characteristic.TargetHeatingCoolingState.OFF,
97
+ this.Characteristic.TargetHeatingCoolingState.HEAT,
98
+ this.Characteristic.TargetHeatingCoolingState.COOL,
99
+ this.Characteristic.TargetHeatingCoolingState.AUTO,
100
+ ]);
101
+ const validValues = '0 (OFF), 1 (HEAT), 2 (COOL), 3 (AUTO)';
102
+ requirements = `${strings.webhook.validValues.replace('%s', `'${command}'`)} ${validValues}`;
103
+ break;
104
+ }
105
+ case WebhookCommand.TargetPosition: {
106
+ validRequest = this.isValueWithinRange(value, 0, 100);
107
+ requirements = strings.webhook.validRange.replace('%s', `'${command}'`).replace('%s', '0').replace('%s', '100');
108
+ break;
109
+ }
110
+ case WebhookCommand.TargetTemperature: {
111
+ const units = body.units ?? TemperatureUnits.CELSIUS;
112
+ const minTemp = fromCelsius(MINIMUM_TEMPERATURE, units);
113
+ const maxTemp = fromCelsius(MAXIMUM_TEMPERATURE, units);
114
+ validRequest = this.isValueWithinRange(value, minTemp, maxTemp);
115
+ requirements = strings.webhook.validRange.replace('%s', `'${command}'`).replace('%s', `${minTemp}`).replace('%s', `${maxTemp}`);
116
+ if (validRequest) {
117
+ value = toCelsius(value, units);
118
+ }
119
+ break;
120
+ }
121
+ default:
122
+ this.onBadRequest(response, strings.webhook.unsupportedCommand.replace('%s', `'${command}'`));
123
+ return;
124
+ }
125
+ if (!validRequest) {
126
+ this.onBadRequest(response, requirements);
127
+ return;
128
+ }
129
+ const callbacks = this.webhooks.get(command);
130
+ if (callbacks === undefined) {
131
+ this.onBadRequest(response, strings.webhook.unregisteredCommand.replace('%s', `'${command}'`));
132
+ return;
133
+ }
134
+ const callback = callbacks.get(id);
135
+ if (callback === undefined) {
136
+ this.onBadRequest(response, strings.webhook.unregisteredId.replace('%s', `'${id}'`));
137
+ return;
138
+ }
139
+ const message = callback(value);
140
+ response.status(200).send(`{ "success": "${escape(message)}" }\n`);
141
+ }
142
+ isValidValue(value, validValues) {
143
+ if (typeof value === 'boolean' || typeof value === 'number') {
144
+ return validValues.includes(value);
145
+ }
146
+ return false;
147
+ }
148
+ isValueWithinRange(value, min, max) {
149
+ if (typeof value !== 'number') {
150
+ return false;
151
+ }
152
+ return value >= min && value <= max;
153
+ }
154
+ onBadRequest(response, errorMessage, alsoLog = true) {
155
+ response.status(400).send(`{ "error": "${escape(errorMessage)}" }\n`);
156
+ if (alsoLog) {
157
+ this.log.error(errorMessage);
158
+ }
159
+ }
160
+ }
161
+ //# sourceMappingURL=webhook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/model/webhook.ts"],"names":[],"mappings":"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"}
@@ -2,13 +2,17 @@ import { Logger } from 'homebridge';
2
2
  export declare enum LogType {
3
3
  ALWAYS = 0,
4
4
  WARNING = 1,
5
- ERROR = 2
5
+ ERROR = 2,
6
+ SUCCESS = 3
6
7
  }
7
8
  export declare class Log {
8
9
  private readonly logger;
9
- constructor(logger: Logger);
10
+ readonly verbose: boolean;
11
+ constructor(logger: Logger, verbose: boolean);
10
12
  always(message: string, ...parameters: any[]): void;
11
13
  warning(message: string, ...parameters: any[]): void;
12
14
  error(message: string, ...parameters: any[]): void;
13
15
  success(message: string, ...parameters: any[]): void;
16
+ ifVerbose(message: string, ...parameters: any[]): void;
17
+ ifVerbose(level: LogType, message: string, ...parameters: any[]): void;
14
18
  }
package/dist/tools/log.js CHANGED
@@ -3,11 +3,14 @@ export var LogType;
3
3
  LogType[LogType["ALWAYS"] = 0] = "ALWAYS";
4
4
  LogType[LogType["WARNING"] = 1] = "WARNING";
5
5
  LogType[LogType["ERROR"] = 2] = "ERROR";
6
+ LogType[LogType["SUCCESS"] = 3] = "SUCCESS";
6
7
  })(LogType || (LogType = {}));
7
8
  export class Log {
8
9
  logger;
9
- constructor(logger) {
10
+ verbose;
11
+ constructor(logger, verbose) {
10
12
  this.logger = logger;
13
+ this.verbose = verbose;
11
14
  }
12
15
  always(message, ...parameters) {
13
16
  this.logger.info(message, ...parameters);
@@ -21,5 +24,29 @@ export class Log {
21
24
  success(message, ...parameters) {
22
25
  this.logger.success(message, ...parameters);
23
26
  }
27
+ ifVerbose(levelOrMessage, ...rest) {
28
+ if (!this.verbose) {
29
+ return;
30
+ }
31
+ if (typeof levelOrMessage === 'string') {
32
+ this.always(levelOrMessage, ...rest);
33
+ return;
34
+ }
35
+ const [message, ...parameters] = rest;
36
+ switch (levelOrMessage) {
37
+ case LogType.ALWAYS:
38
+ this.always(message, ...parameters);
39
+ break;
40
+ case LogType.WARNING:
41
+ this.warning(message, ...parameters);
42
+ break;
43
+ case LogType.ERROR:
44
+ this.error(message, ...parameters);
45
+ break;
46
+ case LogType.SUCCESS:
47
+ this.error(message, ...parameters);
48
+ break;
49
+ }
50
+ }
24
51
  }
25
52
  //# sourceMappingURL=log.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/tools/log.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,OAIX;AAJD,WAAY,OAAO;IACjB,yCAAM,CAAA;IACN,2CAAO,CAAA;IACP,uCAAK,CAAA;AACP,CAAC,EAJW,OAAO,KAAP,OAAO,QAIlB;AAED,MAAM,OAAO,GAAG;IAGK;IADnB,YACmB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAC9B,CAAC;IAEG,MAAM,CAAC,OAAe,EAAE,GAAG,UAAiB;QACjD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;IAC3C,CAAC;IAEM,OAAO,CAAC,OAAe,EAAE,GAAG,UAAiB;QAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;IAC3C,CAAC;IAEM,KAAK,CAAC,OAAe,EAAE,GAAG,UAAiB;QAChD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;IAC5C,CAAC;IAEM,OAAO,CAAC,OAAe,EAAE,GAAG,UAAiB;QAClD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;IAC9C,CAAC;CACF"}
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/tools/log.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,OAKX;AALD,WAAY,OAAO;IACjB,yCAAM,CAAA;IACN,2CAAO,CAAA;IACP,uCAAK,CAAA;IACL,2CAAO,CAAA;AACT,CAAC,EALW,OAAO,KAAP,OAAO,QAKlB;AAED,MAAM,OAAO,GAAG;IAGK;IACD;IAFlB,YACmB,MAAc,EACf,OAAgB;QADf,WAAM,GAAN,MAAM,CAAQ;QACf,YAAO,GAAP,OAAO,CAAS;IAC/B,CAAC;IAEG,MAAM,CAAC,OAAe,EAAE,GAAG,UAAiB;QACjD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;IAC3C,CAAC;IAEM,OAAO,CAAC,OAAe,EAAE,GAAG,UAAiB;QAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;IAC3C,CAAC;IAEM,KAAK,CAAC,OAAe,EAAE,GAAG,UAAiB;QAChD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;IAC5C,CAAC;IAEM,OAAO,CAAC,OAAe,EAAE,GAAG,UAAiB;QAClD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;IAC9C,CAAC;IAIM,SAAS,CAAC,cAAgC,EAAE,GAAG,IAAW;QAE/D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QAED,MAAM,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC;QACtC,QAAO,cAAc,EAAE,CAAC;YACxB,KAAK,OAAO,CAAC,MAAM;gBACjB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;gBACpC,MAAM;YACR,KAAK,OAAO,CAAC,OAAO;gBAClB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;gBACrC,MAAM;YACR,KAAK,OAAO,CAAC,KAAK;gBAChB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;gBACnC,MAAM;YACR,KAAK,OAAO,CAAC,OAAO;gBAClB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;gBACnC,MAAM;QACR,CAAC;IACH,CAAC;CACF"}
@@ -1,5 +1,3 @@
1
1
  import { Log } from './log.js';
2
2
  import { Assertable } from '../model/types.js';
3
- import { CharacteristicValue } from 'homebridge';
4
3
  export declare function assert<A extends Assertable>(log: Log, caller: string, assertable: A, ...keys: (keyof A)[]): boolean;
5
- export declare function assertType(log: Log, caller: string, value: CharacteristicValue, type: string): boolean;
@@ -9,11 +9,4 @@ export function assert(log, caller, assertable, ...keys) {
9
9
  }
10
10
  return valid;
11
11
  }
12
- export function assertType(log, caller, value, type) {
13
- if (typeof value !== type) {
14
- log.error(strings.accessory.badValueType, caller, type, typeof value);
15
- return false;
16
- }
17
- return true;
18
- }
19
12
  //# sourceMappingURL=validation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/tools/validation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAM1C,MAAM,UAAU,MAAM,CAAuB,GAAQ,EAAE,MAAc,EAAE,UAAa,EAAE,GAAG,IAAiB;IACxG,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAK,UAAsC,CAAC,GAAa,CAAC,KAAK,SAAS,EAAE,CAAC;YACzE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC5E,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAQ,EAAE,MAAc,EAAE,KAA0B,EAAE,IAAY;IAE3F,IAAI,OAAO,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1B,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,CAAC,CAAC;QACtE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/tools/validation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAI1C,MAAM,UAAU,MAAM,CAAuB,GAAQ,EAAE,MAAc,EAAE,UAAa,EAAE,GAAG,IAAiB;IACxG,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAK,UAAsC,CAAC,GAAa,CAAC,KAAK,SAAS,EAAE,CAAC;YACzE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC5E,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "displayName": "Homebridge Dummy",
5
5
  "description": "Create fake accessories to help with automation — features scheduling, delays, sensors, commands, and more",
6
6
  "type": "module",
7
- "version": "1.1.1-beta.0",
7
+ "version": "1.2.0",
8
8
  "homepage": "https://github.com/mpatfield/homebridge-dummy#readme",
9
9
  "repository": {
10
10
  "type": "git",
@@ -56,11 +56,15 @@
56
56
  "dependencies": {
57
57
  "@homebridge/plugin-ui-utils": "^2.0.2",
58
58
  "cron": "^4.3.2",
59
+ "escape-html": "^1.0.3",
60
+ "express": "^5.1.0",
59
61
  "homebridge-lib": "^7.1.8",
60
62
  "lodash.merge": "^4.6.2",
61
63
  "node-persist": "^4.0.4"
62
64
  },
63
65
  "devDependencies": {
66
+ "@types/escape-html": "^1.0.4",
67
+ "@types/express": "^5.0.3",
64
68
  "@types/lodash.merge": "^4.6.9",
65
69
  "@types/node-persist": "^3.1.8",
66
70
  "esbuild": "^0.25.10",