@zwave-js/config 15.21.0 → 15.22.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.
@@ -1,2 +1,2 @@
1
- export declare const PACKAGE_VERSION = "15.21.0";
1
+ export declare const PACKAGE_VERSION = "15.22.0";
2
2
  //# sourceMappingURL=_version.d.ts.map
@@ -21,7 +21,7 @@ __export(version_exports, {
21
21
  PACKAGE_VERSION: () => PACKAGE_VERSION
22
22
  });
23
23
  module.exports = __toCommonJS(version_exports);
24
- const PACKAGE_VERSION = "15.21.0";
24
+ const PACKAGE_VERSION = "15.22.0";
25
25
  // Annotate the CommonJS export names for ESM import in node:
26
26
  0 && (module.exports = {
27
27
  PACKAGE_VERSION
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/_version.ts"],
4
- "sourcesContent": ["// This file is auto-generated by the codegen maintenance script\nexport const PACKAGE_VERSION = \"15.21.0\";\n"],
4
+ "sourcesContent": ["// This file is auto-generated by the codegen maintenance script\nexport const PACKAGE_VERSION = \"15.22.0\";\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;;;;;AACO,MAAM,kBAAkB;",
6
6
  "names": []
7
7
  }
@@ -6,6 +6,7 @@ export declare class ConditionalCompatConfig implements ConditionalItem<CompatCo
6
6
  private valueIdRegex;
7
7
  constructor(filename: string, definition: JSONObject);
8
8
  readonly alarmMapping?: readonly CompatMapAlarm[];
9
+ readonly remapNotifications?: readonly CompatRemapNotification[];
9
10
  readonly addCCs?: ReadonlyMap<CommandClasses, CompatAddCC>;
10
11
  readonly removeCCs?: ReadonlyMap<CommandClasses, "*" | readonly number[]>;
11
12
  readonly disableAutoRefresh?: boolean;
@@ -61,6 +62,29 @@ export declare class CompatMapAlarm {
61
62
  readonly from: CompatMapAlarmFrom;
62
63
  readonly to: CompatMapAlarmTo;
63
64
  }
65
+ export interface CompatRemapNotificationFrom {
66
+ notificationType: number;
67
+ notificationEvent: number;
68
+ }
69
+ export interface CompatRemapNotificationTo {
70
+ notificationType: number;
71
+ notificationEvent: number;
72
+ }
73
+ export type CompatRemapNotificationAction = {
74
+ type: "remap";
75
+ to: CompatRemapNotificationTo;
76
+ } | {
77
+ type: "clear";
78
+ targets: CompatRemapNotificationTo[];
79
+ } | {
80
+ type: "idle";
81
+ targets: CompatRemapNotificationTo[];
82
+ };
83
+ export declare class CompatRemapNotification {
84
+ constructor(filename: string, definition: JSONObject, index: number);
85
+ readonly from: CompatRemapNotificationFrom;
86
+ readonly action: CompatRemapNotificationAction;
87
+ }
64
88
  export declare class CompatOverrideQueries {
65
89
  constructor(filename: string, definition: JSONObject);
66
90
  private readonly overrides;
@@ -22,6 +22,7 @@ __export(CompatConfig_exports, {
22
22
  CompatAddCC: () => CompatAddCC,
23
23
  CompatMapAlarm: () => CompatMapAlarm,
24
24
  CompatOverrideQueries: () => CompatOverrideQueries,
25
+ CompatRemapNotification: () => CompatRemapNotification,
25
26
  ConditionalCompatConfig: () => ConditionalCompatConfig
26
27
  });
27
28
  module.exports = __toCommonJS(CompatConfig_exports);
@@ -307,6 +308,13 @@ compat option alarmMapping must be an array where all items are objects!`);
307
308
  }
308
309
  this.alarmMapping = definition.alarmMapping.map((m, i) => new CompatMapAlarm(filename, m, i + 1));
309
310
  }
311
+ if (definition.remapNotifications != void 0) {
312
+ if (!(0, import_typeguards.isArray)(definition.remapNotifications) || !definition.remapNotifications.every((m) => (0, import_typeguards.isObject)(m))) {
313
+ (0, import_utils_safe.throwInvalidConfig)("devices", `config/devices/${filename}:
314
+ compat option remapNotifications must be an array where all items are objects!`);
315
+ }
316
+ this.remapNotifications = definition.remapNotifications.map((m, i) => new CompatRemapNotification(filename, m, i + 1));
317
+ }
310
318
  if (definition.overrideQueries != void 0) {
311
319
  if (!(0, import_typeguards.isObject)(definition.overrideQueries)) {
312
320
  (0, import_utils_safe.throwInvalidConfig)("devices", `config/devices/${filename}:
@@ -316,6 +324,7 @@ compat option overrideQueries must be an object!`);
316
324
  }
317
325
  }
318
326
  alarmMapping;
327
+ remapNotifications;
319
328
  addCCs;
320
329
  removeCCs;
321
330
  disableAutoRefresh;
@@ -348,6 +357,7 @@ compat option overrideQueries must be an object!`);
348
357
  return;
349
358
  const ret = (0, import_shared.pick)(this, [
350
359
  "alarmMapping",
360
+ "remapNotifications",
351
361
  "addCCs",
352
362
  "removeCCs",
353
363
  "disableAutoRefresh",
@@ -491,6 +501,80 @@ error in compat option alarmMapping, mapping #${index}: property "to.eventParame
491
501
  from;
492
502
  to;
493
503
  }
504
+ class CompatRemapNotification {
505
+ static {
506
+ __name(this, "CompatRemapNotification");
507
+ }
508
+ constructor(filename, definition, index) {
509
+ if (!(0, import_typeguards.isObject)(definition.from)) {
510
+ (0, import_utils_safe.throwInvalidConfig)("devices", `config/devices/${filename}:
511
+ error in compat option remapNotifications, mapping #${index}: property "from" must be an object!`);
512
+ } else {
513
+ if (typeof definition.from.notificationType !== "number") {
514
+ (0, import_utils_safe.throwInvalidConfig)("devices", `config/devices/${filename}:
515
+ error in compat option remapNotifications, mapping #${index}: property "from.notificationType" must be a number!`);
516
+ }
517
+ if (typeof definition.from.notificationEvent !== "number") {
518
+ (0, import_utils_safe.throwInvalidConfig)("devices", `config/devices/${filename}:
519
+ error in compat option remapNotifications, mapping #${index}: property "from.notificationEvent" must be a number!`);
520
+ }
521
+ }
522
+ this.from = (0, import_shared.pick)(definition.from, [
523
+ "notificationType",
524
+ "notificationEvent"
525
+ ]);
526
+ const validateToObject = /* @__PURE__ */ __name((obj, label) => {
527
+ if (!(0, import_typeguards.isObject)(obj)) {
528
+ (0, import_utils_safe.throwInvalidConfig)("devices", `config/devices/${filename}:
529
+ error in compat option remapNotifications, mapping #${index}: ${label} must be an object!`);
530
+ }
531
+ if (typeof obj.notificationType !== "number") {
532
+ (0, import_utils_safe.throwInvalidConfig)("devices", `config/devices/${filename}:
533
+ error in compat option remapNotifications, mapping #${index}: ${label} must have a numeric "notificationType"!`);
534
+ }
535
+ if (typeof obj.notificationEvent !== "number") {
536
+ (0, import_utils_safe.throwInvalidConfig)("devices", `config/devices/${filename}:
537
+ error in compat option remapNotifications, mapping #${index}: ${label} must have a numeric "notificationEvent"!`);
538
+ }
539
+ }, "validateToObject");
540
+ const validateTargetArray = /* @__PURE__ */ __name((arr, label) => {
541
+ if (!(0, import_typeguards.isArray)(arr) || arr.length === 0) {
542
+ (0, import_utils_safe.throwInvalidConfig)("devices", `config/devices/${filename}:
543
+ error in compat option remapNotifications, mapping #${index}: property "${label}" must be a non-empty array of objects!`);
544
+ }
545
+ for (let j = 0; j < arr.length; j++) {
546
+ validateToObject(arr[j], `"${label}[${j}]"`);
547
+ }
548
+ }, "validateTargetArray");
549
+ if (definition.to != void 0) {
550
+ validateToObject(definition.to, `property "to"`);
551
+ this.action = {
552
+ type: "remap",
553
+ to: (0, import_shared.pick)(definition.to, [
554
+ "notificationType",
555
+ "notificationEvent"
556
+ ])
557
+ };
558
+ } else if (definition.clear != void 0) {
559
+ validateTargetArray(definition.clear, "clear");
560
+ this.action = {
561
+ type: "clear",
562
+ targets: definition.clear.map((target) => (0, import_shared.pick)(target, ["notificationType", "notificationEvent"]))
563
+ };
564
+ } else if (definition.idle != void 0) {
565
+ validateTargetArray(definition.idle, "idle");
566
+ this.action = {
567
+ type: "idle",
568
+ targets: definition.idle.map((target) => (0, import_shared.pick)(target, ["notificationType", "notificationEvent"]))
569
+ };
570
+ } else {
571
+ (0, import_utils_safe.throwInvalidConfig)("devices", `config/devices/${filename}:
572
+ error in compat option remapNotifications, mapping #${index}: exactly one of "to", "clear", or "idle" must be defined!`);
573
+ }
574
+ }
575
+ from;
576
+ action;
577
+ }
494
578
  class CompatOverrideQueries {
495
579
  static {
496
580
  __name(this, "CompatOverrideQueries");
@@ -594,6 +678,7 @@ __name(isBasicSetMapping, "isBasicSetMapping");
594
678
  CompatAddCC,
595
679
  CompatMapAlarm,
596
680
  CompatOverrideQueries,
681
+ CompatRemapNotification,
597
682
  ConditionalCompatConfig
598
683
  });
599
684
  //# sourceMappingURL=CompatConfig.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/devices/CompatConfig.ts"],
4
- "sourcesContent": ["import {\n\ttype CommandClassInfo,\n\ttype CommandClasses,\n\ttype ValueID,\n\tgetCCName,\n\tstripUndefined,\n} from \"@zwave-js/core\";\nimport { type JSONObject, pick } from \"@zwave-js/shared\";\nimport { isArray, isObject } from \"alcalzone-shared/typeguards\";\nimport { throwInvalidConfig, tryParseCCId } from \"../utils_safe.js\";\nimport { type ConditionalItem, conditionApplies } from \"./ConditionalItem.js\";\nimport type { DeviceID } from \"./shared.js\";\n\nexport class ConditionalCompatConfig implements ConditionalItem<CompatConfig> {\n\tprivate valueIdRegex = /^\\$value\\$\\[.+\\]$/;\n\n\tpublic constructor(filename: string, definition: JSONObject) {\n\t\tthis.condition = definition.$if;\n\n\t\tif (definition.queryOnWakeup != undefined) {\n\t\t\tif (\n\t\t\t\t!isArray(definition.queryOnWakeup)\n\t\t\t\t|| !definition.queryOnWakeup.every(\n\t\t\t\t\t(cmd: unknown) =>\n\t\t\t\t\t\tisArray(cmd)\n\t\t\t\t\t\t&& cmd.length >= 2\n\t\t\t\t\t\t&& typeof cmd[0] === \"string\"\n\t\t\t\t\t\t&& typeof cmd[1] === \"string\"\n\t\t\t\t\t\t&& cmd\n\t\t\t\t\t\t\t.slice(2)\n\t\t\t\t\t\t\t.every(\n\t\t\t\t\t\t\t\t(arg) =>\n\t\t\t\t\t\t\t\t\ttypeof arg === \"string\"\n\t\t\t\t\t\t\t\t\t|| typeof arg === \"number\"\n\t\t\t\t\t\t\t\t\t|| typeof arg === \"boolean\",\n\t\t\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option queryOnWakeup`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Parse \"smart\" values into partial Value IDs\n\t\t\tthis.queryOnWakeup = (definition.queryOnWakeup as any[][]).map(\n\t\t\t\t(cmd) =>\n\t\t\t\t\tcmd.map((arg) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttypeof arg === \"string\"\n\t\t\t\t\t\t\t&& this.valueIdRegex.test(arg)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst tuple = JSON.parse(\n\t\t\t\t\t\t\t\targ.slice(\"$value$\".length),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tproperty: tuple[0],\n\t\t\t\t\t\t\t\tpropertyKey: tuple[1],\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn arg;\n\t\t\t\t\t}),\n\t\t\t) as any;\n\t\t}\n\n\t\tif (definition.disableAutoRefresh != undefined) {\n\t\t\tif (definition.disableAutoRefresh !== true) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option disableAutoRefresh must be true or omitted`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.disableAutoRefresh = definition.disableAutoRefresh;\n\t\t}\n\n\t\tif (definition.disableCallbackFunctionTypeCheck != undefined) {\n\t\t\tif (\n\t\t\t\t!isArray(definition.disableCallbackFunctionTypeCheck)\n\t\t\t\t|| !definition.disableCallbackFunctionTypeCheck.every(\n\t\t\t\t\t(d: any) => typeof d === \"number\" && d % 1 === 0 && d > 0,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nwhen present, compat option disableCallbackFunctionTypeCheck msut be an array of positive integers`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis.disableCallbackFunctionTypeCheck =\n\t\t\t\tdefinition.disableCallbackFunctionTypeCheck;\n\t\t}\n\n\t\tif (definition.disableStrictEntryControlDataValidation != undefined) {\n\t\t\tif (definition.disableStrictEntryControlDataValidation !== true) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option disableStrictEntryControlDataValidation must be true or omitted`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.disableStrictEntryControlDataValidation =\n\t\t\t\tdefinition.disableStrictEntryControlDataValidation;\n\t\t}\n\n\t\tif (definition.disableStrictMeasurementValidation != undefined) {\n\t\t\tif (definition.disableStrictMeasurementValidation !== true) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option disableStrictMeasurementValidation must be true or omitted`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.disableStrictMeasurementValidation =\n\t\t\t\tdefinition.disableStrictMeasurementValidation;\n\t\t}\n\n\t\tif (definition.encodeCCsUsingTargetVersion != undefined) {\n\t\t\tif (definition.encodeCCsUsingTargetVersion !== true) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option encodeCCsUsingTargetVersion must be true or omitted`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.encodeCCsUsingTargetVersion =\n\t\t\t\tdefinition.encodeCCsUsingTargetVersion;\n\t\t}\n\n\t\tif (definition.forceNotificationIdleReset != undefined) {\n\t\t\tif (definition.forceNotificationIdleReset !== true) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option forceNotificationIdleReset must be true or omitted`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.forceNotificationIdleReset =\n\t\t\t\tdefinition.forceNotificationIdleReset;\n\t\t}\n\n\t\tif (definition.forceSceneControllerGroupCount != undefined) {\n\t\t\tif (typeof definition.forceSceneControllerGroupCount !== \"number\") {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option forceSceneControllerGroupCount must be a number!`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tdefinition.forceSceneControllerGroupCount < 0\n\t\t\t\t|| definition.forceSceneControllerGroupCount > 255\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option forceSceneControllerGroupCount must be between 0 and 255!`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.forceSceneControllerGroupCount =\n\t\t\t\tdefinition.forceSceneControllerGroupCount;\n\t\t}\n\n\t\tif (definition.mapBasicReport != undefined) {\n\t\t\tif (!isBasicReportMapping(definition.mapBasicReport)) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option mapBasicReport contains an invalid value`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.mapBasicReport = definition.mapBasicReport;\n\t\t}\n\n\t\tif (definition.mapBasicSet != undefined) {\n\t\t\tif (!isBasicSetMapping(definition.mapBasicSet)) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option mapBasicSet contains an invalid value`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.mapBasicSet = definition.mapBasicSet;\n\t\t}\n\n\t\tif (definition.preserveRootApplicationCCValueIDs != undefined) {\n\t\t\tif (definition.preserveRootApplicationCCValueIDs !== true) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option preserveRootApplicationCCValueIDs`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.preserveRootApplicationCCValueIDs =\n\t\t\t\tdefinition.preserveRootApplicationCCValueIDs;\n\t\t}\n\n\t\tif (definition.preserveEndpoints != undefined) {\n\t\t\tif (\n\t\t\t\tdefinition.preserveEndpoints !== \"*\"\n\t\t\t\t&& !(\n\t\t\t\t\tisArray(definition.preserveEndpoints)\n\t\t\t\t\t&& definition.preserveEndpoints.every(\n\t\t\t\t\t\t(d: any) =>\n\t\t\t\t\t\t\ttypeof d === \"number\" && d % 1 === 0 && d > 0,\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option preserveEndpoints must be \"*\" or an array of positive integers`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.preserveEndpoints = definition.preserveEndpoints;\n\t\t}\n\n\t\tif (definition.removeEndpoints != undefined) {\n\t\t\tif (\n\t\t\t\tdefinition.removeEndpoints !== \"*\"\n\t\t\t\t&& !(\n\t\t\t\t\tisArray(definition.removeEndpoints)\n\t\t\t\t\t&& definition.removeEndpoints.every(\n\t\t\t\t\t\t(d: any) =>\n\t\t\t\t\t\t\ttypeof d === \"number\" && d % 1 === 0 && d > 0,\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option removeEndpoints must be \"*\" or an array of positive integers`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.removeEndpoints = definition.removeEndpoints;\n\t\t}\n\n\t\tif (definition.skipConfigurationNameQuery != undefined) {\n\t\t\tif (definition.skipConfigurationNameQuery !== true) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option skipConfigurationNameQuery`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.skipConfigurationNameQuery =\n\t\t\t\tdefinition.skipConfigurationNameQuery;\n\t\t}\n\n\t\tif (definition.skipConfigurationInfoQuery != undefined) {\n\t\t\tif (definition.skipConfigurationInfoQuery !== true) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option skipConfigurationInfoQuery`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.skipConfigurationInfoQuery =\n\t\t\t\tdefinition.skipConfigurationInfoQuery;\n\t\t}\n\n\t\tif (definition.treatMultilevelSwitchSetAsEvent != undefined) {\n\t\t\tif (definition.treatMultilevelSwitchSetAsEvent !== true) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option treatMultilevelSwitchSetAsEvent`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.treatMultilevelSwitchSetAsEvent =\n\t\t\t\tdefinition.treatMultilevelSwitchSetAsEvent;\n\t\t}\n\n\t\tif (definition.treatSetAsReport != undefined) {\n\t\t\tif (\n\t\t\t\t!(isArray(definition.treatSetAsReport)\n\t\t\t\t\t&& definition.treatSetAsReport.every(\n\t\t\t\t\t\t(d: any) => typeof d === \"string\",\n\t\t\t\t\t))\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option treatSetAsReport must be an array of strings`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.treatSetAsReport = new Set(definition.treatSetAsReport);\n\t\t}\n\n\t\tif (definition.treatDestinationEndpointAsSource != undefined) {\n\t\t\tif (definition.treatDestinationEndpointAsSource !== true) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option treatDestinationEndpointAsSource`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.treatDestinationEndpointAsSource =\n\t\t\t\tdefinition.treatDestinationEndpointAsSource;\n\t\t}\n\n\t\tif (definition.useUTCInTimeParametersCC != undefined) {\n\t\t\tif (definition.useUTCInTimeParametersCC !== true) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option useUTCInTimeParametersCC must be true or omitted`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.useUTCInTimeParametersCC = definition.useUTCInTimeParametersCC;\n\t\t}\n\n\t\tif (definition.manualValueRefreshDelayMs != undefined) {\n\t\t\tif (typeof definition.manualValueRefreshDelayMs !== \"number\") {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option manualValueRefreshDelayMs must be a number!`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tdefinition.manualValueRefreshDelayMs % 1 !== 0\n\t\t\t\t|| definition.manualValueRefreshDelayMs < 0\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option manualValueRefreshDelayMs must be a non-negative integer!`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.manualValueRefreshDelayMs =\n\t\t\t\tdefinition.manualValueRefreshDelayMs;\n\t\t}\n\n\t\tif (definition.reportTimeout != undefined) {\n\t\t\tif (typeof definition.reportTimeout !== \"number\") {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option reportTimeout must be a number!`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tdefinition.reportTimeout % 1 !== 0\n\t\t\t\t|| definition.reportTimeout < 1000\n\t\t\t\t|| definition.reportTimeout > 10000\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option reportTimeout must be an integer between 1000 and 10000!`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.reportTimeout = definition.reportTimeout;\n\t\t}\n\n\t\tif (definition.mapRootReportsToEndpoint != undefined) {\n\t\t\tif (typeof definition.mapRootReportsToEndpoint !== \"number\") {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option mapRootReportsToEndpoint must be a number!`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tdefinition.mapRootReportsToEndpoint % 1 !== 0\n\t\t\t\t|| definition.mapRootReportsToEndpoint < 1\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option mapRootReportsToEndpoint must be a positive integer!`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.mapRootReportsToEndpoint = definition.mapRootReportsToEndpoint;\n\t\t}\n\n\t\tif (definition.overrideFloatEncoding != undefined) {\n\t\t\tif (!isObject(definition.overrideFloatEncoding)) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option overrideFloatEncoding`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.overrideFloatEncoding = {};\n\t\t\tif (\"precision\" in definition.overrideFloatEncoding) {\n\t\t\t\tif (\n\t\t\t\t\ttypeof definition.overrideFloatEncoding.precision\n\t\t\t\t\t\t!= \"number\"\n\t\t\t\t) {\n\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t`config/devices/${filename}:\ncompat option overrideFloatEncoding.precision must be a number!`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tdefinition.overrideFloatEncoding.precision % 1 !== 0\n\t\t\t\t\t|| definition.overrideFloatEncoding.precision < 0\n\t\t\t\t) {\n\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t`config/devices/${filename}:\ncompat option overrideFloatEncoding.precision must be a positive integer!`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tthis.overrideFloatEncoding.precision =\n\t\t\t\t\tdefinition.overrideFloatEncoding.precision;\n\t\t\t}\n\t\t\tif (\"size\" in definition.overrideFloatEncoding) {\n\t\t\t\tif (typeof definition.overrideFloatEncoding.size != \"number\") {\n\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t`config/devices/${filename}:\ncompat option overrideFloatEncoding.size must be a number!`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tdefinition.overrideFloatEncoding.size % 1 !== 0\n\t\t\t\t\t|| definition.overrideFloatEncoding.size < 1\n\t\t\t\t\t|| definition.overrideFloatEncoding.size > 4\n\t\t\t\t) {\n\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t`config/devices/${filename}:\ncompat option overrideFloatEncoding.size must be an integer between 1 and 4!`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tthis.overrideFloatEncoding.size =\n\t\t\t\t\tdefinition.overrideFloatEncoding.size;\n\t\t\t}\n\n\t\t\tif (Object.keys(this.overrideFloatEncoding).length === 0) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option overrideFloatEncoding: size and/or precision must be specified!`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (definition.commandClasses != undefined) {\n\t\t\tif (!isObject(definition.commandClasses)) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option commandClasses`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (definition.commandClasses.add != undefined) {\n\t\t\t\tif (!isObject(definition.commandClasses.add)) {\n\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t`config/devices/${filename}:\nerror in compat option commandClasses.add`,\n\t\t\t\t\t);\n\t\t\t\t} else if (\n\t\t\t\t\t!Object.values(definition.commandClasses.add).every((v) =>\n\t\t\t\t\t\tisObject(v)\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t`config/devices/${filename}:\nAll values in compat option commandClasses.add must be objects`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst addCCs = new Map<CommandClasses, CompatAddCC>();\n\t\t\t\tfor (\n\t\t\t\t\tconst [key, info] of Object.entries(\n\t\t\t\t\t\tdefinition.commandClasses.add,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\t// Parse the key into a CC ID\n\t\t\t\t\tconst cc = tryParseCCId(key);\n\t\t\t\t\tif (cc == undefined) {\n\t\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t\t`config/devices/${filename}:\nInvalid Command Class \"${key}\" specified in compat option commandClasses.add!`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\taddCCs.set(cc, new CompatAddCC(filename, info as any));\n\t\t\t\t}\n\t\t\t\tthis.addCCs = addCCs;\n\t\t\t}\n\n\t\t\tif (definition.commandClasses.remove != undefined) {\n\t\t\t\tif (!isObject(definition.commandClasses.remove)) {\n\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t`config/devices/${filename}:\nerror in compat option commandClasses.remove`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst removeCCs = new Map<\n\t\t\t\t\tCommandClasses,\n\t\t\t\t\t\"*\" | readonly number[]\n\t\t\t\t>();\n\t\t\t\tfor (\n\t\t\t\t\tconst [key, info] of Object.entries(\n\t\t\t\t\t\tdefinition.commandClasses.remove,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\t// Parse the key into a CC ID\n\t\t\t\t\tconst cc = tryParseCCId(key);\n\t\t\t\t\tif (cc == undefined) {\n\t\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t\t`config/devices/${filename}:\nInvalid Command Class \"${key}\" specified in compat option commandClasses.remove!`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (isObject(info) && \"endpoints\" in info) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tinfo.endpoints === \"*\"\n\t\t\t\t\t\t\t|| (isArray(info.endpoints)\n\t\t\t\t\t\t\t\t&& info.endpoints.every(\n\t\t\t\t\t\t\t\t\t(i) => typeof i === \"number\",\n\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveCCs.set(cc, info.endpoints as any);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t\t\t`config/devices/${filename}:\nCompat option commandClasses.remove has an invalid \"endpoints\" property. Only \"*\" and numeric arrays are allowed!`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t\t`config/devices/${filename}:\nAll values in compat option commandClasses.remove must be objects with an \"endpoints\" property!`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.removeCCs = removeCCs;\n\t\t\t}\n\t\t}\n\n\t\tif (definition.alarmMapping != undefined) {\n\t\t\tif (\n\t\t\t\t!isArray(definition.alarmMapping)\n\t\t\t\t|| !definition.alarmMapping.every((m: any) => isObject(m))\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option alarmMapping must be an array where all items are objects!`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis.alarmMapping = (definition.alarmMapping as any[]).map(\n\t\t\t\t(m, i) => new CompatMapAlarm(filename, m, i + 1),\n\t\t\t);\n\t\t}\n\n\t\tif (definition.overrideQueries != undefined) {\n\t\t\tif (!isObject(definition.overrideQueries)) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option overrideQueries must be an object!`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis.overrideQueries = new CompatOverrideQueries(\n\t\t\t\tfilename,\n\t\t\t\tdefinition.overrideQueries,\n\t\t\t);\n\t\t}\n\t}\n\n\tpublic readonly alarmMapping?: readonly CompatMapAlarm[];\n\tpublic readonly addCCs?: ReadonlyMap<CommandClasses, CompatAddCC>;\n\tpublic readonly removeCCs?: ReadonlyMap<\n\t\tCommandClasses,\n\t\t\"*\" | readonly number[]\n\t>;\n\tpublic readonly disableAutoRefresh?: boolean;\n\tpublic readonly disableStrictEntryControlDataValidation?: boolean;\n\tpublic readonly disableStrictMeasurementValidation?: boolean;\n\tpublic readonly disableCallbackFunctionTypeCheck?: number[];\n\tpublic readonly encodeCCsUsingTargetVersion?: boolean;\n\tpublic readonly forceNotificationIdleReset?: boolean;\n\tpublic readonly forceSceneControllerGroupCount?: number;\n\tpublic readonly manualValueRefreshDelayMs?: number;\n\tpublic readonly mapRootReportsToEndpoint?: number;\n\tpublic readonly mapBasicReport?: BasicReportMapping;\n\tpublic readonly mapBasicSet?: BasicSetMapping;\n\tpublic readonly overrideFloatEncoding?: {\n\t\tsize?: number;\n\t\tprecision?: number;\n\t};\n\tpublic readonly overrideQueries?: CompatOverrideQueries;\n\tpublic readonly preserveRootApplicationCCValueIDs?: boolean;\n\tpublic readonly preserveEndpoints?: \"*\" | readonly number[];\n\tpublic readonly removeEndpoints?: \"*\" | readonly number[];\n\tpublic readonly reportTimeout?: number;\n\tpublic readonly skipConfigurationNameQuery?: boolean;\n\tpublic readonly skipConfigurationInfoQuery?: boolean;\n\tpublic readonly treatMultilevelSwitchSetAsEvent?: boolean;\n\tpublic readonly treatSetAsReport?: ReadonlySet<string>;\n\tpublic readonly treatDestinationEndpointAsSource?: boolean;\n\tpublic readonly useUTCInTimeParametersCC?: boolean;\n\tpublic readonly queryOnWakeup?: readonly [\n\t\tstring,\n\t\tstring,\n\t\t...(\n\t\t\t| string\n\t\t\t| number\n\t\t\t| boolean\n\t\t\t| Pick<ValueID, \"property\" | \"propertyKey\">\n\t\t)[],\n\t][];\n\n\tpublic readonly condition?: string | undefined;\n\n\tpublic evaluateCondition(deviceId?: DeviceID): CompatConfig | undefined {\n\t\tif (!conditionApplies(this, deviceId)) return;\n\t\tconst ret = pick(this, [\n\t\t\t\"alarmMapping\",\n\t\t\t\"addCCs\",\n\t\t\t\"removeCCs\",\n\t\t\t\"disableAutoRefresh\",\n\t\t\t\"disableCallbackFunctionTypeCheck\",\n\t\t\t\"disableStrictEntryControlDataValidation\",\n\t\t\t\"disableStrictMeasurementValidation\",\n\t\t\t\"encodeCCsUsingTargetVersion\",\n\t\t\t\"forceNotificationIdleReset\",\n\t\t\t\"forceSceneControllerGroupCount\",\n\t\t\t\"manualValueRefreshDelayMs\",\n\t\t\t\"mapBasicReport\",\n\t\t\t\"mapBasicSet\",\n\t\t\t\"mapRootReportsToEndpoint\",\n\t\t\t\"overrideFloatEncoding\",\n\t\t\t\"overrideQueries\",\n\t\t\t\"reportTimeout\",\n\t\t\t\"preserveRootApplicationCCValueIDs\",\n\t\t\t\"preserveEndpoints\",\n\t\t\t\"removeEndpoints\",\n\t\t\t\"skipConfigurationNameQuery\",\n\t\t\t\"skipConfigurationInfoQuery\",\n\t\t\t\"treatMultilevelSwitchSetAsEvent\",\n\t\t\t\"treatSetAsReport\",\n\t\t\t\"treatDestinationEndpointAsSource\",\n\t\t\t\"useUTCInTimeParametersCC\",\n\t\t\t\"queryOnWakeup\",\n\t\t]);\n\t\treturn stripUndefined(ret) as CompatConfig;\n\t}\n}\n\nexport type CompatConfig = Omit<\n\tConditionalCompatConfig,\n\t\"condition\" | \"evaluateCondition\"\n>;\n\nexport class CompatAddCC {\n\tpublic constructor(filename: string, definition: JSONObject) {\n\t\tconst endpoints = new Map<number, Partial<CommandClassInfo>>();\n\t\tconst parseEndpointInfo = (endpoint: number, info: JSONObject) => {\n\t\t\tconst parsed: Partial<CommandClassInfo> = {};\n\t\t\tif (info.isSupported != undefined) {\n\t\t\t\tif (typeof info.isSupported !== \"boolean\") {\n\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t`config/devices/${filename}:\nProperty isSupported in compat option commandClasses.add, endpoint ${endpoint} must be a boolean!`,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tparsed.isSupported = info.isSupported;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (info.isControlled != undefined) {\n\t\t\t\tif (typeof info.isControlled !== \"boolean\") {\n\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t`config/devices/${filename}:\nProperty isControlled in compat option commandClasses.add, endpoint ${endpoint} must be a boolean!`,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tparsed.isControlled = info.isControlled;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (info.secure != undefined) {\n\t\t\t\tif (typeof info.secure !== \"boolean\") {\n\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t`config/devices/${filename}:\nProperty secure in compat option commandClasses.add, endpoint ${endpoint} must be a boolean!`,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tparsed.secure = info.secure;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (info.version != undefined) {\n\t\t\t\tif (typeof info.version !== \"number\") {\n\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t`config/devices/${filename}:\nProperty version in compat option commandClasses.add, endpoint ${endpoint} must be a number!`,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tparsed.version = info.version;\n\t\t\t\t}\n\t\t\t}\n\t\t\tendpoints.set(endpoint, parsed);\n\t\t};\n\t\t// Parse root endpoint info if given\n\t\tif (\n\t\t\tdefinition.isSupported != undefined\n\t\t\t|| definition.isControlled != undefined\n\t\t\t|| definition.version != undefined\n\t\t\t|| definition.secure != undefined\n\t\t) {\n\t\t\t// We have info for the root endpoint\n\t\t\tparseEndpointInfo(0, definition);\n\t\t}\n\t\t// Parse all other endpoints\n\t\tif (isObject(definition.endpoints)) {\n\t\t\tif (\n\t\t\t\t!Object.keys(definition.endpoints).every((k) => /^\\d+$/.test(k))\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ninvalid endpoint index in compat option commandClasses.add`,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tfor (const [ep, info] of Object.entries(definition.endpoints)) {\n\t\t\t\t\tparseEndpointInfo(parseInt(ep), info as any);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.endpoints = endpoints;\n\t}\n\n\tpublic readonly endpoints: ReadonlyMap<number, Partial<CommandClassInfo>>;\n}\n\nexport interface CompatMapAlarmFrom {\n\talarmType: number;\n\talarmLevel?: number;\n}\n\nexport interface CompatMapAlarmTo {\n\tnotificationType: number;\n\tnotificationEvent: number;\n\teventParameters?: Record<string, number | \"alarmLevel\">;\n}\n\nexport class CompatMapAlarm {\n\tpublic constructor(\n\t\tfilename: string,\n\t\tdefinition: JSONObject,\n\t\tindex: number,\n\t) {\n\t\tif (!isObject(definition.from)) {\n\t\t\tthrowInvalidConfig(\n\t\t\t\t\"devices\",\n\t\t\t\t`config/devices/${filename}:\nerror in compat option alarmMapping, mapping #${index}: property \"from\" must be an object!`,\n\t\t\t);\n\t\t} else {\n\t\t\tif (typeof definition.from.alarmType !== \"number\") {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option alarmMapping, mapping #${index}: property \"from.alarmType\" must be a number!`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tdefinition.from.alarmLevel != undefined\n\t\t\t\t&& typeof definition.from.alarmLevel !== \"number\"\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option alarmMapping, mapping #${index}: if property \"from.alarmLevel\" is given, it must be a number!`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (!isObject(definition.to)) {\n\t\t\tthrowInvalidConfig(\n\t\t\t\t\"devices\",\n\t\t\t\t`config/devices/${filename}:\nerror in compat option alarmMapping, mapping #${index}: property \"to\" must be an object!`,\n\t\t\t);\n\t\t} else {\n\t\t\tif (typeof definition.to.notificationType !== \"number\") {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option alarmMapping, mapping #${index}: property \"to.notificationType\" must be a number!`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (typeof definition.to.notificationEvent !== \"number\") {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option alarmMapping, mapping #${index}: property \"to.notificationEvent\" must be a number!`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (definition.to.eventParameters != undefined) {\n\t\t\t\tif (!isObject(definition.to.eventParameters)) {\n\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t`config/devices/${filename}:\nerror in compat option alarmMapping, mapping #${index}: property \"to.eventParameters\" must be an object!`,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tfor (\n\t\t\t\t\t\tconst [key, val] of Object.entries(\n\t\t\t\t\t\t\tdefinition.to.eventParameters,\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (typeof val !== \"number\" && val !== \"alarmLevel\") {\n\t\t\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t\t\t`config/devices/${filename}:\nerror in compat option alarmMapping, mapping #${index}: property \"to.eventParameters.${key}\" must be a number or the literal \"alarmLevel\"!`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.from = pick(definition.from, [\"alarmType\", \"alarmLevel\"]);\n\t\tthis.to = pick(definition.to, [\n\t\t\t\"notificationType\",\n\t\t\t\"notificationEvent\",\n\t\t\t\"eventParameters\",\n\t\t]);\n\t}\n\n\tpublic readonly from: CompatMapAlarmFrom;\n\tpublic readonly to: CompatMapAlarmTo;\n}\n\nexport class CompatOverrideQueries {\n\tpublic constructor(filename: string, definition: JSONObject) {\n\t\tconst overrides = new Map();\n\n\t\tconst parseOverride = (\n\t\t\tcc: CommandClasses,\n\t\t\tinfo: JSONObject,\n\t\t): CompatOverrideQuery => {\n\t\t\tif (typeof info.method !== \"string\") {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nProperty \"method\" in compat option overrideQueries, CC ${\n\t\t\t\t\t\tgetCCName(\n\t\t\t\t\t\t\tcc,\n\t\t\t\t\t\t)\n\t\t\t\t\t} must be a string!`,\n\t\t\t\t);\n\t\t\t} else if (\n\t\t\t\tinfo.matchArgs != undefined\n\t\t\t\t&& !isArray(info.matchArgs)\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nProperty \"matchArgs\" in compat option overrideQueries, CC ${\n\t\t\t\t\t\tgetCCName(\n\t\t\t\t\t\t\tcc,\n\t\t\t\t\t\t)\n\t\t\t\t\t} must be an array!`,\n\t\t\t\t);\n\t\t\t} else if (!(\"result\" in info)) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nProperty \"result\" is missing in in compat option overrideQueries, CC ${\n\t\t\t\t\t\tgetCCName(\n\t\t\t\t\t\t\tcc,\n\t\t\t\t\t\t)\n\t\t\t\t\t}!`,\n\t\t\t\t);\n\t\t\t} else if (\n\t\t\t\tinfo.endpoint != undefined\n\t\t\t\t&& typeof info.endpoint !== \"number\"\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nProperty \"endpoint\" in compat option overrideQueries, CC ${\n\t\t\t\t\t\tgetCCName(\n\t\t\t\t\t\t\tcc,\n\t\t\t\t\t\t)\n\t\t\t\t\t} must be a number!`,\n\t\t\t\t);\n\t\t\t} else if (info.persistValues && !isObject(info.persistValues)) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nProperty \"persistValues\" in compat option overrideQueries, CC ${\n\t\t\t\t\t\tgetCCName(\n\t\t\t\t\t\t\tcc,\n\t\t\t\t\t\t)\n\t\t\t\t\t} must be an object!`,\n\t\t\t\t);\n\t\t\t} else if (info.extendMetadata && !isObject(info.extendMetadata)) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nProperty \"extendMetadata\" in compat option overrideQueries, CC ${\n\t\t\t\t\t\tgetCCName(\n\t\t\t\t\t\t\tcc,\n\t\t\t\t\t\t)\n\t\t\t\t\t} must be an object!`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tendpoint: info.endpoint,\n\t\t\t\tmethod: info.method,\n\t\t\t\tmatchArgs: info.matchArgs,\n\t\t\t\tresult: info.result,\n\t\t\t\tpersistValues: info.persistValues,\n\t\t\t\textendMetadata: info.extendMetadata,\n\t\t\t};\n\t\t};\n\n\t\tfor (const [key, value] of Object.entries(definition)) {\n\t\t\t// Parse the key into a CC ID\n\t\t\tconst cc = tryParseCCId(key);\n\t\t\tif (cc == undefined) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nInvalid Command Class \"${key}\" specified in compat option overrideQueries!`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tlet overrideDefinitions: any;\n\t\t\tif (isObject(value)) {\n\t\t\t\toverrideDefinitions = [value];\n\t\t\t} else if (!isArray(value)) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nProperty \"${key}\" in compat option overrideQueries must be a single override object or an array thereof!`,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\toverrideDefinitions = value;\n\t\t\t}\n\n\t\t\toverrides.set(\n\t\t\t\tcc,\n\t\t\t\toverrideDefinitions.map((info: any) => parseOverride(cc, info)),\n\t\t\t);\n\t\t}\n\n\t\tthis.overrides = overrides;\n\t}\n\n\t// CC -> endpoint -> queries\n\tprivate readonly overrides: ReadonlyMap<\n\t\tCommandClasses,\n\t\tCompatOverrideQuery[]\n\t>;\n\n\tpublic hasOverride(ccId: CommandClasses): boolean {\n\t\treturn this.overrides.has(ccId);\n\t}\n\n\tpublic matchOverride(\n\t\tcc: CommandClasses,\n\t\tendpointIndex: number,\n\t\tmethod: string,\n\t\targs: any[],\n\t):\n\t\t| Pick<\n\t\t\tCompatOverrideQuery,\n\t\t\t\"result\" | \"persistValues\" | \"extendMetadata\"\n\t\t>\n\t\t| undefined\n\t{\n\t\tconst queries = this.overrides.get(cc);\n\t\tif (!queries) return undefined;\n\t\tfor (const query of queries) {\n\t\t\tif ((query.endpoint ?? 0) !== endpointIndex) continue;\n\t\t\tif (query.method !== method) continue;\n\t\t\tif (query.matchArgs) {\n\t\t\t\tif (query.matchArgs.length !== args.length) continue;\n\t\t\t\tif (!query.matchArgs.every((arg, i) => arg === args[i])) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn pick(query, [\"result\", \"persistValues\", \"extendMetadata\"]);\n\t\t}\n\t}\n}\n\nexport interface CompatOverrideQuery {\n\t/** Which endpoint this override is for */\n\tendpoint?: number;\n\t/** For which API method this override is defined */\n\tmethod: string;\n\t/**\n\t * An array of method arguments that needs to match for this override to apply.\n\t * If `undefined`, no matching is performed.\n\t */\n\tmatchArgs?: any[];\n\t/** The result to return from the API call */\n\tresult: any;\n\t/**\n\t * An optional dictionary of values that will be persisted in the cache.\n\t * The keys are properties of the `...CCValues` objects that belong to this CC.\n\t */\n\tpersistValues?: Record<string, any>;\n\t/**\n\t * An optional dictionary of value metadata that will be persisted in the cache.\n\t * The keys are properties of the `...CCValues` objects that belong to this CC.\n\t * The given metadata will be merged with statically defined value metadata.\n\t */\n\textendMetadata?: Record<string, any>;\n}\n\nconst basicReportMappings = [\n\tfalse,\n\t\"auto\",\n\t\"Binary Sensor\",\n] as const;\n\n/**\n * Defines how to handle a received Basic CC Report:\n * - \"auto\": map it to a different CC based on the device type, with fallback to `false`\n * - false: treat the report verbatim without mapping\n * - \"Binary Sensor\": treat it as a Binary Sensor CC Report, regardless of device type\n */\nexport type BasicReportMapping = typeof basicReportMappings[number];\n\nfunction isBasicReportMapping(v: unknown): v is BasicReportMapping {\n\treturn basicReportMappings.includes(v as any);\n}\n\nconst basicSetMappings = [\n\t\"event\",\n\t\"report\",\n\t\"auto\",\n\t\"Binary Sensor\",\n] as const;\n\n/**\n * Defines how to handle a received Basic CC Set:\n * - \"event\": emit an event for the special `event` CC value\n * - \"report\": treat it as as a Basic CC Report (default)\n * - \"auto\": map it to a different CC based on the device type, with fallback to Basic CC report\n * - \"Binary Sensor\": treat it as a Binary Sensor CC Report, regardless of device type\n */\nexport type BasicSetMapping = typeof basicSetMappings[number];\n\nfunction isBasicSetMapping(v: unknown): v is BasicSetMapping {\n\treturn basicSetMappings.includes(v as any);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n\ttype CommandClassInfo,\n\ttype CommandClasses,\n\ttype ValueID,\n\tgetCCName,\n\tstripUndefined,\n} from \"@zwave-js/core\";\nimport { type JSONObject, pick } from \"@zwave-js/shared\";\nimport { isArray, isObject } from \"alcalzone-shared/typeguards\";\nimport { throwInvalidConfig, tryParseCCId } from \"../utils_safe.js\";\nimport { type ConditionalItem, conditionApplies } from \"./ConditionalItem.js\";\nimport type { DeviceID } from \"./shared.js\";\n\nexport class ConditionalCompatConfig implements ConditionalItem<CompatConfig> {\n\tprivate valueIdRegex = /^\\$value\\$\\[.+\\]$/;\n\n\tpublic constructor(filename: string, definition: JSONObject) {\n\t\tthis.condition = definition.$if;\n\n\t\tif (definition.queryOnWakeup != undefined) {\n\t\t\tif (\n\t\t\t\t!isArray(definition.queryOnWakeup)\n\t\t\t\t|| !definition.queryOnWakeup.every(\n\t\t\t\t\t(cmd: unknown) =>\n\t\t\t\t\t\tisArray(cmd)\n\t\t\t\t\t\t&& cmd.length >= 2\n\t\t\t\t\t\t&& typeof cmd[0] === \"string\"\n\t\t\t\t\t\t&& typeof cmd[1] === \"string\"\n\t\t\t\t\t\t&& cmd\n\t\t\t\t\t\t\t.slice(2)\n\t\t\t\t\t\t\t.every(\n\t\t\t\t\t\t\t\t(arg) =>\n\t\t\t\t\t\t\t\t\ttypeof arg === \"string\"\n\t\t\t\t\t\t\t\t\t|| typeof arg === \"number\"\n\t\t\t\t\t\t\t\t\t|| typeof arg === \"boolean\",\n\t\t\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option queryOnWakeup`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Parse \"smart\" values into partial Value IDs\n\t\t\tthis.queryOnWakeup = (definition.queryOnWakeup as any[][]).map(\n\t\t\t\t(cmd) =>\n\t\t\t\t\tcmd.map((arg) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttypeof arg === \"string\"\n\t\t\t\t\t\t\t&& this.valueIdRegex.test(arg)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst tuple = JSON.parse(\n\t\t\t\t\t\t\t\targ.slice(\"$value$\".length),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tproperty: tuple[0],\n\t\t\t\t\t\t\t\tpropertyKey: tuple[1],\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn arg;\n\t\t\t\t\t}),\n\t\t\t) as any;\n\t\t}\n\n\t\tif (definition.disableAutoRefresh != undefined) {\n\t\t\tif (definition.disableAutoRefresh !== true) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option disableAutoRefresh must be true or omitted`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.disableAutoRefresh = definition.disableAutoRefresh;\n\t\t}\n\n\t\tif (definition.disableCallbackFunctionTypeCheck != undefined) {\n\t\t\tif (\n\t\t\t\t!isArray(definition.disableCallbackFunctionTypeCheck)\n\t\t\t\t|| !definition.disableCallbackFunctionTypeCheck.every(\n\t\t\t\t\t(d: any) => typeof d === \"number\" && d % 1 === 0 && d > 0,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nwhen present, compat option disableCallbackFunctionTypeCheck msut be an array of positive integers`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis.disableCallbackFunctionTypeCheck =\n\t\t\t\tdefinition.disableCallbackFunctionTypeCheck;\n\t\t}\n\n\t\tif (definition.disableStrictEntryControlDataValidation != undefined) {\n\t\t\tif (definition.disableStrictEntryControlDataValidation !== true) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option disableStrictEntryControlDataValidation must be true or omitted`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.disableStrictEntryControlDataValidation =\n\t\t\t\tdefinition.disableStrictEntryControlDataValidation;\n\t\t}\n\n\t\tif (definition.disableStrictMeasurementValidation != undefined) {\n\t\t\tif (definition.disableStrictMeasurementValidation !== true) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option disableStrictMeasurementValidation must be true or omitted`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.disableStrictMeasurementValidation =\n\t\t\t\tdefinition.disableStrictMeasurementValidation;\n\t\t}\n\n\t\tif (definition.encodeCCsUsingTargetVersion != undefined) {\n\t\t\tif (definition.encodeCCsUsingTargetVersion !== true) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option encodeCCsUsingTargetVersion must be true or omitted`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.encodeCCsUsingTargetVersion =\n\t\t\t\tdefinition.encodeCCsUsingTargetVersion;\n\t\t}\n\n\t\tif (definition.forceNotificationIdleReset != undefined) {\n\t\t\tif (definition.forceNotificationIdleReset !== true) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option forceNotificationIdleReset must be true or omitted`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.forceNotificationIdleReset =\n\t\t\t\tdefinition.forceNotificationIdleReset;\n\t\t}\n\n\t\tif (definition.forceSceneControllerGroupCount != undefined) {\n\t\t\tif (typeof definition.forceSceneControllerGroupCount !== \"number\") {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option forceSceneControllerGroupCount must be a number!`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tdefinition.forceSceneControllerGroupCount < 0\n\t\t\t\t|| definition.forceSceneControllerGroupCount > 255\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option forceSceneControllerGroupCount must be between 0 and 255!`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.forceSceneControllerGroupCount =\n\t\t\t\tdefinition.forceSceneControllerGroupCount;\n\t\t}\n\n\t\tif (definition.mapBasicReport != undefined) {\n\t\t\tif (!isBasicReportMapping(definition.mapBasicReport)) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option mapBasicReport contains an invalid value`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.mapBasicReport = definition.mapBasicReport;\n\t\t}\n\n\t\tif (definition.mapBasicSet != undefined) {\n\t\t\tif (!isBasicSetMapping(definition.mapBasicSet)) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option mapBasicSet contains an invalid value`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.mapBasicSet = definition.mapBasicSet;\n\t\t}\n\n\t\tif (definition.preserveRootApplicationCCValueIDs != undefined) {\n\t\t\tif (definition.preserveRootApplicationCCValueIDs !== true) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option preserveRootApplicationCCValueIDs`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.preserveRootApplicationCCValueIDs =\n\t\t\t\tdefinition.preserveRootApplicationCCValueIDs;\n\t\t}\n\n\t\tif (definition.preserveEndpoints != undefined) {\n\t\t\tif (\n\t\t\t\tdefinition.preserveEndpoints !== \"*\"\n\t\t\t\t&& !(\n\t\t\t\t\tisArray(definition.preserveEndpoints)\n\t\t\t\t\t&& definition.preserveEndpoints.every(\n\t\t\t\t\t\t(d: any) =>\n\t\t\t\t\t\t\ttypeof d === \"number\" && d % 1 === 0 && d > 0,\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option preserveEndpoints must be \"*\" or an array of positive integers`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.preserveEndpoints = definition.preserveEndpoints;\n\t\t}\n\n\t\tif (definition.removeEndpoints != undefined) {\n\t\t\tif (\n\t\t\t\tdefinition.removeEndpoints !== \"*\"\n\t\t\t\t&& !(\n\t\t\t\t\tisArray(definition.removeEndpoints)\n\t\t\t\t\t&& definition.removeEndpoints.every(\n\t\t\t\t\t\t(d: any) =>\n\t\t\t\t\t\t\ttypeof d === \"number\" && d % 1 === 0 && d > 0,\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option removeEndpoints must be \"*\" or an array of positive integers`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.removeEndpoints = definition.removeEndpoints;\n\t\t}\n\n\t\tif (definition.skipConfigurationNameQuery != undefined) {\n\t\t\tif (definition.skipConfigurationNameQuery !== true) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option skipConfigurationNameQuery`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.skipConfigurationNameQuery =\n\t\t\t\tdefinition.skipConfigurationNameQuery;\n\t\t}\n\n\t\tif (definition.skipConfigurationInfoQuery != undefined) {\n\t\t\tif (definition.skipConfigurationInfoQuery !== true) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option skipConfigurationInfoQuery`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.skipConfigurationInfoQuery =\n\t\t\t\tdefinition.skipConfigurationInfoQuery;\n\t\t}\n\n\t\tif (definition.treatMultilevelSwitchSetAsEvent != undefined) {\n\t\t\tif (definition.treatMultilevelSwitchSetAsEvent !== true) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option treatMultilevelSwitchSetAsEvent`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.treatMultilevelSwitchSetAsEvent =\n\t\t\t\tdefinition.treatMultilevelSwitchSetAsEvent;\n\t\t}\n\n\t\tif (definition.treatSetAsReport != undefined) {\n\t\t\tif (\n\t\t\t\t!(isArray(definition.treatSetAsReport)\n\t\t\t\t\t&& definition.treatSetAsReport.every(\n\t\t\t\t\t\t(d: any) => typeof d === \"string\",\n\t\t\t\t\t))\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option treatSetAsReport must be an array of strings`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.treatSetAsReport = new Set(definition.treatSetAsReport);\n\t\t}\n\n\t\tif (definition.treatDestinationEndpointAsSource != undefined) {\n\t\t\tif (definition.treatDestinationEndpointAsSource !== true) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option treatDestinationEndpointAsSource`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.treatDestinationEndpointAsSource =\n\t\t\t\tdefinition.treatDestinationEndpointAsSource;\n\t\t}\n\n\t\tif (definition.useUTCInTimeParametersCC != undefined) {\n\t\t\tif (definition.useUTCInTimeParametersCC !== true) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option useUTCInTimeParametersCC must be true or omitted`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.useUTCInTimeParametersCC = definition.useUTCInTimeParametersCC;\n\t\t}\n\n\t\tif (definition.manualValueRefreshDelayMs != undefined) {\n\t\t\tif (typeof definition.manualValueRefreshDelayMs !== \"number\") {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option manualValueRefreshDelayMs must be a number!`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tdefinition.manualValueRefreshDelayMs % 1 !== 0\n\t\t\t\t|| definition.manualValueRefreshDelayMs < 0\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option manualValueRefreshDelayMs must be a non-negative integer!`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.manualValueRefreshDelayMs =\n\t\t\t\tdefinition.manualValueRefreshDelayMs;\n\t\t}\n\n\t\tif (definition.reportTimeout != undefined) {\n\t\t\tif (typeof definition.reportTimeout !== \"number\") {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option reportTimeout must be a number!`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tdefinition.reportTimeout % 1 !== 0\n\t\t\t\t|| definition.reportTimeout < 1000\n\t\t\t\t|| definition.reportTimeout > 10000\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option reportTimeout must be an integer between 1000 and 10000!`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.reportTimeout = definition.reportTimeout;\n\t\t}\n\n\t\tif (definition.mapRootReportsToEndpoint != undefined) {\n\t\t\tif (typeof definition.mapRootReportsToEndpoint !== \"number\") {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option mapRootReportsToEndpoint must be a number!`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tdefinition.mapRootReportsToEndpoint % 1 !== 0\n\t\t\t\t|| definition.mapRootReportsToEndpoint < 1\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option mapRootReportsToEndpoint must be a positive integer!`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.mapRootReportsToEndpoint = definition.mapRootReportsToEndpoint;\n\t\t}\n\n\t\tif (definition.overrideFloatEncoding != undefined) {\n\t\t\tif (!isObject(definition.overrideFloatEncoding)) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option overrideFloatEncoding`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.overrideFloatEncoding = {};\n\t\t\tif (\"precision\" in definition.overrideFloatEncoding) {\n\t\t\t\tif (\n\t\t\t\t\ttypeof definition.overrideFloatEncoding.precision\n\t\t\t\t\t\t!= \"number\"\n\t\t\t\t) {\n\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t`config/devices/${filename}:\ncompat option overrideFloatEncoding.precision must be a number!`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tdefinition.overrideFloatEncoding.precision % 1 !== 0\n\t\t\t\t\t|| definition.overrideFloatEncoding.precision < 0\n\t\t\t\t) {\n\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t`config/devices/${filename}:\ncompat option overrideFloatEncoding.precision must be a positive integer!`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tthis.overrideFloatEncoding.precision =\n\t\t\t\t\tdefinition.overrideFloatEncoding.precision;\n\t\t\t}\n\t\t\tif (\"size\" in definition.overrideFloatEncoding) {\n\t\t\t\tif (typeof definition.overrideFloatEncoding.size != \"number\") {\n\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t`config/devices/${filename}:\ncompat option overrideFloatEncoding.size must be a number!`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tdefinition.overrideFloatEncoding.size % 1 !== 0\n\t\t\t\t\t|| definition.overrideFloatEncoding.size < 1\n\t\t\t\t\t|| definition.overrideFloatEncoding.size > 4\n\t\t\t\t) {\n\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t`config/devices/${filename}:\ncompat option overrideFloatEncoding.size must be an integer between 1 and 4!`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tthis.overrideFloatEncoding.size =\n\t\t\t\t\tdefinition.overrideFloatEncoding.size;\n\t\t\t}\n\n\t\t\tif (Object.keys(this.overrideFloatEncoding).length === 0) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option overrideFloatEncoding: size and/or precision must be specified!`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (definition.commandClasses != undefined) {\n\t\t\tif (!isObject(definition.commandClasses)) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option commandClasses`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (definition.commandClasses.add != undefined) {\n\t\t\t\tif (!isObject(definition.commandClasses.add)) {\n\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t`config/devices/${filename}:\nerror in compat option commandClasses.add`,\n\t\t\t\t\t);\n\t\t\t\t} else if (\n\t\t\t\t\t!Object.values(definition.commandClasses.add).every((v) =>\n\t\t\t\t\t\tisObject(v)\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t`config/devices/${filename}:\nAll values in compat option commandClasses.add must be objects`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst addCCs = new Map<CommandClasses, CompatAddCC>();\n\t\t\t\tfor (\n\t\t\t\t\tconst [key, info] of Object.entries(\n\t\t\t\t\t\tdefinition.commandClasses.add,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\t// Parse the key into a CC ID\n\t\t\t\t\tconst cc = tryParseCCId(key);\n\t\t\t\t\tif (cc == undefined) {\n\t\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t\t`config/devices/${filename}:\nInvalid Command Class \"${key}\" specified in compat option commandClasses.add!`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\taddCCs.set(cc, new CompatAddCC(filename, info as any));\n\t\t\t\t}\n\t\t\t\tthis.addCCs = addCCs;\n\t\t\t}\n\n\t\t\tif (definition.commandClasses.remove != undefined) {\n\t\t\t\tif (!isObject(definition.commandClasses.remove)) {\n\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t`config/devices/${filename}:\nerror in compat option commandClasses.remove`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst removeCCs = new Map<\n\t\t\t\t\tCommandClasses,\n\t\t\t\t\t\"*\" | readonly number[]\n\t\t\t\t>();\n\t\t\t\tfor (\n\t\t\t\t\tconst [key, info] of Object.entries(\n\t\t\t\t\t\tdefinition.commandClasses.remove,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\t// Parse the key into a CC ID\n\t\t\t\t\tconst cc = tryParseCCId(key);\n\t\t\t\t\tif (cc == undefined) {\n\t\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t\t`config/devices/${filename}:\nInvalid Command Class \"${key}\" specified in compat option commandClasses.remove!`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (isObject(info) && \"endpoints\" in info) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tinfo.endpoints === \"*\"\n\t\t\t\t\t\t\t|| (isArray(info.endpoints)\n\t\t\t\t\t\t\t\t&& info.endpoints.every(\n\t\t\t\t\t\t\t\t\t(i) => typeof i === \"number\",\n\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveCCs.set(cc, info.endpoints as any);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t\t\t`config/devices/${filename}:\nCompat option commandClasses.remove has an invalid \"endpoints\" property. Only \"*\" and numeric arrays are allowed!`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t\t`config/devices/${filename}:\nAll values in compat option commandClasses.remove must be objects with an \"endpoints\" property!`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.removeCCs = removeCCs;\n\t\t\t}\n\t\t}\n\n\t\tif (definition.alarmMapping != undefined) {\n\t\t\tif (\n\t\t\t\t!isArray(definition.alarmMapping)\n\t\t\t\t|| !definition.alarmMapping.every((m: any) => isObject(m))\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option alarmMapping must be an array where all items are objects!`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis.alarmMapping = (definition.alarmMapping as any[]).map(\n\t\t\t\t(m, i) => new CompatMapAlarm(filename, m, i + 1),\n\t\t\t);\n\t\t}\n\n\t\tif (definition.remapNotifications != undefined) {\n\t\t\tif (\n\t\t\t\t!isArray(definition.remapNotifications)\n\t\t\t\t|| !definition.remapNotifications.every((m: any) => isObject(m))\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option remapNotifications must be an array where all items are objects!`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis.remapNotifications = (definition.remapNotifications as any[])\n\t\t\t\t.map(\n\t\t\t\t\t(m, i) => new CompatRemapNotification(filename, m, i + 1),\n\t\t\t\t);\n\t\t}\n\n\t\tif (definition.overrideQueries != undefined) {\n\t\t\tif (!isObject(definition.overrideQueries)) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ncompat option overrideQueries must be an object!`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis.overrideQueries = new CompatOverrideQueries(\n\t\t\t\tfilename,\n\t\t\t\tdefinition.overrideQueries,\n\t\t\t);\n\t\t}\n\t}\n\n\tpublic readonly alarmMapping?: readonly CompatMapAlarm[];\n\tpublic readonly remapNotifications?: readonly CompatRemapNotification[];\n\tpublic readonly addCCs?: ReadonlyMap<CommandClasses, CompatAddCC>;\n\tpublic readonly removeCCs?: ReadonlyMap<\n\t\tCommandClasses,\n\t\t\"*\" | readonly number[]\n\t>;\n\tpublic readonly disableAutoRefresh?: boolean;\n\tpublic readonly disableStrictEntryControlDataValidation?: boolean;\n\tpublic readonly disableStrictMeasurementValidation?: boolean;\n\tpublic readonly disableCallbackFunctionTypeCheck?: number[];\n\tpublic readonly encodeCCsUsingTargetVersion?: boolean;\n\tpublic readonly forceNotificationIdleReset?: boolean;\n\tpublic readonly forceSceneControllerGroupCount?: number;\n\tpublic readonly manualValueRefreshDelayMs?: number;\n\tpublic readonly mapRootReportsToEndpoint?: number;\n\tpublic readonly mapBasicReport?: BasicReportMapping;\n\tpublic readonly mapBasicSet?: BasicSetMapping;\n\tpublic readonly overrideFloatEncoding?: {\n\t\tsize?: number;\n\t\tprecision?: number;\n\t};\n\tpublic readonly overrideQueries?: CompatOverrideQueries;\n\tpublic readonly preserveRootApplicationCCValueIDs?: boolean;\n\tpublic readonly preserveEndpoints?: \"*\" | readonly number[];\n\tpublic readonly removeEndpoints?: \"*\" | readonly number[];\n\tpublic readonly reportTimeout?: number;\n\tpublic readonly skipConfigurationNameQuery?: boolean;\n\tpublic readonly skipConfigurationInfoQuery?: boolean;\n\tpublic readonly treatMultilevelSwitchSetAsEvent?: boolean;\n\tpublic readonly treatSetAsReport?: ReadonlySet<string>;\n\tpublic readonly treatDestinationEndpointAsSource?: boolean;\n\tpublic readonly useUTCInTimeParametersCC?: boolean;\n\tpublic readonly queryOnWakeup?: readonly [\n\t\tstring,\n\t\tstring,\n\t\t...(\n\t\t\t| string\n\t\t\t| number\n\t\t\t| boolean\n\t\t\t| Pick<ValueID, \"property\" | \"propertyKey\">\n\t\t)[],\n\t][];\n\n\tpublic readonly condition?: string | undefined;\n\n\tpublic evaluateCondition(deviceId?: DeviceID): CompatConfig | undefined {\n\t\tif (!conditionApplies(this, deviceId)) return;\n\t\tconst ret = pick(this, [\n\t\t\t\"alarmMapping\",\n\t\t\t\"remapNotifications\",\n\t\t\t\"addCCs\",\n\t\t\t\"removeCCs\",\n\t\t\t\"disableAutoRefresh\",\n\t\t\t\"disableCallbackFunctionTypeCheck\",\n\t\t\t\"disableStrictEntryControlDataValidation\",\n\t\t\t\"disableStrictMeasurementValidation\",\n\t\t\t\"encodeCCsUsingTargetVersion\",\n\t\t\t\"forceNotificationIdleReset\",\n\t\t\t\"forceSceneControllerGroupCount\",\n\t\t\t\"manualValueRefreshDelayMs\",\n\t\t\t\"mapBasicReport\",\n\t\t\t\"mapBasicSet\",\n\t\t\t\"mapRootReportsToEndpoint\",\n\t\t\t\"overrideFloatEncoding\",\n\t\t\t\"overrideQueries\",\n\t\t\t\"reportTimeout\",\n\t\t\t\"preserveRootApplicationCCValueIDs\",\n\t\t\t\"preserveEndpoints\",\n\t\t\t\"removeEndpoints\",\n\t\t\t\"skipConfigurationNameQuery\",\n\t\t\t\"skipConfigurationInfoQuery\",\n\t\t\t\"treatMultilevelSwitchSetAsEvent\",\n\t\t\t\"treatSetAsReport\",\n\t\t\t\"treatDestinationEndpointAsSource\",\n\t\t\t\"useUTCInTimeParametersCC\",\n\t\t\t\"queryOnWakeup\",\n\t\t]);\n\t\treturn stripUndefined(ret) as CompatConfig;\n\t}\n}\n\nexport type CompatConfig = Omit<\n\tConditionalCompatConfig,\n\t\"condition\" | \"evaluateCondition\"\n>;\n\nexport class CompatAddCC {\n\tpublic constructor(filename: string, definition: JSONObject) {\n\t\tconst endpoints = new Map<number, Partial<CommandClassInfo>>();\n\t\tconst parseEndpointInfo = (endpoint: number, info: JSONObject) => {\n\t\t\tconst parsed: Partial<CommandClassInfo> = {};\n\t\t\tif (info.isSupported != undefined) {\n\t\t\t\tif (typeof info.isSupported !== \"boolean\") {\n\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t`config/devices/${filename}:\nProperty isSupported in compat option commandClasses.add, endpoint ${endpoint} must be a boolean!`,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tparsed.isSupported = info.isSupported;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (info.isControlled != undefined) {\n\t\t\t\tif (typeof info.isControlled !== \"boolean\") {\n\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t`config/devices/${filename}:\nProperty isControlled in compat option commandClasses.add, endpoint ${endpoint} must be a boolean!`,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tparsed.isControlled = info.isControlled;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (info.secure != undefined) {\n\t\t\t\tif (typeof info.secure !== \"boolean\") {\n\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t`config/devices/${filename}:\nProperty secure in compat option commandClasses.add, endpoint ${endpoint} must be a boolean!`,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tparsed.secure = info.secure;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (info.version != undefined) {\n\t\t\t\tif (typeof info.version !== \"number\") {\n\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t`config/devices/${filename}:\nProperty version in compat option commandClasses.add, endpoint ${endpoint} must be a number!`,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tparsed.version = info.version;\n\t\t\t\t}\n\t\t\t}\n\t\t\tendpoints.set(endpoint, parsed);\n\t\t};\n\t\t// Parse root endpoint info if given\n\t\tif (\n\t\t\tdefinition.isSupported != undefined\n\t\t\t|| definition.isControlled != undefined\n\t\t\t|| definition.version != undefined\n\t\t\t|| definition.secure != undefined\n\t\t) {\n\t\t\t// We have info for the root endpoint\n\t\t\tparseEndpointInfo(0, definition);\n\t\t}\n\t\t// Parse all other endpoints\n\t\tif (isObject(definition.endpoints)) {\n\t\t\tif (\n\t\t\t\t!Object.keys(definition.endpoints).every((k) => /^\\d+$/.test(k))\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\ninvalid endpoint index in compat option commandClasses.add`,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tfor (const [ep, info] of Object.entries(definition.endpoints)) {\n\t\t\t\t\tparseEndpointInfo(parseInt(ep), info as any);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.endpoints = endpoints;\n\t}\n\n\tpublic readonly endpoints: ReadonlyMap<number, Partial<CommandClassInfo>>;\n}\n\nexport interface CompatMapAlarmFrom {\n\talarmType: number;\n\talarmLevel?: number;\n}\n\nexport interface CompatMapAlarmTo {\n\tnotificationType: number;\n\tnotificationEvent: number;\n\teventParameters?: Record<string, number | \"alarmLevel\">;\n}\n\nexport class CompatMapAlarm {\n\tpublic constructor(\n\t\tfilename: string,\n\t\tdefinition: JSONObject,\n\t\tindex: number,\n\t) {\n\t\tif (!isObject(definition.from)) {\n\t\t\tthrowInvalidConfig(\n\t\t\t\t\"devices\",\n\t\t\t\t`config/devices/${filename}:\nerror in compat option alarmMapping, mapping #${index}: property \"from\" must be an object!`,\n\t\t\t);\n\t\t} else {\n\t\t\tif (typeof definition.from.alarmType !== \"number\") {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option alarmMapping, mapping #${index}: property \"from.alarmType\" must be a number!`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tdefinition.from.alarmLevel != undefined\n\t\t\t\t&& typeof definition.from.alarmLevel !== \"number\"\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option alarmMapping, mapping #${index}: if property \"from.alarmLevel\" is given, it must be a number!`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (!isObject(definition.to)) {\n\t\t\tthrowInvalidConfig(\n\t\t\t\t\"devices\",\n\t\t\t\t`config/devices/${filename}:\nerror in compat option alarmMapping, mapping #${index}: property \"to\" must be an object!`,\n\t\t\t);\n\t\t} else {\n\t\t\tif (typeof definition.to.notificationType !== \"number\") {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option alarmMapping, mapping #${index}: property \"to.notificationType\" must be a number!`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (typeof definition.to.notificationEvent !== \"number\") {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option alarmMapping, mapping #${index}: property \"to.notificationEvent\" must be a number!`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (definition.to.eventParameters != undefined) {\n\t\t\t\tif (!isObject(definition.to.eventParameters)) {\n\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t`config/devices/${filename}:\nerror in compat option alarmMapping, mapping #${index}: property \"to.eventParameters\" must be an object!`,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tfor (\n\t\t\t\t\t\tconst [key, val] of Object.entries(\n\t\t\t\t\t\t\tdefinition.to.eventParameters,\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (typeof val !== \"number\" && val !== \"alarmLevel\") {\n\t\t\t\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\t\t\t\"devices\",\n\t\t\t\t\t\t\t\t`config/devices/${filename}:\nerror in compat option alarmMapping, mapping #${index}: property \"to.eventParameters.${key}\" must be a number or the literal \"alarmLevel\"!`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.from = pick(definition.from, [\"alarmType\", \"alarmLevel\"]);\n\t\tthis.to = pick(definition.to, [\n\t\t\t\"notificationType\",\n\t\t\t\"notificationEvent\",\n\t\t\t\"eventParameters\",\n\t\t]);\n\t}\n\n\tpublic readonly from: CompatMapAlarmFrom;\n\tpublic readonly to: CompatMapAlarmTo;\n}\n\nexport interface CompatRemapNotificationFrom {\n\tnotificationType: number;\n\tnotificationEvent: number;\n}\n\nexport interface CompatRemapNotificationTo {\n\tnotificationType: number;\n\tnotificationEvent: number;\n}\n\nexport type CompatRemapNotificationAction =\n\t| { type: \"remap\"; to: CompatRemapNotificationTo }\n\t| { type: \"clear\"; targets: CompatRemapNotificationTo[] }\n\t| { type: \"idle\"; targets: CompatRemapNotificationTo[] };\n\nexport class CompatRemapNotification {\n\tpublic constructor(\n\t\tfilename: string,\n\t\tdefinition: JSONObject,\n\t\tindex: number,\n\t) {\n\t\tif (!isObject(definition.from)) {\n\t\t\tthrowInvalidConfig(\n\t\t\t\t\"devices\",\n\t\t\t\t`config/devices/${filename}:\nerror in compat option remapNotifications, mapping #${index}: property \"from\" must be an object!`,\n\t\t\t);\n\t\t} else {\n\t\t\tif (typeof definition.from.notificationType !== \"number\") {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option remapNotifications, mapping #${index}: property \"from.notificationType\" must be a number!`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (typeof definition.from.notificationEvent !== \"number\") {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option remapNotifications, mapping #${index}: property \"from.notificationEvent\" must be a number!`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tthis.from = pick(definition.from, [\n\t\t\t\"notificationType\",\n\t\t\t\"notificationEvent\",\n\t\t]);\n\n\t\tconst validateToObject = (obj: any, label: string) => {\n\t\t\tif (!isObject(obj)) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option remapNotifications, mapping #${index}: ${label} must be an object!`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (typeof obj.notificationType !== \"number\") {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option remapNotifications, mapping #${index}: ${label} must have a numeric \"notificationType\"!`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (typeof obj.notificationEvent !== \"number\") {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option remapNotifications, mapping #${index}: ${label} must have a numeric \"notificationEvent\"!`,\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\n\t\tconst validateTargetArray = (arr: any, label: string): void => {\n\t\t\tif (!isArray(arr) || arr.length === 0) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nerror in compat option remapNotifications, mapping #${index}: property \"${label}\" must be a non-empty array of objects!`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tfor (let j = 0; j < arr.length; j++) {\n\t\t\t\tvalidateToObject(\n\t\t\t\t\tarr[j],\n\t\t\t\t\t`\"${label}[${j}]\"`,\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\n\t\tif (definition.to != undefined) {\n\t\t\tvalidateToObject(definition.to, `property \"to\"`);\n\t\t\tthis.action = {\n\t\t\t\ttype: \"remap\",\n\t\t\t\tto: pick(definition.to, [\n\t\t\t\t\t\"notificationType\",\n\t\t\t\t\t\"notificationEvent\",\n\t\t\t\t]),\n\t\t\t};\n\t\t} else if (definition.clear != undefined) {\n\t\t\tvalidateTargetArray(definition.clear, \"clear\");\n\t\t\tthis.action = {\n\t\t\t\ttype: \"clear\",\n\t\t\t\ttargets: (definition.clear as any[]).map((target) =>\n\t\t\t\t\tpick(target, [\"notificationType\", \"notificationEvent\"])\n\t\t\t\t),\n\t\t\t};\n\t\t} else if (definition.idle != undefined) {\n\t\t\tvalidateTargetArray(definition.idle, \"idle\");\n\t\t\tthis.action = {\n\t\t\t\ttype: \"idle\",\n\t\t\t\ttargets: (definition.idle as any[]).map((target) =>\n\t\t\t\t\tpick(target, [\"notificationType\", \"notificationEvent\"])\n\t\t\t\t),\n\t\t\t};\n\t\t} else {\n\t\t\tthrowInvalidConfig(\n\t\t\t\t\"devices\",\n\t\t\t\t`config/devices/${filename}:\nerror in compat option remapNotifications, mapping #${index}: exactly one of \"to\", \"clear\", or \"idle\" must be defined!`,\n\t\t\t);\n\t\t}\n\t}\n\n\tpublic readonly from: CompatRemapNotificationFrom;\n\tpublic readonly action: CompatRemapNotificationAction;\n}\n\nexport class CompatOverrideQueries {\n\tpublic constructor(filename: string, definition: JSONObject) {\n\t\tconst overrides = new Map();\n\n\t\tconst parseOverride = (\n\t\t\tcc: CommandClasses,\n\t\t\tinfo: JSONObject,\n\t\t): CompatOverrideQuery => {\n\t\t\tif (typeof info.method !== \"string\") {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nProperty \"method\" in compat option overrideQueries, CC ${\n\t\t\t\t\t\tgetCCName(\n\t\t\t\t\t\t\tcc,\n\t\t\t\t\t\t)\n\t\t\t\t\t} must be a string!`,\n\t\t\t\t);\n\t\t\t} else if (\n\t\t\t\tinfo.matchArgs != undefined\n\t\t\t\t&& !isArray(info.matchArgs)\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nProperty \"matchArgs\" in compat option overrideQueries, CC ${\n\t\t\t\t\t\tgetCCName(\n\t\t\t\t\t\t\tcc,\n\t\t\t\t\t\t)\n\t\t\t\t\t} must be an array!`,\n\t\t\t\t);\n\t\t\t} else if (!(\"result\" in info)) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nProperty \"result\" is missing in in compat option overrideQueries, CC ${\n\t\t\t\t\t\tgetCCName(\n\t\t\t\t\t\t\tcc,\n\t\t\t\t\t\t)\n\t\t\t\t\t}!`,\n\t\t\t\t);\n\t\t\t} else if (\n\t\t\t\tinfo.endpoint != undefined\n\t\t\t\t&& typeof info.endpoint !== \"number\"\n\t\t\t) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nProperty \"endpoint\" in compat option overrideQueries, CC ${\n\t\t\t\t\t\tgetCCName(\n\t\t\t\t\t\t\tcc,\n\t\t\t\t\t\t)\n\t\t\t\t\t} must be a number!`,\n\t\t\t\t);\n\t\t\t} else if (info.persistValues && !isObject(info.persistValues)) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nProperty \"persistValues\" in compat option overrideQueries, CC ${\n\t\t\t\t\t\tgetCCName(\n\t\t\t\t\t\t\tcc,\n\t\t\t\t\t\t)\n\t\t\t\t\t} must be an object!`,\n\t\t\t\t);\n\t\t\t} else if (info.extendMetadata && !isObject(info.extendMetadata)) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nProperty \"extendMetadata\" in compat option overrideQueries, CC ${\n\t\t\t\t\t\tgetCCName(\n\t\t\t\t\t\t\tcc,\n\t\t\t\t\t\t)\n\t\t\t\t\t} must be an object!`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tendpoint: info.endpoint,\n\t\t\t\tmethod: info.method,\n\t\t\t\tmatchArgs: info.matchArgs,\n\t\t\t\tresult: info.result,\n\t\t\t\tpersistValues: info.persistValues,\n\t\t\t\textendMetadata: info.extendMetadata,\n\t\t\t};\n\t\t};\n\n\t\tfor (const [key, value] of Object.entries(definition)) {\n\t\t\t// Parse the key into a CC ID\n\t\t\tconst cc = tryParseCCId(key);\n\t\t\tif (cc == undefined) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nInvalid Command Class \"${key}\" specified in compat option overrideQueries!`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tlet overrideDefinitions: any;\n\t\t\tif (isObject(value)) {\n\t\t\t\toverrideDefinitions = [value];\n\t\t\t} else if (!isArray(value)) {\n\t\t\t\tthrowInvalidConfig(\n\t\t\t\t\t\"devices\",\n\t\t\t\t\t`config/devices/${filename}:\nProperty \"${key}\" in compat option overrideQueries must be a single override object or an array thereof!`,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\toverrideDefinitions = value;\n\t\t\t}\n\n\t\t\toverrides.set(\n\t\t\t\tcc,\n\t\t\t\toverrideDefinitions.map((info: any) => parseOverride(cc, info)),\n\t\t\t);\n\t\t}\n\n\t\tthis.overrides = overrides;\n\t}\n\n\t// CC -> endpoint -> queries\n\tprivate readonly overrides: ReadonlyMap<\n\t\tCommandClasses,\n\t\tCompatOverrideQuery[]\n\t>;\n\n\tpublic hasOverride(ccId: CommandClasses): boolean {\n\t\treturn this.overrides.has(ccId);\n\t}\n\n\tpublic matchOverride(\n\t\tcc: CommandClasses,\n\t\tendpointIndex: number,\n\t\tmethod: string,\n\t\targs: any[],\n\t):\n\t\t| Pick<\n\t\t\tCompatOverrideQuery,\n\t\t\t\"result\" | \"persistValues\" | \"extendMetadata\"\n\t\t>\n\t\t| undefined\n\t{\n\t\tconst queries = this.overrides.get(cc);\n\t\tif (!queries) return undefined;\n\t\tfor (const query of queries) {\n\t\t\tif ((query.endpoint ?? 0) !== endpointIndex) continue;\n\t\t\tif (query.method !== method) continue;\n\t\t\tif (query.matchArgs) {\n\t\t\t\tif (query.matchArgs.length !== args.length) continue;\n\t\t\t\tif (!query.matchArgs.every((arg, i) => arg === args[i])) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn pick(query, [\"result\", \"persistValues\", \"extendMetadata\"]);\n\t\t}\n\t}\n}\n\nexport interface CompatOverrideQuery {\n\t/** Which endpoint this override is for */\n\tendpoint?: number;\n\t/** For which API method this override is defined */\n\tmethod: string;\n\t/**\n\t * An array of method arguments that needs to match for this override to apply.\n\t * If `undefined`, no matching is performed.\n\t */\n\tmatchArgs?: any[];\n\t/** The result to return from the API call */\n\tresult: any;\n\t/**\n\t * An optional dictionary of values that will be persisted in the cache.\n\t * The keys are properties of the `...CCValues` objects that belong to this CC.\n\t */\n\tpersistValues?: Record<string, any>;\n\t/**\n\t * An optional dictionary of value metadata that will be persisted in the cache.\n\t * The keys are properties of the `...CCValues` objects that belong to this CC.\n\t * The given metadata will be merged with statically defined value metadata.\n\t */\n\textendMetadata?: Record<string, any>;\n}\n\nconst basicReportMappings = [\n\tfalse,\n\t\"auto\",\n\t\"Binary Sensor\",\n] as const;\n\n/**\n * Defines how to handle a received Basic CC Report:\n * - \"auto\": map it to a different CC based on the device type, with fallback to `false`\n * - false: treat the report verbatim without mapping\n * - \"Binary Sensor\": treat it as a Binary Sensor CC Report, regardless of device type\n */\nexport type BasicReportMapping = typeof basicReportMappings[number];\n\nfunction isBasicReportMapping(v: unknown): v is BasicReportMapping {\n\treturn basicReportMappings.includes(v as any);\n}\n\nconst basicSetMappings = [\n\t\"event\",\n\t\"report\",\n\t\"auto\",\n\t\"Binary Sensor\",\n] as const;\n\n/**\n * Defines how to handle a received Basic CC Set:\n * - \"event\": emit an event for the special `event` CC value\n * - \"report\": treat it as as a Basic CC Report (default)\n * - \"auto\": map it to a different CC based on the device type, with fallback to Basic CC report\n * - \"Binary Sensor\": treat it as a Binary Sensor CC Report, regardless of device type\n */\nexport type BasicSetMapping = typeof basicSetMappings[number];\n\nfunction isBasicSetMapping(v: unknown): v is BasicSetMapping {\n\treturn basicSetMappings.includes(v as any);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,2 +1,2 @@
1
- export declare const PACKAGE_VERSION = "15.21.0";
1
+ export declare const PACKAGE_VERSION = "15.22.0";
2
2
  //# sourceMappingURL=_version.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // This file is auto-generated by the codegen maintenance script
2
- export const PACKAGE_VERSION = "15.21.0";
2
+ export const PACKAGE_VERSION = "15.22.0";
3
3
  //# sourceMappingURL=_version.js.map
@@ -6,6 +6,7 @@ export declare class ConditionalCompatConfig implements ConditionalItem<CompatCo
6
6
  private valueIdRegex;
7
7
  constructor(filename: string, definition: JSONObject);
8
8
  readonly alarmMapping?: readonly CompatMapAlarm[];
9
+ readonly remapNotifications?: readonly CompatRemapNotification[];
9
10
  readonly addCCs?: ReadonlyMap<CommandClasses, CompatAddCC>;
10
11
  readonly removeCCs?: ReadonlyMap<CommandClasses, "*" | readonly number[]>;
11
12
  readonly disableAutoRefresh?: boolean;
@@ -61,6 +62,29 @@ export declare class CompatMapAlarm {
61
62
  readonly from: CompatMapAlarmFrom;
62
63
  readonly to: CompatMapAlarmTo;
63
64
  }
65
+ export interface CompatRemapNotificationFrom {
66
+ notificationType: number;
67
+ notificationEvent: number;
68
+ }
69
+ export interface CompatRemapNotificationTo {
70
+ notificationType: number;
71
+ notificationEvent: number;
72
+ }
73
+ export type CompatRemapNotificationAction = {
74
+ type: "remap";
75
+ to: CompatRemapNotificationTo;
76
+ } | {
77
+ type: "clear";
78
+ targets: CompatRemapNotificationTo[];
79
+ } | {
80
+ type: "idle";
81
+ targets: CompatRemapNotificationTo[];
82
+ };
83
+ export declare class CompatRemapNotification {
84
+ constructor(filename: string, definition: JSONObject, index: number);
85
+ readonly from: CompatRemapNotificationFrom;
86
+ readonly action: CompatRemapNotificationAction;
87
+ }
64
88
  export declare class CompatOverrideQueries {
65
89
  constructor(filename: string, definition: JSONObject);
66
90
  private readonly overrides;
@@ -1 +1 @@
1
- {"version":3,"file":"CompatConfig.d.ts","sourceRoot":"","sources":["../../../src/devices/CompatConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CompatConfig.d.ts","sourceRoot":"","sources":["../../../src/devices/CompatConfig.ts"],"names":[],"mappings":"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"}
@@ -325,6 +325,15 @@ compat option alarmMapping must be an array where all items are objects!`);
325
325
  }
326
326
  this.alarmMapping = definition.alarmMapping.map((m, i) => new CompatMapAlarm(filename, m, i + 1));
327
327
  }
328
+ if (definition.remapNotifications != undefined) {
329
+ if (!isArray(definition.remapNotifications)
330
+ || !definition.remapNotifications.every((m) => isObject(m))) {
331
+ throwInvalidConfig("devices", `config/devices/${filename}:
332
+ compat option remapNotifications must be an array where all items are objects!`);
333
+ }
334
+ this.remapNotifications = definition.remapNotifications
335
+ .map((m, i) => new CompatRemapNotification(filename, m, i + 1));
336
+ }
328
337
  if (definition.overrideQueries != undefined) {
329
338
  if (!isObject(definition.overrideQueries)) {
330
339
  throwInvalidConfig("devices", `config/devices/${filename}:
@@ -334,6 +343,7 @@ compat option overrideQueries must be an object!`);
334
343
  }
335
344
  }
336
345
  alarmMapping;
346
+ remapNotifications;
337
347
  addCCs;
338
348
  removeCCs;
339
349
  disableAutoRefresh;
@@ -366,6 +376,7 @@ compat option overrideQueries must be an object!`);
366
376
  return;
367
377
  const ret = pick(this, [
368
378
  "alarmMapping",
379
+ "remapNotifications",
369
380
  "addCCs",
370
381
  "removeCCs",
371
382
  "disableAutoRefresh",
@@ -518,6 +529,81 @@ error in compat option alarmMapping, mapping #${index}: property "to.eventParame
518
529
  from;
519
530
  to;
520
531
  }
532
+ export class CompatRemapNotification {
533
+ constructor(filename, definition, index) {
534
+ if (!isObject(definition.from)) {
535
+ throwInvalidConfig("devices", `config/devices/${filename}:
536
+ error in compat option remapNotifications, mapping #${index}: property "from" must be an object!`);
537
+ }
538
+ else {
539
+ if (typeof definition.from.notificationType !== "number") {
540
+ throwInvalidConfig("devices", `config/devices/${filename}:
541
+ error in compat option remapNotifications, mapping #${index}: property "from.notificationType" must be a number!`);
542
+ }
543
+ if (typeof definition.from.notificationEvent !== "number") {
544
+ throwInvalidConfig("devices", `config/devices/${filename}:
545
+ error in compat option remapNotifications, mapping #${index}: property "from.notificationEvent" must be a number!`);
546
+ }
547
+ }
548
+ this.from = pick(definition.from, [
549
+ "notificationType",
550
+ "notificationEvent",
551
+ ]);
552
+ const validateToObject = (obj, label) => {
553
+ if (!isObject(obj)) {
554
+ throwInvalidConfig("devices", `config/devices/${filename}:
555
+ error in compat option remapNotifications, mapping #${index}: ${label} must be an object!`);
556
+ }
557
+ if (typeof obj.notificationType !== "number") {
558
+ throwInvalidConfig("devices", `config/devices/${filename}:
559
+ error in compat option remapNotifications, mapping #${index}: ${label} must have a numeric "notificationType"!`);
560
+ }
561
+ if (typeof obj.notificationEvent !== "number") {
562
+ throwInvalidConfig("devices", `config/devices/${filename}:
563
+ error in compat option remapNotifications, mapping #${index}: ${label} must have a numeric "notificationEvent"!`);
564
+ }
565
+ };
566
+ const validateTargetArray = (arr, label) => {
567
+ if (!isArray(arr) || arr.length === 0) {
568
+ throwInvalidConfig("devices", `config/devices/${filename}:
569
+ error in compat option remapNotifications, mapping #${index}: property "${label}" must be a non-empty array of objects!`);
570
+ }
571
+ for (let j = 0; j < arr.length; j++) {
572
+ validateToObject(arr[j], `"${label}[${j}]"`);
573
+ }
574
+ };
575
+ if (definition.to != undefined) {
576
+ validateToObject(definition.to, `property "to"`);
577
+ this.action = {
578
+ type: "remap",
579
+ to: pick(definition.to, [
580
+ "notificationType",
581
+ "notificationEvent",
582
+ ]),
583
+ };
584
+ }
585
+ else if (definition.clear != undefined) {
586
+ validateTargetArray(definition.clear, "clear");
587
+ this.action = {
588
+ type: "clear",
589
+ targets: definition.clear.map((target) => pick(target, ["notificationType", "notificationEvent"])),
590
+ };
591
+ }
592
+ else if (definition.idle != undefined) {
593
+ validateTargetArray(definition.idle, "idle");
594
+ this.action = {
595
+ type: "idle",
596
+ targets: definition.idle.map((target) => pick(target, ["notificationType", "notificationEvent"])),
597
+ };
598
+ }
599
+ else {
600
+ throwInvalidConfig("devices", `config/devices/${filename}:
601
+ error in compat option remapNotifications, mapping #${index}: exactly one of "to", "clear", or "idle" must be defined!`);
602
+ }
603
+ }
604
+ from;
605
+ action;
606
+ }
521
607
  export class CompatOverrideQueries {
522
608
  constructor(filename, definition) {
523
609
  const overrides = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"CompatConfig.js","sourceRoot":"","sources":["../../../src/devices/CompatConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CompatConfig.js","sourceRoot":"","sources":["../../../src/devices/CompatConfig.ts"],"names":[],"mappings":"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"}
@@ -53,6 +53,71 @@
53
53
  "defaultValue": 255
54
54
  }
55
55
  ],
56
+ "compat": {
57
+ "remapNotifications": [
58
+ // This device uses manual (un)lock operation events to communicate the door handle state.
59
+ // This is not ideal, so we remap them to the Door handle state variable.
60
+
61
+ // Manual lock operation -> Door handle is closed
62
+ {
63
+ "from": {
64
+ "notificationType": 6,
65
+ "notificationEvent": 1
66
+ },
67
+ "to": {
68
+ "notificationType": 6,
69
+ "notificationEvent": 25
70
+ }
71
+ },
72
+ // Manual unlock operation -> Door handle is open
73
+ {
74
+ "from": {
75
+ "notificationType": 6,
76
+ "notificationEvent": 2
77
+ },
78
+ "to": {
79
+ "notificationType": 6,
80
+ "notificationEvent": 24
81
+ }
82
+ },
83
+ // Manual not fully locked operation -> Clear door handle state (unknown)
84
+ {
85
+ "from": {
86
+ "notificationType": 6,
87
+ "notificationEvent": 7
88
+ },
89
+ "clear": [
90
+ {
91
+ "notificationType": 6,
92
+ "notificationEvent": 24
93
+ },
94
+ {
95
+ "notificationType": 6,
96
+ "notificationEvent": 25
97
+ }
98
+ ]
99
+ },
100
+ // =================================================================
101
+ // Also it uses the unknown notification event (0xfe) to indicate an unknown
102
+ // Door/window state:
103
+ {
104
+ "from": {
105
+ "notificationType": 6,
106
+ "notificationEvent": 254
107
+ },
108
+ "clear": [
109
+ {
110
+ "notificationType": 6,
111
+ "notificationEvent": 22
112
+ },
113
+ {
114
+ "notificationType": 6,
115
+ "notificationEvent": 23
116
+ }
117
+ ]
118
+ }
119
+ ]
120
+ },
56
121
  "metadata": {
57
122
  "inclusion": "To add or remove the eHandle ConnectSense for windows in the\nsmart home central control unit, proceed as follows:\n6\n6\n8173\nferTor 13\nadtallendorf\n8\nmax.\n360°\n7\n29\nEnglish\n1. Follow the instructions of your smart home central control unit\nand start the process of adding or removing.\n2. Using the Allen key, press the hidden button in the recess on the\nback of the wireless unit three times in quick succession (within\none second), (steps 3-4).\n3. The successful start and the progress of adding (Add) or removing\n(Remove) e can be tracked in your smart home central\ncontrol unit.\n4. Your smart home central control unit may ask you to enter a\nfive-digit PIN number. You will find this on the sticker with QR\ncode. It is the underlined sequence of numbers.\n5. A successful addition (Add) is displayed in your smart home\ncentral control unit.\n6. The handle signals that it is ready for calibration by continuous\nrapid flashing of the green LED.\n7. Follow the further instructions for installation (Chapter 11) and\ncalibration (Chapter 6.2)",
58
123
  "exclusion": "To add or remove the eHandle ConnectSense for windows in the\nsmart home central control unit, proceed as follows:\n6\n6\n8173\nferTor 13\nadtallendorf\n8\nmax.\n360°\n7\n29\nEnglish\n1. Follow the instructions of your smart home central control unit\nand start the process of adding or removing.\n2. Using the Allen key, press the hidden button in the recess on the\nback of the wireless unit three times in quick succession (within\none second), (steps 3-4).\n3. The successful start and the progress of adding (Add) or removing\n(Remove) e can be tracked in your smart home central\ncontrol unit.\n4. Your smart home central control unit may ask you to enter a\nfive-digit PIN number. You will find this on the sticker with QR\ncode. It is the underlined sequence of numbers.\n5. A successful addition (Add) is displayed in your smart home\ncentral control unit.\n6. The handle signals that it is ready for calibration by continuous\nrapid flashing of the green LED.\n7. Follow the further instructions for installation (Chapter 11) and\ncalibration (Chapter 6.2)",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zwave-js/config",
3
- "version": "15.21.0",
3
+ "version": "15.22.0",
4
4
  "description": "zwave-js: configuration files",
5
5
  "keywords": [],
6
6
  "publishConfig": {
@@ -79,8 +79,8 @@
79
79
  "test:dirty": "tsx ../maintenance/src/resolveDirtyTests.ts --run"
80
80
  },
81
81
  "dependencies": {
82
- "@zwave-js/core": "15.21.0",
83
- "@zwave-js/shared": "15.21.0",
82
+ "@zwave-js/core": "15.22.0",
83
+ "@zwave-js/shared": "15.22.0",
84
84
  "alcalzone-shared": "^5.0.0",
85
85
  "ansi-colors": "^4.1.3",
86
86
  "eslint": "^9.39.2",
@@ -88,19 +88,20 @@
88
88
  "json5": "^2.2.3",
89
89
  "pathe": "^2.0.3",
90
90
  "semver": "^7.7.2",
91
+ "tslib": "^2.8.1",
91
92
  "winston": "^3.18.3"
92
93
  },
93
94
  "devDependencies": {
94
95
  "@alcalzone/esm2cjs": "^1.4.2",
95
- "@microsoft/api-extractor": "^7.55.1",
96
+ "@microsoft/api-extractor": "^7.57.6",
96
97
  "@types/js-levenshtein": "^1.1.3",
97
98
  "@types/json-logic-js": "^2.0.8",
98
- "@types/node": "^20.19.23",
99
+ "@types/node": "^20.19.35",
99
100
  "@types/semver": "^7.7.1",
100
101
  "@types/sinon": "^21.0.0",
101
102
  "@types/xml2js": "^0.4.14",
102
103
  "@types/yargs": "^17.0.34",
103
- "@zwave-js/maintenance": "15.21.0",
104
+ "@zwave-js/maintenance": "15.22.0",
104
105
  "comment-json": "^4.3.0",
105
106
  "del-cli": "^7.0.0",
106
107
  "es-main": "^1.4.0",