homebridge-dummy 1.3.2-beta.1 → 1.4.0-alpha.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 (79) hide show
  1. package/CHANGELOG.md +13 -4
  2. package/README.md +82 -26
  3. package/config.schema.json +258 -44
  4. package/dist/accessory/base.d.ts +28 -8
  5. package/dist/accessory/base.js +53 -37
  6. package/dist/accessory/base.js.map +1 -1
  7. package/dist/accessory/group.d.ts +9 -1
  8. package/dist/accessory/group.js +14 -9
  9. package/dist/accessory/group.js.map +1 -1
  10. package/dist/accessory/helpers.d.ts +3 -5
  11. package/dist/accessory/helpers.js +12 -12
  12. package/dist/accessory/helpers.js.map +1 -1
  13. package/dist/accessory/lock.d.ts +6 -6
  14. package/dist/accessory/lock.js +14 -8
  15. package/dist/accessory/lock.js.map +1 -1
  16. package/dist/accessory/onoff/lightbulb.d.ts +9 -4
  17. package/dist/accessory/onoff/lightbulb.js +31 -4
  18. package/dist/accessory/onoff/lightbulb.js.map +1 -1
  19. package/dist/accessory/onoff/onoff.d.ts +8 -8
  20. package/dist/accessory/onoff/onoff.js +25 -13
  21. package/dist/accessory/onoff/onoff.js.map +1 -1
  22. package/dist/accessory/position/garage.d.ts +3 -4
  23. package/dist/accessory/position/garage.js +3 -3
  24. package/dist/accessory/position/garage.js.map +1 -1
  25. package/dist/accessory/position/position.d.ts +6 -6
  26. package/dist/accessory/position/position.js +14 -8
  27. package/dist/accessory/position/position.js.map +1 -1
  28. package/dist/accessory/sensor.d.ts +4 -5
  29. package/dist/accessory/sensor.js +14 -15
  30. package/dist/accessory/sensor.js.map +1 -1
  31. package/dist/accessory/thermostat.d.ts +5 -6
  32. package/dist/accessory/thermostat.js +25 -19
  33. package/dist/accessory/thermostat.js.map +1 -1
  34. package/dist/homebridge/platform.d.ts +3 -2
  35. package/dist/homebridge/platform.js +31 -12
  36. package/dist/homebridge/platform.js.map +1 -1
  37. package/dist/homebridge-ui/public/index.html +1 -1
  38. package/dist/homebridge-ui/public/ui.js +1 -1
  39. package/dist/i18n/de.d.ts +35 -0
  40. package/dist/i18n/en.d.ts +35 -0
  41. package/dist/i18n/en.js +43 -8
  42. package/dist/i18n/en.js.map +1 -1
  43. package/dist/i18n/es.d.ts +35 -0
  44. package/dist/i18n/i18n.d.ts +35 -0
  45. package/dist/i18n/ru.d.ts +35 -0
  46. package/dist/i18n/template.d.ts +35 -0
  47. package/dist/model/conditions.d.ts +17 -0
  48. package/dist/model/conditions.js +150 -0
  49. package/dist/model/conditions.js.map +1 -0
  50. package/dist/model/enums.d.ts +19 -4
  51. package/dist/model/enums.js +41 -12
  52. package/dist/model/enums.js.map +1 -1
  53. package/dist/model/types.d.ts +18 -3
  54. package/dist/model/webhook.js +23 -19
  55. package/dist/model/webhook.js.map +1 -1
  56. package/dist/timeout/fader.d.ts +9 -0
  57. package/dist/timeout/fader.js +33 -0
  58. package/dist/timeout/fader.js.map +1 -0
  59. package/dist/timeout/limiter.d.ts +2 -2
  60. package/dist/timeout/limiter.js +8 -8
  61. package/dist/timeout/limiter.js.map +1 -1
  62. package/dist/timeout/schedule.d.ts +3 -3
  63. package/dist/timeout/schedule.js +18 -18
  64. package/dist/timeout/schedule.js.map +1 -1
  65. package/dist/timeout/timeout.d.ts +6 -4
  66. package/dist/timeout/timeout.js +12 -7
  67. package/dist/timeout/timeout.js.map +1 -1
  68. package/dist/timeout/timer.d.ts +3 -4
  69. package/dist/timeout/timer.js +8 -9
  70. package/dist/timeout/timer.js.map +1 -1
  71. package/dist/tools/configMigration.js +2 -2
  72. package/dist/tools/configMigration.js.map +1 -1
  73. package/dist/tools/logWatcher.d.ts +13 -0
  74. package/dist/tools/logWatcher.js +52 -0
  75. package/dist/tools/logWatcher.js.map +1 -0
  76. package/dist/tools/primitive.d.ts +3 -0
  77. package/dist/tools/primitive.js +24 -0
  78. package/dist/tools/primitive.js.map +1 -0
  79. package/package.json +13 -3
