homebridge-dummy 1.1.0 → 1.2.0-beta.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 (80) hide show
  1. package/CHANGELOG.md +12 -3
  2. package/README.md +38 -141
  3. package/config.schema.json +104 -8
  4. package/dist/accessory/base.d.ts +5 -1
  5. package/dist/accessory/base.js +8 -5
  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/helpers.d.ts +2 -2
  11. package/dist/accessory/helpers.js +9 -9
  12. package/dist/accessory/helpers.js.map +1 -1
  13. package/dist/accessory/lock.d.ts +6 -2
  14. package/dist/accessory/lock.js +14 -4
  15. package/dist/accessory/lock.js.map +1 -1
  16. package/dist/accessory/onoff/lightbulb.d.ts +6 -3
  17. package/dist/accessory/onoff/lightbulb.js +15 -9
  18. package/dist/accessory/onoff/lightbulb.js.map +1 -1
  19. package/dist/accessory/onoff/onoff.d.ts +3 -1
  20. package/dist/accessory/onoff/onoff.js +13 -7
  21. package/dist/accessory/onoff/onoff.js.map +1 -1
  22. package/dist/accessory/onoff/outlet.d.ts +3 -2
  23. package/dist/accessory/onoff/outlet.js +1 -1
  24. package/dist/accessory/onoff/outlet.js.map +1 -1
  25. package/dist/accessory/onoff/switch.d.ts +3 -2
  26. package/dist/accessory/onoff/switch.js +1 -1
  27. package/dist/accessory/onoff/switch.js.map +1 -1
  28. package/dist/accessory/position/blind.d.ts +3 -2
  29. package/dist/accessory/position/blind.js +1 -1
  30. package/dist/accessory/position/blind.js.map +1 -1
  31. package/dist/accessory/position/door.d.ts +3 -2
  32. package/dist/accessory/position/door.js +1 -1
  33. package/dist/accessory/position/door.js.map +1 -1
  34. package/dist/accessory/position/position.d.ts +3 -0
  35. package/dist/accessory/position/position.js +14 -3
  36. package/dist/accessory/position/position.js.map +1 -1
  37. package/dist/accessory/position/window.d.ts +3 -2
  38. package/dist/accessory/position/window.js +1 -1
  39. package/dist/accessory/position/window.js.map +1 -1
  40. package/dist/accessory/sensor.d.ts +2 -1
  41. package/dist/accessory/sensor.js +1 -1
  42. package/dist/accessory/sensor.js.map +1 -1
  43. package/dist/accessory/thermostat.d.ts +8 -2
  44. package/dist/accessory/thermostat.js +33 -21
  45. package/dist/accessory/thermostat.js.map +1 -1
  46. package/dist/homebridge/platform.d.ts +1 -0
  47. package/dist/homebridge/platform.js +10 -3
  48. package/dist/homebridge/platform.js.map +1 -1
  49. package/dist/homebridge-ui/public/index.html +1 -1
  50. package/dist/homebridge-ui/public/ui.js +1 -1
  51. package/dist/i18n/en.d.ts +26 -0
  52. package/dist/i18n/en.js +36 -10
  53. package/dist/i18n/en.js.map +1 -1
  54. package/dist/i18n/i18n.d.ts +26 -0
  55. package/dist/i18n/template.d.ts +26 -0
  56. package/dist/i18n/zz.d.ts +26 -0
  57. package/dist/model/enums.d.ts +64 -0
  58. package/dist/model/enums.js +75 -0
  59. package/dist/model/enums.js.map +1 -0
  60. package/dist/model/types.d.ts +4 -56
  61. package/dist/model/types.js +1 -65
  62. package/dist/model/types.js.map +1 -1
  63. package/dist/model/webhook.d.ts +27 -0
  64. package/dist/model/webhook.js +161 -0
  65. package/dist/model/webhook.js.map +1 -0
  66. package/dist/timeout/schedule.js +11 -4
  67. package/dist/timeout/schedule.js.map +1 -1
  68. package/dist/timeout/timeout.d.ts +1 -1
  69. package/dist/timeout/timeout.js +1 -1
  70. package/dist/tools/configMigration.js +1 -1
  71. package/dist/tools/configMigration.js.map +1 -1
  72. package/dist/tools/log.d.ts +6 -2
  73. package/dist/tools/log.js +28 -1
  74. package/dist/tools/log.js.map +1 -1
  75. package/dist/tools/temperature.d.ts +1 -1
  76. package/dist/tools/temperature.js +1 -1
  77. package/dist/tools/validation.d.ts +1 -3
  78. package/dist/tools/validation.js +0 -8
  79. package/dist/tools/validation.js.map +1 -1
  80. package/package.json +11 -7
