@zwave-js/config 9.0.3 → 9.0.4
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.
- package/build/CompatConfig.d.ts +2 -2
- package/build/CompatConfig.d.ts.map +1 -1
- package/build/CompatConfig.js +51 -51
- package/build/CompatConfig.js.map +1 -1
- package/build/ConfigManager.d.ts.map +1 -1
- package/build/ConfigManager.js +239 -7
- package/build/ConfigManager.js.map +1 -1
- package/build/DeviceClasses.d.ts +2 -2
- package/build/DeviceClasses.d.ts.map +1 -1
- package/build/DeviceClasses.js +30 -82
- package/build/DeviceClasses.js.map +1 -1
- package/build/Devices.d.ts.map +1 -1
- package/build/Devices.js +44 -43
- package/build/Devices.js.map +1 -1
- package/build/Indicators.d.ts +2 -2
- package/build/Indicators.d.ts.map +1 -1
- package/build/Indicators.js +9 -64
- package/build/Indicators.js.map +1 -1
- package/build/JsonTemplate.js +10 -10
- package/build/JsonTemplate.js.map +1 -1
- package/build/Logger.d.ts +2 -3
- package/build/Logger.d.ts.map +1 -1
- package/build/Logger.js +4 -5
- package/build/Logger.js.map +1 -1
- package/build/Logger_safe.d.ts +5 -0
- package/build/Logger_safe.d.ts.map +1 -0
- package/build/Logger_safe.js +6 -0
- package/build/Logger_safe.js.map +1 -0
- package/build/Manufacturers.d.ts.map +1 -1
- package/build/Manufacturers.js +6 -5
- package/build/Manufacturers.js.map +1 -1
- package/build/Meters.d.ts +1 -1
- package/build/Meters.d.ts.map +1 -1
- package/build/Meters.js +7 -46
- package/build/Meters.js.map +1 -1
- package/build/Notifications.d.ts +1 -1
- package/build/Notifications.d.ts.map +1 -1
- package/build/Notifications.js +15 -54
- package/build/Notifications.js.map +1 -1
- package/build/Scales.d.ts +1 -1
- package/build/Scales.d.ts.map +1 -1
- package/build/Scales.js +6 -55
- package/build/Scales.js.map +1 -1
- package/build/SensorTypes.d.ts +1 -1
- package/build/SensorTypes.d.ts.map +1 -1
- package/build/SensorTypes.js +9 -47
- package/build/SensorTypes.js.map +1 -1
- package/build/index.d.ts +1 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -1
- package/build/index.js.map +1 -1
- package/build/index_safe.d.ts +8 -0
- package/build/index_safe.d.ts.map +1 -0
- package/build/index_safe.js +25 -0
- package/build/index_safe.js.map +1 -0
- package/build/utils.d.ts +0 -4
- package/build/utils.d.ts.map +1 -1
- package/build/utils.js +1 -10
- package/build/utils.js.map +1 -1
- package/build/utils_safe.d.ts +5 -0
- package/build/utils_safe.d.ts.map +1 -0
- package/build/utils_safe.js +13 -0
- package/build/utils_safe.js.map +1 -0
- package/package.json +16 -4
package/build/Indicators.js
CHANGED
|
@@ -1,91 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.IndicatorProperty =
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const objects_1 = require("alcalzone-shared/objects");
|
|
10
|
-
const typeguards_1 = require("alcalzone-shared/typeguards");
|
|
11
|
-
const fs_extra_1 = require("fs-extra");
|
|
12
|
-
const json5_1 = __importDefault(require("json5"));
|
|
13
|
-
const path_1 = __importDefault(require("path"));
|
|
14
|
-
const utils_1 = require("./utils");
|
|
15
|
-
/** @internal */
|
|
16
|
-
async function loadIndicatorsInternal(externalConfig) {
|
|
17
|
-
const indicatorsConfigPath = path_1.default.join((externalConfig && (0, utils_1.externalConfigDir)()) || utils_1.configDir, "indicators.json");
|
|
18
|
-
if (!(await (0, fs_extra_1.pathExists)(indicatorsConfigPath))) {
|
|
19
|
-
throw new core_1.ZWaveError("The config file does not exist!", core_1.ZWaveErrorCodes.Config_Invalid);
|
|
20
|
-
}
|
|
21
|
-
try {
|
|
22
|
-
const fileContents = await (0, fs_extra_1.readFile)(indicatorsConfigPath, "utf8");
|
|
23
|
-
const definition = json5_1.default.parse(fileContents);
|
|
24
|
-
if (!(0, typeguards_1.isObject)(definition)) {
|
|
25
|
-
(0, utils_1.throwInvalidConfig)("indicators", "the database is not an object");
|
|
26
|
-
}
|
|
27
|
-
if (!("indicators" in definition)) {
|
|
28
|
-
(0, utils_1.throwInvalidConfig)("indicators", `the required key "indicators" is missing`);
|
|
29
|
-
}
|
|
30
|
-
if (!("properties" in definition)) {
|
|
31
|
-
(0, utils_1.throwInvalidConfig)("indicators", `the required key "properties" is missing`);
|
|
32
|
-
}
|
|
33
|
-
const indicators = new Map();
|
|
34
|
-
for (const [id, label] of (0, objects_1.entries)(definition.indicators)) {
|
|
35
|
-
if (!utils_1.hexKeyRegexNDigits.test(id)) {
|
|
36
|
-
(0, utils_1.throwInvalidConfig)("indicators", `found invalid key "${id}" in "indicators". Indicators must have lowercase hexadecimal IDs.`);
|
|
37
|
-
}
|
|
38
|
-
const idNum = parseInt(id.slice(2), 16);
|
|
39
|
-
indicators.set(idNum, label);
|
|
40
|
-
}
|
|
41
|
-
const properties = new Map();
|
|
42
|
-
for (const [id, propDefinition] of (0, objects_1.entries)(definition.properties)) {
|
|
43
|
-
if (!utils_1.hexKeyRegexNDigits.test(id)) {
|
|
44
|
-
(0, utils_1.throwInvalidConfig)("indicators", `found invalid key "${id}" in "properties". Indicator properties must have lowercase hexadecimal IDs.`);
|
|
45
|
-
}
|
|
46
|
-
const idNum = parseInt(id.slice(2), 16);
|
|
47
|
-
properties.set(idNum, new IndicatorProperty(idNum, propDefinition));
|
|
48
|
-
}
|
|
49
|
-
return { indicators, properties };
|
|
50
|
-
}
|
|
51
|
-
catch (e) {
|
|
52
|
-
if ((0, core_1.isZWaveError)(e)) {
|
|
53
|
-
throw e;
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
(0, utils_1.throwInvalidConfig)("indicators");
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
exports.loadIndicatorsInternal = loadIndicatorsInternal;
|
|
3
|
+
exports.IndicatorProperty = void 0;
|
|
4
|
+
const safe_1 = require("@zwave-js/shared/safe");
|
|
5
|
+
const utils_safe_1 = require("./utils_safe");
|
|
61
6
|
class IndicatorProperty {
|
|
62
7
|
constructor(id, definition) {
|
|
63
8
|
this.id = id;
|
|
64
9
|
if (typeof definition.label !== "string") {
|
|
65
|
-
(0,
|
|
10
|
+
(0, utils_safe_1.throwInvalidConfig)("indicators", `The label for property ${(0, safe_1.num2hex)(id)} is not a string!`);
|
|
66
11
|
}
|
|
67
12
|
this.label = definition.label;
|
|
68
13
|
if (definition.description != undefined &&
|
|
69
14
|
typeof definition.description !== "string") {
|
|
70
|
-
(0,
|
|
15
|
+
(0, utils_safe_1.throwInvalidConfig)("indicators", `The description for property ${(0, safe_1.num2hex)(id)} is not a string!`);
|
|
71
16
|
}
|
|
72
17
|
this.description = definition.description;
|
|
73
18
|
if (definition.min != undefined && typeof definition.min !== "number") {
|
|
74
|
-
(0,
|
|
19
|
+
(0, utils_safe_1.throwInvalidConfig)("indicators", `The minimum value for property ${(0, safe_1.num2hex)(id)} is not a number!`);
|
|
75
20
|
}
|
|
76
21
|
this.min = definition.min;
|
|
77
22
|
if (definition.max != undefined && typeof definition.max !== "number") {
|
|
78
|
-
(0,
|
|
23
|
+
(0, utils_safe_1.throwInvalidConfig)("indicators", `The maximum value for property ${(0, safe_1.num2hex)(id)} is not a number!`);
|
|
79
24
|
}
|
|
80
25
|
this.max = definition.max;
|
|
81
26
|
if (definition.readonly != undefined &&
|
|
82
27
|
typeof definition.readonly !== "boolean") {
|
|
83
|
-
(0,
|
|
28
|
+
(0, utils_safe_1.throwInvalidConfig)("indicators", `readonly for property ${(0, safe_1.num2hex)(id)} is not a boolean!`);
|
|
84
29
|
}
|
|
85
30
|
this.readonly = definition.readonly;
|
|
86
31
|
if (definition.type != undefined &&
|
|
87
32
|
typeof definition.type !== "string") {
|
|
88
|
-
(0,
|
|
33
|
+
(0, utils_safe_1.throwInvalidConfig)("indicators", `type for property ${(0, safe_1.num2hex)(id)} is not a string!`);
|
|
89
34
|
}
|
|
90
35
|
// TODO: Validate that the value is ok
|
|
91
36
|
this.type = definition.type;
|
package/build/Indicators.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Indicators.js","sourceRoot":"","sources":["../src/Indicators.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Indicators.js","sourceRoot":"","sources":["../src/Indicators.ts"],"names":[],"mappings":";;;AACA,gDAA4D;AAC5D,6CAAkD;AAKlD,MAAa,iBAAiB;IAC7B,YAAmB,EAAU,EAAE,UAAsB;QACpD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QAEb,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,QAAQ,EAAE;YACzC,IAAA,+BAAkB,EACjB,YAAY,EACZ,0BAA0B,IAAA,cAAO,EAAC,EAAE,CAAC,mBAAmB,CACxD,CAAC;SACF;QACD,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAE9B,IACC,UAAU,CAAC,WAAW,IAAI,SAAS;YACnC,OAAO,UAAU,CAAC,WAAW,KAAK,QAAQ,EACzC;YACD,IAAA,+BAAkB,EACjB,YAAY,EACZ,gCAAgC,IAAA,cAAO,EAAC,EAAE,CAAC,mBAAmB,CAC9D,CAAC;SACF;QACD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;QAE1C,IAAI,UAAU,CAAC,GAAG,IAAI,SAAS,IAAI,OAAO,UAAU,CAAC,GAAG,KAAK,QAAQ,EAAE;YACtE,IAAA,+BAAkB,EACjB,YAAY,EACZ,kCAAkC,IAAA,cAAO,EACxC,EAAE,CACF,mBAAmB,CACpB,CAAC;SACF;QACD,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;QAE1B,IAAI,UAAU,CAAC,GAAG,IAAI,SAAS,IAAI,OAAO,UAAU,CAAC,GAAG,KAAK,QAAQ,EAAE;YACtE,IAAA,+BAAkB,EACjB,YAAY,EACZ,kCAAkC,IAAA,cAAO,EACxC,EAAE,CACF,mBAAmB,CACpB,CAAC;SACF;QACD,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;QAE1B,IACC,UAAU,CAAC,QAAQ,IAAI,SAAS;YAChC,OAAO,UAAU,CAAC,QAAQ,KAAK,SAAS,EACvC;YACD,IAAA,+BAAkB,EACjB,YAAY,EACZ,yBAAyB,IAAA,cAAO,EAAC,EAAE,CAAC,oBAAoB,CACxD,CAAC;SACF;QACD,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QAEpC,IACC,UAAU,CAAC,IAAI,IAAI,SAAS;YAC5B,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,EAClC;YACD,IAAA,+BAAkB,EACjB,YAAY,EACZ,qBAAqB,IAAA,cAAO,EAAC,EAAE,CAAC,mBAAmB,CACnD,CAAC;SACF;QACD,sCAAsC;QACtC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;IAC7B,CAAC;CASD;AA1ED,8CA0EC"}
|
package/build/JsonTemplate.js
CHANGED
|
@@ -27,8 +27,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.readJsonWithTemplate = exports.clearTemplateCache = void 0;
|
|
30
|
-
const
|
|
31
|
-
const
|
|
30
|
+
const safe_1 = require("@zwave-js/core/safe");
|
|
31
|
+
const safe_2 = require("@zwave-js/shared/safe");
|
|
32
32
|
const typeguards_1 = require("alcalzone-shared/typeguards");
|
|
33
33
|
const fs = __importStar(require("fs-extra"));
|
|
34
34
|
const json5_1 = __importDefault(require("json5"));
|
|
@@ -46,7 +46,7 @@ exports.clearTemplateCache = clearTemplateCache;
|
|
|
46
46
|
/** Parses a JSON file with $import keys and replaces them with the selected objects */
|
|
47
47
|
async function readJsonWithTemplate(filename, rootDir) {
|
|
48
48
|
if (!(await fs.pathExists(filename))) {
|
|
49
|
-
throw new
|
|
49
|
+
throw new safe_1.ZWaveError(`Could not open config file ${filename}: not found!`, safe_1.ZWaveErrorCodes.Config_NotFound);
|
|
50
50
|
}
|
|
51
51
|
// Try to use the cached versions of the template files to speed up the loading
|
|
52
52
|
const fileCache = new Map(templateCache);
|
|
@@ -62,10 +62,10 @@ async function readJsonWithTemplate(filename, rootDir) {
|
|
|
62
62
|
exports.readJsonWithTemplate = readJsonWithTemplate;
|
|
63
63
|
function assertImportSpecifier(val, source) {
|
|
64
64
|
if (typeof val !== "string") {
|
|
65
|
-
throw new
|
|
65
|
+
throw new safe_1.ZWaveError(`Invalid import specifier ${String(val)}!${source != undefined ? ` Source: ${source}` : ""}`, safe_1.ZWaveErrorCodes.Config_Invalid);
|
|
66
66
|
}
|
|
67
67
|
if (!importSpecifierRegex.test(val)) {
|
|
68
|
-
throw new
|
|
68
|
+
throw new safe_1.ZWaveError(`Import specifier "${val}" is invalid!${source != undefined ? ` Source: ${source}` : ""}`, safe_1.ZWaveErrorCodes.Config_Invalid);
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
function getImportSpecifier(filename, selector) {
|
|
@@ -92,7 +92,7 @@ function select(obj, selector) {
|
|
|
92
92
|
ret = ret[part];
|
|
93
93
|
}
|
|
94
94
|
if (!(0, typeguards_1.isObject)(ret)) {
|
|
95
|
-
throw new
|
|
95
|
+
throw new safe_1.ZWaveError(`The import target "${selector}" is not an object!`, safe_1.ZWaveErrorCodes.Config_Invalid);
|
|
96
96
|
}
|
|
97
97
|
return ret;
|
|
98
98
|
}
|
|
@@ -111,7 +111,7 @@ async function readJsonWithTemplateInternal(filename, selector, visited, fileCac
|
|
|
111
111
|
if (rootDir) {
|
|
112
112
|
const relativeToRoot = path.relative(rootDir, filename);
|
|
113
113
|
if (relativeToRoot.startsWith("..")) {
|
|
114
|
-
throw new
|
|
114
|
+
throw new safe_1.ZWaveError(`Tried to import config file "${filename}" outside of root directory "${rootDir}"!${getImportStack(visited, selector)}`, safe_1.ZWaveErrorCodes.Config_Invalid);
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
117
|
const specifier = getImportSpecifier(filename, selector);
|
|
@@ -121,7 +121,7 @@ async function readJsonWithTemplateInternal(filename, selector, visited, fileCac
|
|
|
121
121
|
specifier,
|
|
122
122
|
].join(" -> ")}\n`;
|
|
123
123
|
// process.stderr.write(msg + "\n");
|
|
124
|
-
throw new
|
|
124
|
+
throw new safe_1.ZWaveError(msg, safe_1.ZWaveErrorCodes.Config_CircularImport);
|
|
125
125
|
}
|
|
126
126
|
let json;
|
|
127
127
|
if (fileCache.has(filename)) {
|
|
@@ -134,7 +134,7 @@ async function readJsonWithTemplateInternal(filename, selector, visited, fileCac
|
|
|
134
134
|
fileCache.set(filename, json);
|
|
135
135
|
}
|
|
136
136
|
catch (e) {
|
|
137
|
-
throw new
|
|
137
|
+
throw new safe_1.ZWaveError(`Could not parse config file ${filename}: ${(0, safe_2.getErrorMessage)(e)}${getImportStack(visited, selector)}`, safe_1.ZWaveErrorCodes.Config_Invalid);
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
// Resolve the JSON imports for (a subset) of the file and return the compound file
|
|
@@ -157,7 +157,7 @@ async function resolveJsonImports(json, filename, visited, fileCache, rootDir) {
|
|
|
157
157
|
newFilename = path.join(rootDir, importFilename.slice(2));
|
|
158
158
|
}
|
|
159
159
|
else {
|
|
160
|
-
throw new
|
|
160
|
+
throw new safe_1.ZWaveError(`An $import specifier cannot start with ~/ when no root directory is defined!${getImportStack(visited, selector)}`, safe_1.ZWaveErrorCodes.Config_Invalid);
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
163
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonTemplate.js","sourceRoot":"","sources":["../src/JsonTemplate.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"JsonTemplate.js","sourceRoot":"","sources":["../src/JsonTemplate.ts"],"names":[],"mappings":"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"}
|
package/build/Logger.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export declare type ConfigLogContext = LogContext<"config">;
|
|
1
|
+
import { ZWaveLogContainer, ZWaveLoggerBase } from "@zwave-js/core";
|
|
2
|
+
import { ConfigLogContext } from "./Logger_safe";
|
|
4
3
|
export declare class ConfigLogger extends ZWaveLoggerBase<ConfigLogContext> {
|
|
5
4
|
constructor(loggers: ZWaveLogContainer);
|
|
6
5
|
/**
|
package/build/Logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,
|
|
1
|
+
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,iBAAiB,EACjB,eAAe,EACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAiC,MAAM,eAAe,CAAC;AAEhF,qBAAa,YAAa,SAAQ,eAAe,CAAC,gBAAgB,CAAC;gBACtD,OAAO,EAAE,iBAAiB;IAItC;;;OAGG;IACI,KAAK,CACX,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GACrD,IAAI;CAWP"}
|
package/build/Logger.js
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ConfigLogger =
|
|
3
|
+
exports.ConfigLogger = void 0;
|
|
4
4
|
const core_1 = require("@zwave-js/core");
|
|
5
|
-
|
|
6
|
-
const CONFIG_LOGLEVEL = "debug";
|
|
5
|
+
const Logger_safe_1 = require("./Logger_safe");
|
|
7
6
|
class ConfigLogger extends core_1.ZWaveLoggerBase {
|
|
8
7
|
constructor(loggers) {
|
|
9
|
-
super(loggers,
|
|
8
|
+
super(loggers, Logger_safe_1.CONFIG_LABEL);
|
|
10
9
|
}
|
|
11
10
|
/**
|
|
12
11
|
* Logs a message
|
|
13
12
|
* @param msg The message to output
|
|
14
13
|
*/
|
|
15
14
|
print(message, level) {
|
|
16
|
-
const actualLevel = level || CONFIG_LOGLEVEL;
|
|
15
|
+
const actualLevel = level || Logger_safe_1.CONFIG_LOGLEVEL;
|
|
17
16
|
if (!this.container.isLoglevelVisible(actualLevel))
|
|
18
17
|
return;
|
|
19
18
|
this.logger.log({
|
package/build/Logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":";;;AAAA,yCAIwB;AACxB,+CAAgF;AAEhF,MAAa,YAAa,SAAQ,sBAAiC;IAClE,YAAY,OAA0B;QACrC,KAAK,CAAC,OAAO,EAAE,0BAAY,CAAC,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACI,KAAK,CACX,OAAe,EACf,KAAuD;QAEvD,MAAM,WAAW,GAAG,KAAK,IAAI,6BAAe,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,WAAW,CAAC;YAAE,OAAO;QAE3D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YACf,KAAK,EAAE,WAAW;YAClB,OAAO;YACP,SAAS,EAAE,IAAA,yBAAkB,EAAC,MAAM,CAAC;YACrC,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;SAC7B,CAAC,CAAC;IACJ,CAAC;CACD;AAvBD,oCAuBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger_safe.d.ts","sourceRoot":"","sources":["../src/Logger_safe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,eAAO,MAAM,YAAY,WAAW,CAAC;AACrC,eAAO,MAAM,eAAe,UAAU,CAAC;AAEvC,oBAAY,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger_safe.js","sourceRoot":"","sources":["../src/Logger_safe.ts"],"names":[],"mappings":";;;AAEa,QAAA,YAAY,GAAG,QAAQ,CAAC;AACxB,QAAA,eAAe,GAAG,OAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Manufacturers.d.ts","sourceRoot":"","sources":["../src/Manufacturers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Manufacturers.d.ts","sourceRoot":"","sources":["../src/Manufacturers.ts"],"names":[],"mappings":"AAUA,oBAAY,gBAAgB,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAuDnD;;GAEG;AACH,wBAAsB,yBAAyB,CAC9C,aAAa,EAAE,gBAAgB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAaf"}
|
package/build/Manufacturers.js
CHANGED
|
@@ -12,6 +12,7 @@ const fs_extra_1 = require("fs-extra");
|
|
|
12
12
|
const json5_1 = __importDefault(require("json5"));
|
|
13
13
|
const path_1 = __importDefault(require("path"));
|
|
14
14
|
const utils_1 = require("./utils");
|
|
15
|
+
const utils_safe_1 = require("./utils_safe");
|
|
15
16
|
/** @internal */
|
|
16
17
|
async function loadManufacturersInternal(externalConfig) {
|
|
17
18
|
const configPath = path_1.default.join((externalConfig && (0, utils_1.externalConfigDir)()) || utils_1.configDir, "manufacturers.json");
|
|
@@ -22,15 +23,15 @@ async function loadManufacturersInternal(externalConfig) {
|
|
|
22
23
|
const fileContents = await (0, fs_extra_1.readFile)(configPath, "utf8");
|
|
23
24
|
const definition = json5_1.default.parse(fileContents);
|
|
24
25
|
if (!(0, typeguards_1.isObject)(definition)) {
|
|
25
|
-
(0,
|
|
26
|
+
(0, utils_safe_1.throwInvalidConfig)("manufacturers", `the database is not an object!`);
|
|
26
27
|
}
|
|
27
28
|
const manufacturers = new Map();
|
|
28
29
|
for (const [id, name] of (0, objects_1.entries)(definition)) {
|
|
29
|
-
if (!
|
|
30
|
-
(0,
|
|
30
|
+
if (!utils_safe_1.hexKeyRegex4Digits.test(id)) {
|
|
31
|
+
(0, utils_safe_1.throwInvalidConfig)("manufacturers", `found invalid key ${id} at the root level. Manufacturer IDs must be hexadecimal lowercase.`);
|
|
31
32
|
}
|
|
32
33
|
if (typeof name !== "string") {
|
|
33
|
-
(0,
|
|
34
|
+
(0, utils_safe_1.throwInvalidConfig)("manufacturers", `Key ${id} has a non-string manufacturer name`);
|
|
34
35
|
}
|
|
35
36
|
const idNum = parseInt(id.slice(2), 16);
|
|
36
37
|
manufacturers.set(idNum, name);
|
|
@@ -42,7 +43,7 @@ async function loadManufacturersInternal(externalConfig) {
|
|
|
42
43
|
throw e;
|
|
43
44
|
}
|
|
44
45
|
else {
|
|
45
|
-
(0,
|
|
46
|
+
(0, utils_safe_1.throwInvalidConfig)("manufacturers");
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Manufacturers.js","sourceRoot":"","sources":["../src/Manufacturers.ts"],"names":[],"mappings":";;;;;;AAAA,yCAA2E;AAC3E,6CAAuD;AACvD,sDAAmD;AACnD,4DAAuD;AACvD,uCAA2D;AAC3D,kDAA0B;AAC1B,gDAAwB;AACxB,
|
|
1
|
+
{"version":3,"file":"Manufacturers.js","sourceRoot":"","sources":["../src/Manufacturers.ts"],"names":[],"mappings":";;;;;;AAAA,yCAA2E;AAC3E,6CAAuD;AACvD,sDAAmD;AACnD,4DAAuD;AACvD,uCAA2D;AAC3D,kDAA0B;AAC1B,gDAAwB;AACxB,mCAAuD;AACvD,6CAAsE;AAItE,gBAAgB;AACT,KAAK,UAAU,yBAAyB,CAC9C,cAAwB;IAExB,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAC3B,CAAC,cAAc,IAAI,IAAA,yBAAiB,GAAE,CAAC,IAAI,iBAAS,EACpD,oBAAoB,CACpB,CAAC;IAEF,IAAI,CAAC,CAAC,MAAM,IAAA,qBAAU,EAAC,UAAU,CAAC,CAAC,EAAE;QACpC,MAAM,IAAI,iBAAU,CACnB,8CAA8C,EAC9C,sBAAe,CAAC,cAAc,CAC9B,CAAC;KACF;IACD,IAAI;QACH,MAAM,YAAY,GAAG,MAAM,IAAA,mBAAQ,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,eAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAA,qBAAQ,EAAC,UAAU,CAAC,EAAE;YAC1B,IAAA,+BAAkB,EACjB,eAAe,EACf,gCAAgC,CAChC,CAAC;SACF;QAED,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;QAChC,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,IAAA,iBAAO,EAAC,UAAU,CAAC,EAAE;YAC7C,IAAI,CAAC,+BAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBACjC,IAAA,+BAAkB,EACjB,eAAe,EACf,qBAAqB,EAAE,qEAAqE,CAC5F,CAAC;aACF;YACD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBAC7B,IAAA,+BAAkB,EACjB,eAAe,EACf,OAAO,EAAE,qCAAqC,CAC9C,CAAC;aACF;YACD,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SAC/B;QAED,OAAO,aAAa,CAAC;KACrB;IAAC,OAAO,CAAC,EAAE;QACX,IAAI,IAAA,mBAAY,EAAC,CAAC,CAAC,EAAE;YACpB,MAAM,CAAC,CAAC;SACR;aAAM;YACN,IAAA,+BAAkB,EAAC,eAAe,CAAC,CAAC;SACpC;KACD;AACF,CAAC;AAlDD,8DAkDC;AAED;;GAEG;AACI,KAAK,UAAU,yBAAyB,CAC9C,aAA+B;IAE/B,MAAM,IAAI,GAA2B,EAAE,CAAC;IAExC,MAAM,UAAU,GAAG,IAAI,GAAG,CACzB,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACzD,CAAC;IAEF,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,UAAU,EAAE;QACpC,IAAI,CAAC,IAAA,iBAAQ,EAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;KAC1B;IAED,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,iBAAS,EAAE,oBAAoB,CAAC,CAAC;IAC9D,MAAM,IAAA,oBAAS,EAAC,UAAU,EAAE,IAAA,kBAAS,EAAC,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAC3D,CAAC;AAfD,8DAeC"}
|
package/build/Meters.d.ts
CHANGED
package/build/Meters.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Meters.d.ts","sourceRoot":"","sources":["../src/Meters.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Meters.d.ts","sourceRoot":"","sources":["../src/Meters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAW,MAAM,uBAAuB,CAAC;AAK5D,oBAAY,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAElD,qBAAa,KAAK;gBACE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;IAmCrD,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACxD;AAED,qBAAa,UAAU;gBACH,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAKlD,SAAgB,GAAG,EAAE,MAAM,CAAC;IAC5B,SAAgB,KAAK,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAE9D"}
|
package/build/Meters.js
CHANGED
|
@@ -1,49 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getDefaultMeterScale = exports.MeterScale = exports.Meter =
|
|
7
|
-
const
|
|
8
|
-
const shared_1 = require("@zwave-js/shared");
|
|
3
|
+
exports.getDefaultMeterScale = exports.MeterScale = exports.Meter = void 0;
|
|
4
|
+
const safe_1 = require("@zwave-js/shared/safe");
|
|
9
5
|
const objects_1 = require("alcalzone-shared/objects");
|
|
10
6
|
const typeguards_1 = require("alcalzone-shared/typeguards");
|
|
11
|
-
const
|
|
12
|
-
const json5_1 = __importDefault(require("json5"));
|
|
13
|
-
const path_1 = __importDefault(require("path"));
|
|
14
|
-
const utils_1 = require("./utils");
|
|
15
|
-
/** @internal */
|
|
16
|
-
async function loadMetersInternal(externalConfig) {
|
|
17
|
-
const configPath = path_1.default.join((externalConfig && (0, utils_1.externalConfigDir)()) || utils_1.configDir, "meters.json");
|
|
18
|
-
if (!(await (0, fs_extra_1.pathExists)(configPath))) {
|
|
19
|
-
throw new core_1.ZWaveError("The config file does not exist!", core_1.ZWaveErrorCodes.Config_Invalid);
|
|
20
|
-
}
|
|
21
|
-
try {
|
|
22
|
-
const fileContents = await (0, fs_extra_1.readFile)(configPath, "utf8");
|
|
23
|
-
const definition = json5_1.default.parse(fileContents);
|
|
24
|
-
if (!(0, typeguards_1.isObject)(definition)) {
|
|
25
|
-
(0, utils_1.throwInvalidConfig)("meters", "the database is not an object");
|
|
26
|
-
}
|
|
27
|
-
const meters = new Map();
|
|
28
|
-
for (const [id, meterDefinition] of (0, objects_1.entries)(definition)) {
|
|
29
|
-
if (!utils_1.hexKeyRegexNDigits.test(id)) {
|
|
30
|
-
(0, utils_1.throwInvalidConfig)("meters", `found invalid key "${id}" at the root. Meters must have lowercase hexadecimal IDs.`);
|
|
31
|
-
}
|
|
32
|
-
const idNum = parseInt(id.slice(2), 16);
|
|
33
|
-
meters.set(idNum, new Meter(idNum, meterDefinition));
|
|
34
|
-
}
|
|
35
|
-
return meters;
|
|
36
|
-
}
|
|
37
|
-
catch (e) {
|
|
38
|
-
if ((0, core_1.isZWaveError)(e)) {
|
|
39
|
-
throw e;
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
(0, utils_1.throwInvalidConfig)("meters");
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
exports.loadMetersInternal = loadMetersInternal;
|
|
7
|
+
const utils_safe_1 = require("./utils_safe");
|
|
47
8
|
class Meter {
|
|
48
9
|
constructor(id, definition) {
|
|
49
10
|
this.id = id;
|
|
@@ -51,11 +12,11 @@ class Meter {
|
|
|
51
12
|
const scales = new Map();
|
|
52
13
|
if ((0, typeguards_1.isObject)(definition.scales)) {
|
|
53
14
|
for (const [scaleId, scaleDefinition] of (0, objects_1.entries)(definition.scales)) {
|
|
54
|
-
if (!
|
|
55
|
-
(0,
|
|
15
|
+
if (!utils_safe_1.hexKeyRegexNDigits.test(scaleId)) {
|
|
16
|
+
(0, utils_safe_1.throwInvalidConfig)("meters", `found invalid key "${scaleId}" in meter ${(0, safe_1.num2hex)(id)}. Meter scales must have lowercase hexadecimal IDs.`);
|
|
56
17
|
}
|
|
57
18
|
if (typeof scaleDefinition !== "string") {
|
|
58
|
-
(0,
|
|
19
|
+
(0, utils_safe_1.throwInvalidConfig)("meters", `The scale definition for "${scaleId}" in meter ${(0, safe_1.num2hex)(id)} is not a string!`);
|
|
59
20
|
}
|
|
60
21
|
const scaleIdNum = parseInt(scaleId.slice(2), 16);
|
|
61
22
|
scales.set(scaleIdNum, new MeterScale(scaleIdNum, scaleDefinition));
|
|
@@ -73,7 +34,7 @@ class MeterScale {
|
|
|
73
34
|
}
|
|
74
35
|
exports.MeterScale = MeterScale;
|
|
75
36
|
function getDefaultMeterScale(scale) {
|
|
76
|
-
return new MeterScale(scale, `Unknown (${(0,
|
|
37
|
+
return new MeterScale(scale, `Unknown (${(0, safe_1.num2hex)(scale)})`);
|
|
77
38
|
}
|
|
78
39
|
exports.getDefaultMeterScale = getDefaultMeterScale;
|
|
79
40
|
//# sourceMappingURL=Meters.js.map
|
package/build/Meters.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Meters.js","sourceRoot":"","sources":["../src/Meters.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Meters.js","sourceRoot":"","sources":["../src/Meters.ts"],"names":[],"mappings":";;;AAAA,gDAA4D;AAC5D,sDAAmD;AACnD,4DAAuD;AACvD,6CAAsE;AAItE,MAAa,KAAK;IACjB,YAAmB,EAAU,EAAE,UAAsB;QACpD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAE5B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAsB,CAAC;QAC7C,IAAI,IAAA,qBAAQ,EAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YAChC,KAAK,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,IAAI,IAAA,iBAAO,EAC/C,UAAU,CAAC,MAAM,CACjB,EAAE;gBACF,IAAI,CAAC,+BAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;oBACtC,IAAA,+BAAkB,EACjB,QAAQ,EACR,sBAAsB,OAAO,cAAc,IAAA,cAAO,EACjD,EAAE,CACF,qDAAqD,CACtD,CAAC;iBACF;gBACD,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE;oBACxC,IAAA,+BAAkB,EACjB,QAAQ,EACR,6BAA6B,OAAO,cAAc,IAAA,cAAO,EACxD,EAAE,CACF,mBAAmB,CACpB,CAAC;iBACF;gBACD,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAClD,MAAM,CAAC,GAAG,CACT,UAAU,EACV,IAAI,UAAU,CAAC,UAAU,EAAE,eAAe,CAAC,CAC3C,CAAC;aACF;SACD;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;CAKD;AAvCD,sBAuCC;AAED,MAAa,UAAU;IACtB,YAAmB,GAAW,EAAE,UAAkB;QACjD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;IACzB,CAAC;CAID;AARD,gCAQC;AAED,SAAgB,oBAAoB,CAAC,KAAa;IACjD,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,YAAY,IAAA,cAAO,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7D,CAAC;AAFD,oDAEC"}
|
package/build/Notifications.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Notifications.d.ts","sourceRoot":"","sources":["../src/Notifications.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Notifications.d.ts","sourceRoot":"","sources":["../src/Notifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAW,MAAM,uBAAuB,CAAC;AAK5D,UAAU,2BAA2B;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACd;AAED,UAAU,2BAA2B;IACpC,IAAI,EAAE,OAAO,CAAC;CACd;AAED,oBAAY,2BAA2B,GAAG,CACvC,2BAA2B,GAC3B,2BAA2B,CAC7B,GAAG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,qBAAqB,CAAC;CAClC,CAAC;AAEF,oBAAY,eAAe,GAAG,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAEhE,qBAAa,YAAY;gBACL,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;IA6BrD,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,SAAS,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC3D,SAAgB,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAExD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,2BAA2B,GAAG,SAAS;CAyB1E;AAED,qBAAa,oBAAoB;gBACb,UAAU,EAAE,UAAU;IA4BzC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,gDAAgD;IAChD,SAAgB,IAAI,EAAE,OAAO,CAAC;IAC9B,SAAgB,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CAC/D;AAED,qBAAa,iBAAiB;gBACV,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;IA4CrD,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrC,SAAgB,SAAS,CAAC,EAAE,qBAAqB,CAAC;CAClD;AAED,qBAAa,iBAAiB;gBACV,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;IAwBrD,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrC,SAAgB,SAAS,CAAC,EAAE,qBAAqB,CAAC;CAClD;AAED,qBAAa,qBAAqB;gBACd,UAAU,EAAE,UAAU;CAiBzC;AAED,oDAAoD;AACpD,qBAAa,iCAAiC;gBAC1B,WAAW,EAAE,UAAU;CAG1C;AAED,8CAA8C;AAC9C,qBAAa,qCAAqC;gBAC9B,WAAW,EAAE,UAAU;CAG1C;AAED,qBAAa,8BAA8B;gBACvB,UAAU,EAAE,UAAU;IASzC,SAAgB,YAAY,EAAE,MAAM,CAAC;CACrC"}
|
package/build/Notifications.js
CHANGED
|
@@ -1,49 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.NotificationParameterWithValue = exports.NotificationParameterWithCommandClass = exports.NotificationParameterWithDuration = exports.NotificationParameter = exports.NotificationEvent = exports.NotificationState = exports.NotificationVariable = exports.Notification =
|
|
7
|
-
const
|
|
8
|
-
const shared_1 = require("@zwave-js/shared");
|
|
3
|
+
exports.NotificationParameterWithValue = exports.NotificationParameterWithCommandClass = exports.NotificationParameterWithDuration = exports.NotificationParameter = exports.NotificationEvent = exports.NotificationState = exports.NotificationVariable = exports.Notification = void 0;
|
|
4
|
+
const safe_1 = require("@zwave-js/shared/safe");
|
|
9
5
|
const objects_1 = require("alcalzone-shared/objects");
|
|
10
6
|
const typeguards_1 = require("alcalzone-shared/typeguards");
|
|
11
|
-
const
|
|
12
|
-
const json5_1 = __importDefault(require("json5"));
|
|
13
|
-
const path_1 = __importDefault(require("path"));
|
|
14
|
-
const utils_1 = require("./utils");
|
|
15
|
-
/** @internal */
|
|
16
|
-
async function loadNotificationsInternal(externalConfig) {
|
|
17
|
-
const configPath = path_1.default.join((externalConfig && (0, utils_1.externalConfigDir)()) || utils_1.configDir, "notifications.json");
|
|
18
|
-
if (!(await (0, fs_extra_1.pathExists)(configPath))) {
|
|
19
|
-
throw new core_1.ZWaveError("The config file does not exist!", core_1.ZWaveErrorCodes.Config_Invalid);
|
|
20
|
-
}
|
|
21
|
-
try {
|
|
22
|
-
const fileContents = await (0, fs_extra_1.readFile)(configPath, "utf8");
|
|
23
|
-
const definition = json5_1.default.parse(fileContents);
|
|
24
|
-
if (!(0, typeguards_1.isObject)(definition)) {
|
|
25
|
-
(0, utils_1.throwInvalidConfig)("notifications", "the database is not an object");
|
|
26
|
-
}
|
|
27
|
-
const notifications = new Map();
|
|
28
|
-
for (const [id, ntfcnDefinition] of (0, objects_1.entries)(definition)) {
|
|
29
|
-
if (!utils_1.hexKeyRegexNDigits.test(id)) {
|
|
30
|
-
(0, utils_1.throwInvalidConfig)("notifications", `found invalid key "${id}" at the root. Notifications must have lowercase hexadecimal IDs.`);
|
|
31
|
-
}
|
|
32
|
-
const idNum = parseInt(id.slice(2), 16);
|
|
33
|
-
notifications.set(idNum, new Notification(idNum, ntfcnDefinition));
|
|
34
|
-
}
|
|
35
|
-
return notifications;
|
|
36
|
-
}
|
|
37
|
-
catch (e) {
|
|
38
|
-
if ((0, core_1.isZWaveError)(e)) {
|
|
39
|
-
throw e;
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
(0, utils_1.throwInvalidConfig)("notifications");
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
exports.loadNotificationsInternal = loadNotificationsInternal;
|
|
7
|
+
const utils_safe_1 = require("./utils_safe");
|
|
47
8
|
class Notification {
|
|
48
9
|
constructor(id, definition) {
|
|
49
10
|
this.id = id;
|
|
@@ -54,8 +15,8 @@ class Notification {
|
|
|
54
15
|
const events = new Map();
|
|
55
16
|
if ((0, typeguards_1.isObject)(definition.events)) {
|
|
56
17
|
for (const [eventId, eventDefinition] of (0, objects_1.entries)(definition.events)) {
|
|
57
|
-
if (!
|
|
58
|
-
(0,
|
|
18
|
+
if (!utils_safe_1.hexKeyRegexNDigits.test(eventId)) {
|
|
19
|
+
(0, utils_safe_1.throwInvalidConfig)("notifications", `found invalid key "${eventId}" in notification ${(0, safe_1.num2hex)(id)}. Notification events must have lowercase hexadecimal IDs.`);
|
|
59
20
|
}
|
|
60
21
|
const eventIdNum = parseInt(eventId.slice(2), 16);
|
|
61
22
|
events.set(eventIdNum, new NotificationEvent(eventIdNum, eventDefinition));
|
|
@@ -96,12 +57,12 @@ class NotificationVariable {
|
|
|
96
57
|
// Otherwise it must be specified explicitly using `idle: false`
|
|
97
58
|
this.idle = definition.idle !== false;
|
|
98
59
|
if (!(0, typeguards_1.isObject)(definition.states)) {
|
|
99
|
-
(0,
|
|
60
|
+
(0, utils_safe_1.throwInvalidConfig)("notifications", `the variable definition for ${this.name} is not an object`);
|
|
100
61
|
}
|
|
101
62
|
const states = new Map();
|
|
102
63
|
for (const [stateId, stateDefinition] of (0, objects_1.entries)(definition.states)) {
|
|
103
|
-
if (!
|
|
104
|
-
(0,
|
|
64
|
+
if (!utils_safe_1.hexKeyRegexNDigits.test(stateId)) {
|
|
65
|
+
(0, utils_safe_1.throwInvalidConfig)("notifications", `found invalid key "${stateId}" in notification variable ${this.name}. Notification states must have lowercase hexadecimal IDs.`);
|
|
105
66
|
}
|
|
106
67
|
const stateIdNum = parseInt(stateId.slice(2), 16);
|
|
107
68
|
states.set(stateIdNum, new NotificationState(stateIdNum, stateDefinition));
|
|
@@ -114,20 +75,20 @@ class NotificationState {
|
|
|
114
75
|
constructor(id, definition) {
|
|
115
76
|
this.id = id;
|
|
116
77
|
if (typeof definition.label !== "string") {
|
|
117
|
-
(0,
|
|
78
|
+
(0, utils_safe_1.throwInvalidConfig)("notifications", `The label of notification state ${(0, safe_1.num2hex)(id)} has a non-string label`);
|
|
118
79
|
}
|
|
119
80
|
this.label = definition.label;
|
|
120
81
|
if (definition.description != undefined &&
|
|
121
82
|
typeof definition.description !== "string") {
|
|
122
|
-
(0,
|
|
83
|
+
(0, utils_safe_1.throwInvalidConfig)("notifications", `The label of notification state ${(0, safe_1.num2hex)(id)} has a non-string description`);
|
|
123
84
|
}
|
|
124
85
|
this.description = definition.description;
|
|
125
86
|
if (definition.params != undefined) {
|
|
126
87
|
if (!(0, typeguards_1.isObject)(definition.params)) {
|
|
127
|
-
(0,
|
|
88
|
+
(0, utils_safe_1.throwInvalidConfig)("notifications", `The parameter definition of notification state ${(0, safe_1.num2hex)(id)} must be an object`);
|
|
128
89
|
}
|
|
129
90
|
else if (typeof definition.params.type !== "string") {
|
|
130
|
-
(0,
|
|
91
|
+
(0, utils_safe_1.throwInvalidConfig)("notifications", `The parameter type of notification state ${(0, safe_1.num2hex)(id)} must be a string`);
|
|
131
92
|
}
|
|
132
93
|
this.parameter = new NotificationParameter(definition.params);
|
|
133
94
|
}
|
|
@@ -141,10 +102,10 @@ class NotificationEvent {
|
|
|
141
102
|
this.description = definition.description;
|
|
142
103
|
if (definition.params != undefined) {
|
|
143
104
|
if (!(0, typeguards_1.isObject)(definition.params)) {
|
|
144
|
-
(0,
|
|
105
|
+
(0, utils_safe_1.throwInvalidConfig)("notifications", `The parameter definition of notification event ${(0, safe_1.num2hex)(id)} must be an object`);
|
|
145
106
|
}
|
|
146
107
|
else if (typeof definition.params.type !== "string") {
|
|
147
|
-
(0,
|
|
108
|
+
(0, utils_safe_1.throwInvalidConfig)("notifications", `The parameter type of notification event ${(0, safe_1.num2hex)(id)} must be a string`);
|
|
148
109
|
}
|
|
149
110
|
this.parameter = new NotificationParameter(definition.params);
|
|
150
111
|
}
|
|
@@ -188,7 +149,7 @@ exports.NotificationParameterWithCommandClass = NotificationParameterWithCommand
|
|
|
188
149
|
class NotificationParameterWithValue {
|
|
189
150
|
constructor(definition) {
|
|
190
151
|
if (typeof definition.name !== "string") {
|
|
191
|
-
(0,
|
|
152
|
+
(0, utils_safe_1.throwInvalidConfig)("notifications", `Missing property name definition for Notification parameter with type: "value"!`);
|
|
192
153
|
}
|
|
193
154
|
this.propertyName = definition.name;
|
|
194
155
|
}
|