@@ -1,7 +1,7 @@
1
1
  import fs from 'fs';
2
2
  import { strings } from '../i18n/i18n.js';
3
3
  import { LEGACY_ALIAS, PLATFORM_NAME } from '../homebridge/settings.js';
4
- import { AccessoryType, TimeUnits } from '../model/enums.js';
4
+ import { AccessoryType, OnState, TimeUnits } from '../model/enums.js';
5
5
  function migrateAccessory(legacyConfig) {
6
6
  const dummyConfig = {
7
7
  id: crypto.randomUUID(),
@@ -11,7 +11,7 @@ function migrateAccessory(legacyConfig) {
11
11
  };
12
12
  if (legacyConfig.reverse) {
13
13
  const onOffConfig = dummyConfig;
14
- onOffConfig.defaultOn = 1;
14
+ onOffConfig.defaultState = OnState.ON;
15
15
  }
16
16
  if (legacyConfig.dimmer) {
17
17
  const lightbulbConfig = dummyConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"configMigration.js","sourceRoot":"","sources":["../../src/tools/configMigration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configMigration.js","sourceRoot":"","sources":["../../src/tools/configMigration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Log } from '../tools/log.js';
2
+ type ListenerCallback = () => (void);
3
+ export declare class LogWatcher {
4
+ private readonly log;
5
+ private readonly storagePath;
6
+ private tailFile?;
7
+ private readonly matchers;
8
+ constructor(log: Log, storagePath: string);
9
+ private startWatching;
10
+ teardown(): void;
11
+ registerPattern(pattern: string, callback: ListenerCallback): void;
12
+ }
13
+ export {};
@@ -0,0 +1,52 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import TailFile from 'tail-file';
4
+ import { strings } from '../i18n/i18n.js';
5
+ export class LogWatcher {
6
+ log;
7
+ storagePath;
8
+ tailFile;
9
+ matchers = new Map();
10
+ constructor(log, storagePath) {
11
+ this.log = log;
12
+ this.storagePath = storagePath;
13
+ }
14
+ startWatching() {
15
+ if (this.tailFile !== undefined) {
16
+ return;
17
+ }
18
+ const logFilePath = path.join(this.storagePath, 'homebridge.log');
19
+ if (!fs.existsSync(logFilePath)) {
20
+ this.log.error(strings.logWatcher.missingFile, `'${logFilePath}'`);
21
+ return;
22
+ }
23
+ this.tailFile = new TailFile(logFilePath, { startPos: 'end' });
24
+ this.tailFile.on('line', (line) => {
25
+ for (const [matcher, callbacks] of this.matchers.entries()) {
26
+ if (matcher.test(line)) {
27
+ callbacks.forEach(cb => cb());
28
+ }
29
+ }
30
+ });
31
+ this.tailFile.on('error', (err) => this.log.error(strings.logWatcher.error, String(err)));
32
+ this.tailFile.start();
33
+ }
34
+ teardown() {
35
+ this.tailFile?.stop();
36
+ }
37
+ registerPattern(pattern, callback) {
38
+ let regex;
39
+ try {
40
+ regex = new RegExp(pattern);
41
+ }
42
+ catch (e) {
43
+ const escapedPattern = pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
44
+ regex = new RegExp(escapedPattern);
45
+ }
46
+ const callbacks = this.matchers.get(regex) ?? [];
47
+ callbacks.push(callback);
48
+ this.matchers.set(regex, callbacks);
49
+ this.startWatching();
50
+ }
51
+ }
52
+ //# sourceMappingURL=logWatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logWatcher.js","sourceRoot":"","sources":["../../src/tools/logWatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,QAAQ,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAI1C,MAAM,OAAO,UAAU;IAMQ;IAA2B;IAJhD,QAAQ,CAAY;IAEX,QAAQ,GAAG,IAAI,GAAG,EAA8B,CAAC;IAElE,YAA6B,GAAQ,EAAmB,WAAmB;QAA9C,QAAG,GAAH,GAAG,CAAK;QAAmB,gBAAW,GAAX,WAAW,CAAQ;IAC3E,CAAC;IAEO,aAAa;QAEnB,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAElE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,WAAW,GAAG,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAE/D,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACxC,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC3D,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACvB,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAEjG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxB,CAAC;IAEM,eAAe,CAAC,OAAe,EAAE,QAA0B;QAEhE,IAAI,KAAa,CAAC;QAClB,IAAI,CAAC;YACH,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;YACtE,KAAK,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACjD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAEpC,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ import { PrimitiveTypes } from 'homebridge';
2
+ export declare function toPrimitive(value: any): PrimitiveTypes;
3
+ export declare function toNumber(primitive: PrimitiveTypes): number;
@@ -0,0 +1,24 @@
1
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
2
+ export function toPrimitive(value) {
3
+ if (typeof value === 'boolean' || typeof value === 'number') {
4
+ return value;
5
+ }
6
+ if (value === 'true') {
7
+ return true;
8
+ }
9
+ if (value === 'false') {
10
+ return false;
11
+ }
12
+ const num = Number(value);
13
+ if (!isNaN(num) && value.trim() !== '') {
14
+ return num;
15
+ }
16
+ return value;
17
+ }
18
+ export function toNumber(primitive) {
19
+ if (typeof primitive === 'number') {
20
+ return primitive;
21
+ }
22
+ return Number(primitive);
23
+ }
24
+ //# sourceMappingURL=primitive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitive.js","sourceRoot":"","sources":["../../src/tools/primitive.ts"],"names":[],"mappings":"AAEA,8DAA8D;AAC9D,MAAM,UAAU,WAAW,CAAC,KAAU;IAEpC,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACvC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,SAAyB;IAChD,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC"}
package/package.json CHANGED
@@ -2,9 +2,9 @@
2
2
  "name": "homebridge-dummy",
3
3
  "platform": "HomebridgeDummy",
4
4
  "displayName": "Homebridge Dummy",
5
- "description": "Create Homebridge accessories to help with automation and control — scheduling, delays, sensors, commands, webhooks, and more",
5
+ "description": "Create accessories to help with HomeKit automation and control — scheduling, delays, sensors, commands, conditions, webhooks, and more",
6
6
  "type": "module",
7
- "version": "1.3.2-beta.1",
7
+ "version": "1.4.0-alpha.0",
8
8
  "homepage": "https://github.com/mpatfield/homebridge-dummy#readme",
9
9
  "repository": {
10
10
  "type": "git",
@@ -33,6 +33,7 @@
33
33
  "hoobs-plugin",
34
34
  "homekit",
35
35
  "dummy",
36
+ "virtual",
36
37
  "automation",
37
38
  "timer",
38
39
  "delay",
@@ -41,6 +42,14 @@
41
42
  "command",
42
43
  "cmd",
43
44
  "cmdtrigger",
45
+ "conditions",
46
+ "conditional",
47
+ "logic",
48
+ "logical",
49
+ "rule",
50
+ "rules",
51
+ "sequence",
52
+ "trigger",
44
53
  "http",
45
54
  "webhook",
46
55
  "sensor"
@@ -56,7 +65,8 @@
56
65
  "express": "^5.1.0",
57
66
  "homebridge-lib": "^7.1.8",
58
67
  "lodash.merge": "^4.6.2",
59
- "node-persist": "^4.0.4"
68
+ "node-persist": "^4.0.4",
69
+ "tail-file": "^1.4.16"
60
70
  },
61
71
  "devDependencies": {
62
72
  "@types/escape-html": "^1.0.4",