package/dist/i18n/zz.d.ts CHANGED
@@ -77,14 +77,19 @@ declare const zz: {
77
77
  contactSensor: string;
78
78
  cool: string;
79
79
  cron: string;
80
+ custom: string;
81
+ daily: string;
80
82
  door: string;
81
83
  fahrenheit: string;
82
84
  heat: string;
85
+ hourly: string;
83
86
  hours: string;
84
87
  interval: string;
85
88
  leakSensor: string;
86
89
  lightbulb: string;
87
90
  lockMechanism: string;
91
+ minutely: string;
92
+ monthly: string;
88
93
  off: string;
89
94
  occupancySensor: string;
90
95
  on: string;
@@ -93,14 +98,19 @@ declare const zz: {
93
98
  milliseconds: string;
94
99
  minutes: string;
95
100
  motionSensor: string;
101
+ secondly: string;
96
102
  seconds: string;
97
103
  secured: string;
98
104
  smokeSensor: string;
99
105
  switch: string;
100
106
  thermostat: string;
101
107
  unsecured: string;
108
+ weekdays: string;
109
+ weekends: string;
110
+ weekly: string;
102
111
  window: string;
103
112
  windowCovering: string;
113
+ yearly: string;
104
114
  };
105
115
  title: {
106
116
  accessory: string;
@@ -113,15 +123,18 @@ declare const zz: {
113
123
  commandUnlock: string;
114
124
  commandTemperature: string;
115
125
  cron: string;
126
+ cronCustom: string;
116
127
  defaultBrightness: string;
117
128
  defaultPosition: string;
118
129
  defaultState: string;
119
130
  defaultTemperature: string;
120
131
  delay: string;
121
132
  disableLogging: string;
133
+ enableWebook: string;
122
134
  groupName: string;
123
135
  interval: string;
124
136
  name: string;
137
+ preset: string;
125
138
  resetOnRestart: string;
126
139
  timer: string;
127
140
  timerControlled: string;
@@ -176,5 +189,18 @@ declare const zz: {
176
189
  unsupportedType: string;
177
190
  welcome: string[];
178
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
+ };
179
205
  };
180
206
  export default zz;
@@ -0,0 +1,64 @@
1
+ export declare enum AccessoryType {
2
+ Door = "Door",
3
+ Lightbulb = "Lightbulb",
4
+ LockMechanism = "LockMechanism",
5
+ Outlet = "Outlet",
6
+ Switch = "Switch",
7
+ Thermostat = "Thermostat",
8
+ Window = "Window",
9
+ WindowCovering = "WindowCovering"
10
+ }
11
+ export declare enum SensorType {
12
+ CarbonDioxideSensor = "CarbonDioxideSensor",
13
+ CarbonMonoxideSensor = "CarbonMonoxideSensor",
14
+ ContactSensor = "ContactSensor",
15
+ LeakSensor = "LeakSensor",
16
+ MotionSensor = "MotionSensor",
17
+ OccupancySensor = "OccupancySensor",
18
+ SmokeSensor = "SmokeSensor"
19
+ }
20
+ export declare enum SensorCharacteristic {
21
+ CarbonDioxideDetected = "CarbonDioxideDetected",
22
+ CarbonMonoxideDetected = "CarbonMonoxideDetected",
23
+ ContactSensorState = "ContactSensorState",
24
+ LeakDetected = "LeakDetected",
25
+ MotionDetected = "MotionDetected",
26
+ OccupancyDetected = "OccupancyDetected",
27
+ SmokeDetected = "SmokeDetected"
28
+ }
29
+ export declare enum DefaultLockState {
30
+ LOCKED = "locked",
31
+ UNLOCKED = "unlocked"
32
+ }
33
+ export declare enum DefaultPosition {
34
+ OPEN = "open",
35
+ CLOSED = "closed"
36
+ }
37
+ export declare enum DefaultThermostatState {
38
+ OFF = "off",
39
+ COOL = "cool",
40
+ HEAT = "heat",
41
+ AUTO = "auto"
42
+ }
43
+ export declare enum TimeUnits {
44
+ MILLISECONDS = "MILLISECONDS",
45
+ SECONDS = "SECONDS",
46
+ MINUTES = "MINUTES",
47
+ HOURS = "HOURS"
48
+ }
49
+ export declare enum ScheduleType {
50
+ INTERVAL = "INTERVAL",
51
+ CRON = "CRON"
52
+ }
53
+ export declare enum TemperatureUnits {
54
+ CELSIUS = "C",
55
+ FAHRENHEIT = "F"
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
+ }
@@ -0,0 +1,75 @@
1
+ export var AccessoryType;
2
+ (function (AccessoryType) {
3
+ AccessoryType["Door"] = "Door";
4
+ AccessoryType["Lightbulb"] = "Lightbulb";
5
+ AccessoryType["LockMechanism"] = "LockMechanism";
6
+ AccessoryType["Outlet"] = "Outlet";
7
+ AccessoryType["Switch"] = "Switch";
8
+ AccessoryType["Thermostat"] = "Thermostat";
9
+ AccessoryType["Window"] = "Window";
10
+ AccessoryType["WindowCovering"] = "WindowCovering";
11
+ })(AccessoryType || (AccessoryType = {}));
12
+ export var SensorType;
13
+ (function (SensorType) {
14
+ SensorType["CarbonDioxideSensor"] = "CarbonDioxideSensor";
15
+ SensorType["CarbonMonoxideSensor"] = "CarbonMonoxideSensor";
16
+ SensorType["ContactSensor"] = "ContactSensor";
17
+ SensorType["LeakSensor"] = "LeakSensor";
18
+ SensorType["MotionSensor"] = "MotionSensor";
19
+ SensorType["OccupancySensor"] = "OccupancySensor";
20
+ SensorType["SmokeSensor"] = "SmokeSensor";
21
+ })(SensorType || (SensorType = {}));
22
+ export var SensorCharacteristic;
23
+ (function (SensorCharacteristic) {
24
+ SensorCharacteristic["CarbonDioxideDetected"] = "CarbonDioxideDetected";
25
+ SensorCharacteristic["CarbonMonoxideDetected"] = "CarbonMonoxideDetected";
26
+ SensorCharacteristic["ContactSensorState"] = "ContactSensorState";
27
+ SensorCharacteristic["LeakDetected"] = "LeakDetected";
28
+ SensorCharacteristic["MotionDetected"] = "MotionDetected";
29
+ SensorCharacteristic["OccupancyDetected"] = "OccupancyDetected";
30
+ SensorCharacteristic["SmokeDetected"] = "SmokeDetected";
31
+ })(SensorCharacteristic || (SensorCharacteristic = {}));
32
+ export var DefaultLockState;
33
+ (function (DefaultLockState) {
34
+ DefaultLockState["LOCKED"] = "locked";
35
+ DefaultLockState["UNLOCKED"] = "unlocked";
36
+ })(DefaultLockState || (DefaultLockState = {}));
37
+ export var DefaultPosition;
38
+ (function (DefaultPosition) {
39
+ DefaultPosition["OPEN"] = "open";
40
+ DefaultPosition["CLOSED"] = "closed";
41
+ })(DefaultPosition || (DefaultPosition = {}));
42
+ export var DefaultThermostatState;
43
+ (function (DefaultThermostatState) {
44
+ DefaultThermostatState["OFF"] = "off";
45
+ DefaultThermostatState["COOL"] = "cool";
46
+ DefaultThermostatState["HEAT"] = "heat";
47
+ DefaultThermostatState["AUTO"] = "auto";
48
+ })(DefaultThermostatState || (DefaultThermostatState = {}));
49
+ export var TimeUnits;
50
+ (function (TimeUnits) {
51
+ TimeUnits["MILLISECONDS"] = "MILLISECONDS";
52
+ TimeUnits["SECONDS"] = "SECONDS";
53
+ TimeUnits["MINUTES"] = "MINUTES";
54
+ TimeUnits["HOURS"] = "HOURS";
55
+ })(TimeUnits || (TimeUnits = {}));
56
+ export var ScheduleType;
57
+ (function (ScheduleType) {
58
+ ScheduleType["INTERVAL"] = "INTERVAL";
59
+ ScheduleType["CRON"] = "CRON";
60
+ })(ScheduleType || (ScheduleType = {}));
61
+ export var TemperatureUnits;
62
+ (function (TemperatureUnits) {
63
+ TemperatureUnits["CELSIUS"] = "C";
64
+ TemperatureUnits["FAHRENHEIT"] = "F";
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 = {}));
75
+ //# sourceMappingURL=enums.js.map
@@ -0,0 +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;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"}
@@ -1,48 +1,7 @@
1
1
  import { AccessoryConfig, CharacteristicValue, PlatformConfig } from 'homebridge';
2
2
  export type ServiceType = typeof import('homebridge').Service;
3
3
  export type CharacteristicType = typeof import('homebridge').Characteristic;
4
- export declare enum AccessoryType {
5
- Door = "Door",
6
- Lightbulb = "Lightbulb",
7
- LockMechanism = "LockMechanism",
8
- Outlet = "Outlet",
9
- Switch = "Switch",
10
- Thermostat = "Thermostat",
11
- Window = "Window",
12
- WindowCovering = "WindowCovering"
13
- }
14
- export declare enum SensorType {
15
- CarbonDioxideSensor = "CarbonDioxideSensor",
16
- CarbonMonoxideSensor = "CarbonMonoxideSensor",
17
- ContactSensor = "ContactSensor",
18
- LeakSensor = "LeakSensor",
19
- MotionSensor = "MotionSensor",
20
- OccupancySensor = "OccupancySensor",
21
- SmokeSensor = "SmokeSensor"
22
- }
23
- export declare enum SensorCharacteristic {
24
- CarbonDioxideDetected = "CarbonDioxideDetected",
25
- CarbonMonoxideDetected = "CarbonMonoxideDetected",
26
- ContactSensorState = "ContactSensorState",
27
- LeakDetected = "LeakDetected",
28
- MotionDetected = "MotionDetected",
29
- OccupancyDetected = "OccupancyDetected",
30
- SmokeDetected = "SmokeDetected"
31
- }
32
- export declare enum DefaultLockState {
33
- LOCKED = "locked",
34
- UNLOCKED = "unlocked"
35
- }
36
- export declare enum DefaultPosition {
37
- OPEN = "open",
38
- CLOSED = "closed"
39
- }
40
- export declare enum DefaultThermostatState {
41
- OFF = "off",
42
- COOL = "cool",
43
- HEAT = "heat",
44
- AUTO = "auto"
45
- }
4
+ import { AccessoryType, DefaultLockState, DefaultPosition, DefaultThermostatState, ScheduleType, SensorType, TemperatureUnits, TimeUnits } from './enums.js';
46
5
  export type LegacyAccessoryConfig = AccessoryConfig & {
47
6
  name: string;
48
7
  dimmer?: boolean;
@@ -57,21 +16,8 @@ export type LegacyAccessoryConfig = AccessoryConfig & {
57
16
  export type DummyPlatformConfig = PlatformConfig & {
58
17
  accessories?: DummyConfig[];
59
18
  migrationNeeded?: boolean;
19
+ verbose?: boolean;
60
20
  };
61
- export declare enum TimeUnits {
62
- MILLISECONDS = "MILLISECONDS",
63
- SECONDS = "SECONDS",
64
- MINUTES = "MINUTES",
65
- HOURS = "HOURS"
66
- }
67
- export declare enum ScheduleType {
68
- INTERVAL = "INTERVAL",
69
- CRON = "CRON"
70
- }
71
- export declare enum TemperatureUnits {
72
- CELSIUS = "C",
73
- FAHRENHEIT = "F"
74
- }
75
21
  export type Assertable = {};
76
22
  export type ScheduleConfig = Assertable & {
77
23
  type: ScheduleType;
@@ -79,6 +25,7 @@ export type ScheduleConfig = Assertable & {
79
25
  units?: TimeUnits;
80
26
  random?: boolean;
81
27
  cron?: string;
28
+ cronCustom?: string;
82
29
  };
83
30
  export type TimerConfig = Assertable & {
84
31
  delay: number;
@@ -98,6 +45,7 @@ export type DummyConfig = {
98
45
  timer?: TimerConfig;
99
46
  schedule?: ScheduleConfig;
100
47
  resetOnRestart?: boolean;
48
+ enableWebook?: boolean;
101
49
  disableLogging?: boolean;
102
50
  };
103
51
  export type OnOffConfig = DummyConfig & {
@@ -1,66 +1,2 @@
1
- export var AccessoryType;
2
- (function (AccessoryType) {
3
- AccessoryType["Door"] = "Door";
4
- AccessoryType["Lightbulb"] = "Lightbulb";
5
- AccessoryType["LockMechanism"] = "LockMechanism";
6
- AccessoryType["Outlet"] = "Outlet";
7
- AccessoryType["Switch"] = "Switch";
8
- AccessoryType["Thermostat"] = "Thermostat";
9
- AccessoryType["Window"] = "Window";
10
- AccessoryType["WindowCovering"] = "WindowCovering";
11
- })(AccessoryType || (AccessoryType = {}));
12
- export var SensorType;
13
- (function (SensorType) {
14
- SensorType["CarbonDioxideSensor"] = "CarbonDioxideSensor";
15
- SensorType["CarbonMonoxideSensor"] = "CarbonMonoxideSensor";
16
- SensorType["ContactSensor"] = "ContactSensor";
17
- SensorType["LeakSensor"] = "LeakSensor";
18
- SensorType["MotionSensor"] = "MotionSensor";
19
- SensorType["OccupancySensor"] = "OccupancySensor";
20
- SensorType["SmokeSensor"] = "SmokeSensor";
21
- })(SensorType || (SensorType = {}));
22
- export var SensorCharacteristic;
23
- (function (SensorCharacteristic) {
24
- SensorCharacteristic["CarbonDioxideDetected"] = "CarbonDioxideDetected";
25
- SensorCharacteristic["CarbonMonoxideDetected"] = "CarbonMonoxideDetected";
26
- SensorCharacteristic["ContactSensorState"] = "ContactSensorState";
27
- SensorCharacteristic["LeakDetected"] = "LeakDetected";
28
- SensorCharacteristic["MotionDetected"] = "MotionDetected";
29
- SensorCharacteristic["OccupancyDetected"] = "OccupancyDetected";
30
- SensorCharacteristic["SmokeDetected"] = "SmokeDetected";
31
- })(SensorCharacteristic || (SensorCharacteristic = {}));
32
- export var DefaultLockState;
33
- (function (DefaultLockState) {
34
- DefaultLockState["LOCKED"] = "locked";
35
- DefaultLockState["UNLOCKED"] = "unlocked";
36
- })(DefaultLockState || (DefaultLockState = {}));
37
- export var DefaultPosition;
38
- (function (DefaultPosition) {
39
- DefaultPosition["OPEN"] = "open";
40
- DefaultPosition["CLOSED"] = "closed";
41
- })(DefaultPosition || (DefaultPosition = {}));
42
- export var DefaultThermostatState;
43
- (function (DefaultThermostatState) {
44
- DefaultThermostatState["OFF"] = "off";
45
- DefaultThermostatState["COOL"] = "cool";
46
- DefaultThermostatState["HEAT"] = "heat";
47
- DefaultThermostatState["AUTO"] = "auto";
48
- })(DefaultThermostatState || (DefaultThermostatState = {}));
49
- export var TimeUnits;
50
- (function (TimeUnits) {
51
- TimeUnits["MILLISECONDS"] = "MILLISECONDS";
52
- TimeUnits["SECONDS"] = "SECONDS";
53
- TimeUnits["MINUTES"] = "MINUTES";
54
- TimeUnits["HOURS"] = "HOURS";
55
- })(TimeUnits || (TimeUnits = {}));
56
- export var ScheduleType;
57
- (function (ScheduleType) {
58
- ScheduleType["INTERVAL"] = "INTERVAL";
59
- ScheduleType["CRON"] = "CRON";
60
- })(ScheduleType || (ScheduleType = {}));
61
- export var TemperatureUnits;
62
- (function (TemperatureUnits) {
63
- TemperatureUnits["CELSIUS"] = "C";
64
- TemperatureUnits["FAHRENHEIT"] = "F";
65
- })(TemperatureUnits || (TemperatureUnits = {}));
1
+ export {};
66
2
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/model/types.ts"],"names":[],"mappings":"AAKA,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;AAmBD,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":"types.js","sourceRoot":"","sources":["../../src/model/types.ts"],"names":[],"mappings":""}
@@ -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":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,OAA8B,MAAM,SAAS,CAAC;AAIrD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAM9D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,YAAY,GAAG,KAAK,CAAC;AAE3B,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAC/B,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAI/B,MAAM,OAAO,OAAO;IAGA;IACA;IACA;IAHlB,YACkB,EAAU,EACV,OAAuB,EACvB,QAAyB;QAFzB,OAAE,GAAF,EAAE,CAAQ;QACV,YAAO,GAAP,OAAO,CAAgB;QACvB,aAAQ,GAAR,QAAQ,CAAiB;IACzC,CAAC;CACJ;AAED,MAAM,OAAO,cAAc;IAON;IACA;IANX,MAAM,GAAuB,SAAS,CAAC;IAE9B,QAAQ,GAAG,IAAI,GAAG,EAAgD,CAAC;IAEpF,YACmB,cAAkC,EAClC,GAAQ;QADR,mBAAc,GAAd,cAAc,CAAoB;QAClC,QAAG,GAAH,GAAG,CAAK;IACxB,CAAC;IAEG,iBAAiB,CAAC,SAAsC;QAC7D,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;YAE3C,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,SAAS,GAAG,IAAI,GAAG,EAA2B,CAAC;gBAC/C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAChD,CAAC;YAED,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAE5C,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,OAAO,CAAC,EAAE,GAAG,EAAG,IAAI,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAEM,WAAW;QAEhB,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAChD,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAExB,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;YAClC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,EAAE;YAC1C,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE;YACtB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC;IAAA,CAAC;IAEM,cAAc,CAAC,OAAgB,EAAE,QAAkB;QAEzD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE3E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;YACjE,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,MAAM,CAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC;YAC3F,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC7F,OAAO;QACT,CAAC;QAED,MAAM,EAAE,GAAW,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAmB,IAAI,CAAC,OAAO,CAAC;QAC7C,IAAI,KAAK,GAAwB,IAAI,CAAC,KAAK,CAAC;QAE5C,IAAI,YAAqB,CAAC;QAC1B,IAAI,YAAoB,CAAC;QACzB,QAAQ,OAAO,EAAE,CAAC;YAClB,KAAK,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;gBAC/B,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;gBACtD,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAChH,MAAM;YACR,CAAC;YACD,KAAK,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;gBACpC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;gBACtI,MAAM,WAAW,GAAG,4BAA4B,CAAC;gBACjD,YAAY,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,OAAO,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC7F,MAAM;YACR,CAAC;YACD,KAAK,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;gBACvB,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;gBACvD,YAAY,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,OAAO,GAAG,CAAC,cAAc,CAAC;gBAC1F,MAAM;YACR,CAAC;YACD,KAAK,cAAc,CAAC,yBAAyB,CAAC,CAAC,CAAC;gBAC9C,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EACpC;oBACE,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,GAAG;oBACjD,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,IAAI;oBAClD,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,IAAI;oBAClD,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,IAAI;iBACnD,CACF,CAAC;gBACF,MAAM,WAAW,GAAG,uCAAuC,CAAC;gBAC5D,YAAY,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,OAAO,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC7F,MAAM;YACR,CAAC;YACD,KAAK,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;gBACnC,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;gBACtD,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAChH,MAAM;YACR,CAAC;YACD,KAAK,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,gBAAgB,CAAC,OAAO,CAAC;gBACrD,MAAM,OAAO,GAAG,WAAW,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;gBACxD,MAAM,OAAO,GAAG,WAAW,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;gBACxD,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;gBAChE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;gBAChI,IAAI,YAAY,EAAE,CAAC;oBACjB,KAAK,GAAG,SAAS,CAAC,KAAe,EAAE,KAAK,CAAC,CAAC;gBAC5C,CAAC;gBACD,MAAM;YACR,CAAC;YACD;gBACE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;gBAC9F,OAAO;QACT,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;YAC/F,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;YACrF,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrE,CAAC;IAEO,YAAY,CAAC,KAA0B,EAAE,WAAiC;QAChF,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5D,OAAO,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,kBAAkB,CAAC,KAA0B,EAAE,GAAW,EAAE,GAAW;QAC7E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,CAAC;IACtC,CAAC;IAEO,YAAY,CAAC,QAAkB,EAAE,YAAoB,EAAE,UAAmB,IAAI;QAEpF,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAEtE,IAAG,OAAO,EAAE,CAAC;YACX,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;CACF"}
@@ -1,8 +1,9 @@
1
1
  import { CronJob, validateCronExpression } from 'cron';
2
2
  import { DelayLogStrings, Timeout } from './timeout.js';
3
3
  import { strings } from '../i18n/i18n.js';
4
- import { ScheduleType } from '../model/types.js';
4
+ import { ScheduleType } from '../model/enums.js';
5
5
  import { assert } from '../tools/validation.js';
6
+ const CRON_CUSTOM = 'CRON_CUSTOM';
6
7
  export class Schedule extends Timeout {
7
8
  schedule;
8
9
  callback;
@@ -20,6 +21,9 @@ export class Schedule extends Timeout {
20
21
  if (!assert(log, caller, schedule, 'cron')) {
21
22
  return;
22
23
  }
24
+ if (schedule.cron === CRON_CUSTOM && !assert(log, caller, schedule, 'cronCustom')) {
25
+ return;
26
+ }
23
27
  }
24
28
  return new Schedule(schedule, caller, log, disableLogging, callback);
25
29
  }
@@ -51,13 +55,16 @@ export class Schedule extends Timeout {
51
55
  }, delay);
52
56
  }
53
57
  startCron() {
54
- const cron = this.schedule.cron;
58
+ let cron = this.schedule.cron;
59
+ if (cron === CRON_CUSTOM) {
60
+ cron = this.schedule.cronCustom;
61
+ }
55
62
  if (!validateCronExpression(cron).valid) {
56
- this.log.error(strings.accessory.invalidCron, this.caller, `'${this.schedule.cron}'`);
63
+ this.log.error(strings.accessory.invalidCron, this.caller, `'${cron}'`);
57
64
  return;
58
65
  }
59
66
  this.logIfDesired(strings.accessory.schedule.cron);
60
- this.cronjob = new CronJob(this.schedule.cron, this.callback);
67
+ this.cronjob = new CronJob(cron, this.callback);
61
68
  this.cronjob.start();
62
69
  }
63
70
  teardown() {
@@ -1 +1 @@
1
- {"version":3,"file":"schedule.js","sourceRoot":"","sources":["../../src/timeout/schedule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,MAAM,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAkB,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,MAAM,OAAO,QAAS,SAAQ,OAAO;IAyBhB;IAIA;IA3BnB,MAAM,CAAC,GAAG,CAAC,QAAwB,EAAE,MAAc,EAAG,GAAQ,EAAE,cAAuB,EAAE,QAA8B;QAErH,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,QAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvB,KAAK,YAAY,CAAC,QAAQ;gBACxB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC;oBACxD,OAAO;gBACT,CAAC;gBACD,MAAM;YACR,KAAK,YAAY,CAAC,IAAI;gBACpB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;oBAC3C,OAAO;gBACT,CAAC;QACH,CAAC;QACD,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;IACvE,CAAC;IAEO,OAAO,CAAW;IAE1B,YACmB,QAAwB,EACzC,MAAc,EACd,GAAQ,EACR,cAAuB,EACN,QAA8B;QAG/C,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;QAPlB,aAAQ,GAAR,QAAQ,CAAgB;QAIxB,aAAQ,GAAR,QAAQ,CAAsB;QAK/C,QAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC5B,KAAK,YAAY,CAAC,QAAQ;gBACxB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,MAAM;YACR,KAAK,YAAY,CAAC,IAAI;gBACpB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAc,YAAY;QACxB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAEO,YAAY;QAElB,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,MAAM,UAAU,GAAG,eAAe,CAChC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAC/C,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,EAC1C,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,EAC1C,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CACzC,CAAC;QAEF,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAE7G,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;YACnC,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC;IAEO,SAAS;QAEf,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAK,CAAC;QAEjC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACxC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;YACtF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEnD,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAEQ,QAAQ;QACf,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;IACvB,CAAC;CACF"}
1
+ {"version":3,"file":"schedule.js","sourceRoot":"","sources":["../../src/timeout/schedule.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { TimeUnits } from '../model/types.js';
1
+ import { TimeUnits } from '../model/enums.js';
2
2
  import { Log } from '../tools/log.js';
3
3
  type DelayLogStrings = {
4
4
  milliseconds: string;
@@ -1,4 +1,4 @@
1
- import { TimeUnits } from '../model/types.js';
1
+ import { TimeUnits } from '../model/enums.js';
2
2
  const SECOND = 1000;
3
3
  const MINUTE = 60 * SECOND;
4
4
  const HOUR = 60 * MINUTE;