@zwave-js/config 14.3.3 → 14.3.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.
Files changed (38) hide show
  1. package/build/cjs/ConfigManager.js +4 -0
  2. package/build/cjs/ConfigManager.js.map +1 -1
  3. package/build/cjs/JsonTemplate.js +9 -0
  4. package/build/cjs/JsonTemplate.js.map +1 -1
  5. package/build/cjs/Logger.js +4 -0
  6. package/build/cjs/Logger.js.map +1 -1
  7. package/build/cjs/Logic.js +4 -0
  8. package/build/cjs/Logic.js.map +1 -1
  9. package/build/cjs/LogicParser.js +80 -36
  10. package/build/cjs/LogicParser.js.map +1 -1
  11. package/build/cjs/Manufacturers.js +3 -0
  12. package/build/cjs/Manufacturers.js.map +1 -1
  13. package/build/cjs/_version.d.ts +1 -1
  14. package/build/cjs/_version.js +1 -1
  15. package/build/cjs/_version.js.map +1 -1
  16. package/build/cjs/devices/AssociationConfig.js +4 -0
  17. package/build/cjs/devices/AssociationConfig.js.map +1 -1
  18. package/build/cjs/devices/CompatConfig.js +19 -4
  19. package/build/cjs/devices/CompatConfig.js.map +1 -1
  20. package/build/cjs/devices/ConditionalItem.js +5 -0
  21. package/build/cjs/devices/ConditionalItem.js.map +1 -1
  22. package/build/cjs/devices/ConditionalPrimitive.js +5 -0
  23. package/build/cjs/devices/ConditionalPrimitive.js.map +1 -1
  24. package/build/cjs/devices/DeviceConfig.js +25 -9
  25. package/build/cjs/devices/DeviceConfig.js.map +1 -1
  26. package/build/cjs/devices/DeviceMetadata.js +8 -1
  27. package/build/cjs/devices/DeviceMetadata.js.map +1 -1
  28. package/build/cjs/devices/EndpointConfig.js +4 -0
  29. package/build/cjs/devices/EndpointConfig.js.map +1 -1
  30. package/build/cjs/devices/ParamInformation.js +8 -0
  31. package/build/cjs/devices/ParamInformation.js.map +1 -1
  32. package/build/cjs/utils.js +5 -0
  33. package/build/cjs/utils.js.map +2 -2
  34. package/build/cjs/utils_safe.js +3 -0
  35. package/build/cjs/utils_safe.js.map +1 -1
  36. package/build/esm/_version.d.ts +1 -1
  37. package/build/esm/_version.js +1 -1
  38. package/package.json +5 -5
@@ -5,6 +5,7 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __getProtoOf = Object.getPrototypeOf;
7
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
8
9
  var __export = (target, all) => {
9
10
  for (var name in all)
10
11
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -40,6 +41,9 @@ var import_version = require("./_version.js");
40
41
  var import_DeviceConfig = require("./devices/DeviceConfig.js");
41
42
  var import_utils = require("./utils.js");
42
43
  class ConfigManager {
44
+ static {
45
+ __name(this, "ConfigManager");
46
+ }
43
47
  constructor(options = {}) {
44
48
  this.logger = new import_Logger.ConfigLogger(options.logContainer ?? new import_core.ZWaveLogContainer({ enabled: false }));
45
49
  this.deviceConfigPriorityDir = options.deviceConfigPriorityDir;
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/ConfigManager.ts"],
4
4
  "sourcesContent": ["import {\n\tZWaveError,\n\tZWaveErrorCodes,\n\tZWaveLogContainer,\n\tisZWaveError,\n} from \"@zwave-js/core\";\nimport { getErrorMessage, pathExists } from \"@zwave-js/shared\";\nimport path from \"node:path\";\nimport { ConfigLogger } from \"./Logger.js\";\nimport {\n\ttype ManufacturersMap,\n\tloadManufacturersInternal,\n\tsaveManufacturersInternal,\n} from \"./Manufacturers.js\";\nimport { PACKAGE_VERSION } from \"./_version.js\";\nimport {\n\tConditionalDeviceConfig,\n\ttype DeviceConfig,\n\ttype DeviceConfigIndex,\n\ttype FulltextDeviceConfigIndex,\n\tgeneratePriorityDeviceIndex,\n\tgetDevicesPaths,\n\tloadDeviceIndexInternal,\n\tloadFulltextDeviceIndexInternal,\n} from \"./devices/DeviceConfig.js\";\nimport {\n\ttype SyncExternalConfigDirResult,\n\tconfigDir,\n\tgetDeviceEntryPredicate,\n\tgetExternalConfigDirEnvVariable,\n\tsyncExternalConfigDir,\n} from \"./utils.js\";\n\nexport interface ConfigManagerOptions {\n\tlogContainer?: ZWaveLogContainer;\n\tdeviceConfigPriorityDir?: string;\n\tdeviceConfigExternalDir?: string;\n}\n\nexport class ConfigManager {\n\tpublic constructor(options: ConfigManagerOptions = {}) {\n\t\tthis.logger = new ConfigLogger(\n\t\t\toptions.logContainer ?? new ZWaveLogContainer({ enabled: false }),\n\t\t);\n\t\tthis.deviceConfigPriorityDir = options.deviceConfigPriorityDir;\n\t\tthis.deviceConfigExternalDir = options.deviceConfigExternalDir;\n\n\t\tthis._configVersion = PACKAGE_VERSION;\n\t}\n\n\tprivate _configVersion: string;\n\tpublic get configVersion(): string {\n\t\treturn this._configVersion;\n\t}\n\n\tprivate logger: ConfigLogger;\n\n\tprivate _manufacturers: ManufacturersMap | undefined;\n\tpublic get manufacturers(): ManufacturersMap {\n\t\tif (!this._manufacturers) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The config has not been loaded yet!\",\n\t\t\t\tZWaveErrorCodes.Driver_NotReady,\n\t\t\t);\n\t\t}\n\t\treturn this._manufacturers;\n\t}\n\n\tprivate deviceConfigPriorityDir: string | undefined;\n\tprivate deviceConfigExternalDir: string | undefined;\n\tpublic get externalConfigDir(): string | undefined {\n\t\treturn this.deviceConfigExternalDir\n\t\t\t?? getExternalConfigDirEnvVariable();\n\t}\n\n\tprivate index: DeviceConfigIndex | undefined;\n\tprivate fulltextIndex: FulltextDeviceConfigIndex | undefined;\n\n\tprivate _useExternalConfig: boolean = false;\n\tpublic get useExternalConfig(): boolean {\n\t\treturn this._useExternalConfig;\n\t}\n\n\tpublic async loadAll(): Promise<void> {\n\t\t// If the environment option for an external config dir is set\n\t\t// try to sync it and then use it\n\t\tlet syncResult: SyncExternalConfigDirResult | undefined;\n\t\tconst externalConfigDir = this.externalConfigDir;\n\t\tif (externalConfigDir) {\n\t\t\tsyncResult = await syncExternalConfigDir(\n\t\t\t\texternalConfigDir,\n\t\t\t\tthis.logger,\n\t\t\t);\n\t\t}\n\n\t\tif (syncResult?.success) {\n\t\t\tthis._useExternalConfig = true;\n\t\t\tthis.logger.print(\n\t\t\t\t`Using external configuration dir ${externalConfigDir}`,\n\t\t\t);\n\t\t\tthis._configVersion = syncResult.version;\n\t\t} else {\n\t\t\tthis._useExternalConfig = false;\n\t\t\tthis._configVersion = PACKAGE_VERSION;\n\t\t}\n\t\tthis.logger.print(`version ${this._configVersion}`, \"info\");\n\n\t\tawait this.loadManufacturers();\n\t\tawait this.loadDeviceIndex();\n\t}\n\n\tpublic async loadManufacturers(): Promise<void> {\n\t\ttry {\n\t\t\tthis._manufacturers = await loadManufacturersInternal(\n\t\t\t\tthis._useExternalConfig && this.externalConfigDir || undefined,\n\t\t\t);\n\t\t} catch (e) {\n\t\t\t// If the config file is missing or invalid, don't try to find it again\n\t\t\tif (isZWaveError(e) && e.code === ZWaveErrorCodes.Config_Invalid) {\n\t\t\t\tif (process.env.NODE_ENV !== \"test\") {\n\t\t\t\t\tthis.logger.print(\n\t\t\t\t\t\t`Could not load manufacturers config: ${e.message}`,\n\t\t\t\t\t\t\"error\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (!this._manufacturers) this._manufacturers = new Map();\n\t\t\t} else {\n\t\t\t\t// This is an unexpected error\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic async saveManufacturers(): Promise<void> {\n\t\tif (!this._manufacturers) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The config has not been loaded yet!\",\n\t\t\t\tZWaveErrorCodes.Driver_NotReady,\n\t\t\t);\n\t\t}\n\n\t\tawait saveManufacturersInternal(this._manufacturers);\n\t}\n\n\t/**\n\t * Looks up the name of the manufacturer with the given ID in the configuration DB\n\t * @param manufacturerId The manufacturer id to look up\n\t */\n\tpublic lookupManufacturer(manufacturerId: number): string | undefined {\n\t\tif (!this._manufacturers) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The config has not been loaded yet!\",\n\t\t\t\tZWaveErrorCodes.Driver_NotReady,\n\t\t\t);\n\t\t}\n\n\t\treturn this._manufacturers.get(manufacturerId);\n\t}\n\n\t/**\n\t * Add new manufacturers to configuration DB\n\t * @param manufacturerId The manufacturer id to look up\n\t * @param manufacturerName The manufacturer name\n\t */\n\tpublic setManufacturer(\n\t\tmanufacturerId: number,\n\t\tmanufacturerName: string,\n\t): void {\n\t\tif (!this._manufacturers) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The config has not been loaded yet!\",\n\t\t\t\tZWaveErrorCodes.Driver_NotReady,\n\t\t\t);\n\t\t}\n\n\t\tthis._manufacturers.set(manufacturerId, manufacturerName);\n\t}\n\n\tpublic async loadDeviceIndex(): Promise<void> {\n\t\ttry {\n\t\t\t// The index of config files included in this package\n\t\t\tconst embeddedIndex = await loadDeviceIndexInternal(\n\t\t\t\tthis.logger,\n\t\t\t\tthis._useExternalConfig && this.externalConfigDir || undefined,\n\t\t\t);\n\t\t\t// A dynamic index of the user-defined priority device config files\n\t\t\tconst priorityIndex: DeviceConfigIndex = [];\n\t\t\tif (this.deviceConfigPriorityDir) {\n\t\t\t\tif (await pathExists(this.deviceConfigPriorityDir)) {\n\t\t\t\t\tpriorityIndex.push(\n\t\t\t\t\t\t...(await generatePriorityDeviceIndex(\n\t\t\t\t\t\t\tthis.deviceConfigPriorityDir,\n\t\t\t\t\t\t\tthis.logger,\n\t\t\t\t\t\t)),\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthis.logger.print(\n\t\t\t\t\t\t`Priority device configuration directory ${this.deviceConfigPriorityDir} not found`,\n\t\t\t\t\t\t\"warn\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Put the priority index in front, so the files get resolved first\n\t\t\tthis.index = [...priorityIndex, ...embeddedIndex];\n\t\t} catch (e) {\n\t\t\t// If the index file is missing or invalid, don't try to find it again\n\t\t\tif (\n\t\t\t\t(!isZWaveError(e) && e instanceof Error)\n\t\t\t\t|| (isZWaveError(e)\n\t\t\t\t\t&& e.code === ZWaveErrorCodes.Config_Invalid)\n\t\t\t) {\n\t\t\t\t// Fall back to no index on production systems\n\t\t\t\tif (!this.index) this.index = [];\n\t\t\t\tif (process.env.NODE_ENV !== \"test\") {\n\t\t\t\t\tthis.logger.print(\n\t\t\t\t\t\t`Could not load or regenerate device config index: ${e.message}`,\n\t\t\t\t\t\t\"error\",\n\t\t\t\t\t);\n\t\t\t\t\t// and don't throw\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// But fail hard in tests\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic getIndex(): DeviceConfigIndex | undefined {\n\t\treturn this.index;\n\t}\n\n\tpublic async loadFulltextDeviceIndex(): Promise<void> {\n\t\tthis.fulltextIndex = await loadFulltextDeviceIndexInternal(this.logger);\n\t}\n\n\tpublic getFulltextIndex(): FulltextDeviceConfigIndex | undefined {\n\t\treturn this.fulltextIndex;\n\t}\n\n\t/**\n\t * Looks up the definition of a given device in the configuration DB, but does not evaluate conditional settings.\n\t * @param manufacturerId The manufacturer id of the device\n\t * @param productType The product type of the device\n\t * @param productId The product id of the device\n\t * @param firmwareVersion If known, configuration for a specific firmware version can be loaded.\n\t * If this is `undefined` or not given, the first matching file with a defined firmware range will be returned.\n\t */\n\tpublic async lookupDevicePreserveConditions(\n\t\tmanufacturerId: number,\n\t\tproductType: number,\n\t\tproductId: number,\n\t\tfirmwareVersion?: string,\n\t): Promise<ConditionalDeviceConfig | undefined> {\n\t\t// Load/regenerate the index if necessary\n\t\tif (!this.index) await this.loadDeviceIndex();\n\n\t\t// Look up the device in the index\n\t\tconst indexEntries = this.index!.filter(\n\t\t\tgetDeviceEntryPredicate(\n\t\t\t\tmanufacturerId,\n\t\t\t\tproductType,\n\t\t\t\tproductId,\n\t\t\t\tfirmwareVersion,\n\t\t\t),\n\t\t);\n\t\t// If there are multiple with overlapping firmware ranges, return the preferred one first\n\t\tconst indexEntry = indexEntries.find((e) => !!e.preferred)\n\t\t\t?? indexEntries[0];\n\n\t\tif (indexEntry) {\n\t\t\tconst devicesDir = getDevicesPaths(\n\t\t\t\tthis._useExternalConfig && this.externalConfigDir || configDir,\n\t\t\t).devicesDir;\n\t\t\tconst filePath = path.isAbsolute(indexEntry.filename)\n\t\t\t\t? indexEntry.filename\n\t\t\t\t: path.join(devicesDir, indexEntry.filename);\n\t\t\tif (!(await pathExists(filePath))) return;\n\n\t\t\t// A config file is treated as am embedded one when it is located under the devices root dir\n\t\t\t// or the external config dir\n\t\t\tconst isEmbedded = !path\n\t\t\t\t.relative(devicesDir, filePath)\n\t\t\t\t.startsWith(\"..\");\n\n\t\t\t// When a device file is located in a different root directory than the embedded config files,\n\t\t\t// we use the embedded dir a fallback\n\t\t\tconst rootDir = indexEntry.rootDir ?? devicesDir;\n\t\t\tconst fallbackDirs = rootDir === devicesDir\n\t\t\t\t? undefined\n\t\t\t\t: [devicesDir];\n\n\t\t\ttry {\n\t\t\t\treturn await ConditionalDeviceConfig.from(\n\t\t\t\t\tfilePath,\n\t\t\t\t\tisEmbedded,\n\t\t\t\t\t{ rootDir, fallbackDirs },\n\t\t\t\t);\n\t\t\t} catch (e) {\n\t\t\t\tif (process.env.NODE_ENV !== \"test\") {\n\t\t\t\t\tthis.logger.print(\n\t\t\t\t\t\t`Error loading device config ${filePath}: ${\n\t\t\t\t\t\t\tgetErrorMessage(\n\t\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}`,\n\t\t\t\t\t\t\"error\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Looks up the definition of a given device in the configuration DB\n\t * @param manufacturerId The manufacturer id of the device\n\t * @param productType The product type of the device\n\t * @param productId The product id of the device\n\t * @param firmwareVersion If known, configuration for a specific firmware version can be loaded.\n\t * If this is `undefined` or not given, the first matching file with a defined firmware range will be returned.\n\t */\n\tpublic async lookupDevice(\n\t\tmanufacturerId: number,\n\t\tproductType: number,\n\t\tproductId: number,\n\t\tfirmwareVersion?: string,\n\t): Promise<DeviceConfig | undefined> {\n\t\tconst ret = await this.lookupDevicePreserveConditions(\n\t\t\tmanufacturerId,\n\t\t\tproductType,\n\t\t\tproductId,\n\t\t\tfirmwareVersion,\n\t\t);\n\t\treturn ret?.evaluate({\n\t\t\tmanufacturerId,\n\t\t\tproductType,\n\t\t\tproductId,\n\t\t\tfirmwareVersion,\n\t\t});\n\t}\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["path"]
7
7
  }
@@ -5,6 +5,7 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __getProtoOf = Object.getPrototypeOf;
7
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
8
9
  var __export = (target, all) => {
9
10
  for (var name in all)
10
11
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -45,6 +46,7 @@ const templateCache = /* @__PURE__ */ new Map();
45
46
  function clearTemplateCache() {
46
47
  templateCache.clear();
47
48
  }
49
+ __name(clearTemplateCache, "clearTemplateCache");
48
50
  async function readJsonWithTemplate(filename, rootDirs) {
49
51
  if (!await (0, import_shared.pathExists)(filename)) {
50
52
  throw new import_safe.ZWaveError(`Could not open config file ${filename}: not found!`, import_safe.ZWaveErrorCodes.Config_NotFound);
@@ -60,6 +62,7 @@ async function readJsonWithTemplate(filename, rootDirs) {
60
62
  }
61
63
  return ret;
62
64
  }
65
+ __name(readJsonWithTemplate, "readJsonWithTemplate");
63
66
  function assertImportSpecifier(val, source) {
64
67
  if (typeof val !== "string") {
65
68
  throw new import_safe.ZWaveError(`Invalid import specifier ${String(val)}!${source != void 0 ? ` Source: ${source}` : ""}`, import_safe.ZWaveErrorCodes.Config_Invalid);
@@ -68,12 +71,14 @@ function assertImportSpecifier(val, source) {
68
71
  throw new import_safe.ZWaveError(`Import specifier "${val}" is invalid!${source != void 0 ? ` Source: ${source}` : ""}`, import_safe.ZWaveErrorCodes.Config_Invalid);
69
72
  }
70
73
  }
74
+ __name(assertImportSpecifier, "assertImportSpecifier");
71
75
  function getImportSpecifier(filename, selector) {
72
76
  let ret = filename;
73
77
  if (selector)
74
78
  ret += `#${selector}`;
75
79
  return ret;
76
80
  }
81
+ __name(getImportSpecifier, "getImportSpecifier");
77
82
  function select(obj, selector) {
78
83
  let ret = obj;
79
84
  const selectorParts = selector.split("/").filter((s) => !!s);
@@ -93,6 +98,7 @@ function select(obj, selector) {
93
98
  }
94
99
  return ret;
95
100
  }
101
+ __name(select, "select");
96
102
  function getImportStack(visited, selector) {
97
103
  const source = [...visited, selector ? `#${selector}` : void 0].reverse().filter((s) => !!s);
98
104
  if (source.length > 0) {
@@ -102,6 +108,7 @@ Import stack: ${source.map((s) => `
102
108
  }
103
109
  return "";
104
110
  }
111
+ __name(getImportStack, "getImportStack");
105
112
  async function readJsonWithTemplateInternal(filename, selector, visited, fileCache, rootDirs) {
106
113
  filename = path.normalize(filename);
107
114
  if (rootDirs) {
@@ -138,6 +145,7 @@ ${getImportStack(visited, selector)}`, import_safe.ZWaveErrorCodes.Config_Invali
138
145
  }
139
146
  return resolveJsonImports(selector ? select(json, selector) : json, filename, [...visited, specifier], fileCache, rootDirs);
140
147
  }
148
+ __name(readJsonWithTemplateInternal, "readJsonWithTemplateInternal");
141
149
  async function resolveJsonImports(json, filename, visited, fileCache, rootDirs) {
142
150
  const ret = {};
143
151
  for (const [prop, val] of Object.entries(json)) {
@@ -190,6 +198,7 @@ ${getImportStack(visited, selector)}`, import_safe.ZWaveErrorCodes.Config_Invali
190
198
  }
191
199
  return ret;
192
200
  }
201
+ __name(resolveJsonImports, "resolveJsonImports");
193
202
  // Annotate the CommonJS export names for ESM import in node:
194
203
  0 && (module.exports = {
195
204
  clearTemplateCache,
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/JsonTemplate.ts"],
4
4
  "sourcesContent": ["import { ZWaveError, ZWaveErrorCodes } from \"@zwave-js/core/safe\";\nimport { pathExists } from \"@zwave-js/shared\";\nimport { getErrorMessage } from \"@zwave-js/shared/safe\";\nimport { isArray, isObject } from \"alcalzone-shared/typeguards\";\nimport JSON5 from \"json5\";\nimport fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\n\nconst IMPORT_KEY = \"$import\";\nconst importSpecifierRegex =\n\t/^(?<filename>(?:~\\/)?[\\w\\d\\/\\\\\\._-]+\\.json)?(?:#(?<selector>[\\w\\d\\/\\._-]+(?:\\[0x[0-9a-fA-F]+\\])?))?$/i;\n\ntype FileCache = Map<string, Record<string, unknown>>;\n\n// The template cache is used to speed up cases where the same files get parsed multiple times,\n// e.g. during config file linting. It should be cleared whenever the files need to be loaded fresh\n// from disk, like when creating an index\nconst templateCache: FileCache = new Map();\nexport function clearTemplateCache(): void {\n\ttemplateCache.clear();\n}\n\n/** Parses a JSON file with $import keys and replaces them with the selected objects */\nexport async function readJsonWithTemplate(\n\tfilename: string,\n\trootDirs?: string | string[],\n): Promise<Record<string, unknown>> {\n\tif (!(await pathExists(filename))) {\n\t\tthrow new ZWaveError(\n\t\t\t`Could not open config file ${filename}: not found!`,\n\t\t\tZWaveErrorCodes.Config_NotFound,\n\t\t);\n\t}\n\n\tif (typeof rootDirs === \"string\") rootDirs = [rootDirs];\n\n\t// Try to use the cached versions of the template files to speed up the loading\n\tconst fileCache = new Map(templateCache);\n\tconst ret = await readJsonWithTemplateInternal(\n\t\tfilename,\n\t\tundefined,\n\t\t[],\n\t\tfileCache,\n\t\trootDirs,\n\t);\n\n\t// Only remember the cached templates, not the individual files to save RAM\n\tfor (const [filename, cached] of fileCache) {\n\t\tif (/[\\\\/]templates[\\\\/]/.test(filename)) {\n\t\t\ttemplateCache.set(filename, cached);\n\t\t}\n\t}\n\n\treturn ret;\n}\n\nfunction assertImportSpecifier(\n\tval: unknown,\n\tsource?: string,\n): asserts val is string {\n\tif (typeof val !== \"string\") {\n\t\tthrow new ZWaveError(\n\t\t\t`Invalid import specifier ${String(val)}!${\n\t\t\t\tsource != undefined ? ` Source: ${source}` : \"\"\n\t\t\t}`,\n\t\t\tZWaveErrorCodes.Config_Invalid,\n\t\t);\n\t}\n\tif (!importSpecifierRegex.test(val)) {\n\t\tthrow new ZWaveError(\n\t\t\t`Import specifier \"${val}\" is invalid!${\n\t\t\t\tsource != undefined ? ` Source: ${source}` : \"\"\n\t\t\t}`,\n\t\t\tZWaveErrorCodes.Config_Invalid,\n\t\t);\n\t}\n}\n\nfunction getImportSpecifier(filename: string, selector?: string): string {\n\tlet ret = filename;\n\tif (selector) ret += `#${selector}`;\n\treturn ret;\n}\n\nfunction select(\n\tobj: Record<string, unknown>,\n\tselector: string,\n): Record<string, unknown> {\n\tlet ret: Record<string, unknown> = obj;\n\tconst selectorParts = selector.split(\"/\").filter((s) => !!s);\n\tfor (const part of selectorParts) {\n\t\t// Special case for paramInformation selectors to select params by #\n\t\tif (isArray(ret)) {\n\t\t\tconst item = (ret as any).find(\n\t\t\t\t(r: any) => isObject(r) && \"#\" in r && r[\"#\"] === part,\n\t\t\t);\n\t\t\tif (item != undefined) {\n\t\t\t\t// Don't copy the param number\n\t\t\t\tconst { [\"#\"]: _, ...rest } = item;\n\t\t\t\tret = rest;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\t// By default select the object property\n\t\tret = (ret as any)[part];\n\t}\n\tif (!isObject(ret)) {\n\t\tthrow new ZWaveError(\n\t\t\t`The import target \"${selector}\" is not an object!`,\n\t\t\tZWaveErrorCodes.Config_Invalid,\n\t\t);\n\t}\n\treturn ret;\n}\n\nfunction getImportStack(\n\tvisited: string[],\n\tselector: string | undefined,\n): string {\n\tconst source = [...visited, selector ? `#${selector}` : undefined]\n\t\t.reverse()\n\t\t.filter((s) => !!s) as string[];\n\tif (source.length > 0) {\n\t\treturn `\\nImport stack: ${source.map((s) => `\\n in ${s}`).join(\"\")}`;\n\t}\n\treturn \"\";\n}\n\nasync function readJsonWithTemplateInternal(\n\tfilename: string,\n\tselector: string | undefined,\n\tvisited: string[],\n\tfileCache: FileCache,\n\trootDirs?: string[],\n): Promise<Record<string, unknown>> {\n\tfilename = path.normalize(filename);\n\n\t// If we're limited by one or more root directories, make sure the file is inside one of those\n\tif (rootDirs) {\n\t\tconst outsideAllRootDirs = rootDirs.every((rootDir) => {\n\t\t\tconst relativeToRoot = path.relative(rootDir, filename);\n\t\t\treturn relativeToRoot.startsWith(\"..\");\n\t\t});\n\n\t\tif (outsideAllRootDirs) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`Tried to import config file \"${filename}\" from outside all root directories: ${\n\t\t\t\t\trootDirs\n\t\t\t\t\t\t.map((d) => `\\n\u00B7 ${d}`)\n\t\t\t\t\t\t.join(\"\")\n\t\t\t\t}\n${getImportStack(visited, selector)}`,\n\t\t\t\tZWaveErrorCodes.Config_Invalid,\n\t\t\t);\n\t\t}\n\t}\n\n\tconst specifier = getImportSpecifier(filename, selector);\n\tif (visited.includes(specifier)) {\n\t\tconst msg = `Circular $import in config files: ${\n\t\t\t[\n\t\t\t\t...visited,\n\t\t\t\tspecifier,\n\t\t\t].join(\" -> \")\n\t\t}\\n`;\n\t\t// process.stderr.write(msg + \"\\n\");\n\t\tthrow new ZWaveError(msg, ZWaveErrorCodes.Config_CircularImport);\n\t}\n\n\tlet json: Record<string, unknown>;\n\tif (fileCache.has(filename)) {\n\t\tjson = fileCache.get(filename)!;\n\t} else {\n\t\ttry {\n\t\t\tconst fileContent = await fs.readFile(filename, \"utf8\");\n\t\t\tjson = JSON5.parse(fileContent);\n\t\t\tfileCache.set(filename, json);\n\t\t} catch (e) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`Could not parse config file ${filename}: ${\n\t\t\t\t\tgetErrorMessage(\n\t\t\t\t\t\te,\n\t\t\t\t\t)\n\t\t\t\t}${getImportStack(visited, selector)}`,\n\t\t\t\tZWaveErrorCodes.Config_Invalid,\n\t\t\t);\n\t\t}\n\t}\n\t// Resolve the JSON imports for (a subset) of the file and return the compound file\n\treturn resolveJsonImports(\n\t\tselector ? select(json, selector) : json,\n\t\tfilename,\n\t\t[...visited, specifier],\n\t\tfileCache,\n\t\trootDirs,\n\t);\n}\n\n/** Replaces all `$import` properties in a JSON object with object spreads of the referenced file/property */\nasync function resolveJsonImports(\n\tjson: Record<string, unknown>,\n\tfilename: string,\n\tvisited: string[],\n\tfileCache: FileCache,\n\trootDirs?: string[],\n): Promise<Record<string, unknown>> {\n\tconst ret: Record<string, unknown> = {};\n\t// Loop through all properties and copy them to the resulting object\n\tfor (const [prop, val] of Object.entries(json)) {\n\t\tif (prop === IMPORT_KEY) {\n\t\t\t// This is an import statement. Make sure we're working with a string\n\t\t\tassertImportSpecifier(val, visited.join(\" -> \"));\n\t\t\tconst { filename: importFilename, selector } = importSpecifierRegex\n\t\t\t\t.exec(val)!.groups!;\n\n\t\t\t// Resolve the correct import path\n\t\t\tlet newFilename: string | undefined;\n\t\t\tif (importFilename) {\n\t\t\t\tif (importFilename.startsWith(\"~/\")) {\n\t\t\t\t\t// This is a special import specifier that is relative to the root directory\n\t\t\t\t\t// Try to find at least one root directory that contains the referenced file\n\t\t\t\t\tif (rootDirs) {\n\t\t\t\t\t\tfor (const rootDir of rootDirs) {\n\t\t\t\t\t\t\tnewFilename = path.join(\n\t\t\t\t\t\t\t\trootDir,\n\t\t\t\t\t\t\t\timportFilename.slice(2),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (await pathExists(newFilename)) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Try the next\n\t\t\t\t\t\t\t\tnewFilename = undefined!;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!newFilename) {\n\t\t\t\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t\t\t\t`Could not find the referenced file ${\n\t\t\t\t\t\t\t\t\timportFilename.slice(\n\t\t\t\t\t\t\t\t\t\t2,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t} in any of the root directories: ${\n\t\t\t\t\t\t\t\t\trootDirs\n\t\t\t\t\t\t\t\t\t\t.map((d) => `\\n\u00B7 ${d}`)\n\t\t\t\t\t\t\t\t\t\t.join(\"\")\n\t\t\t\t\t\t\t\t}\\n${\n\t\t\t\t\t\t\t\t\tgetImportStack(\n\t\t\t\t\t\t\t\t\t\tvisited,\n\t\t\t\t\t\t\t\t\t\tselector,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}`,\n\t\t\t\t\t\t\t\tZWaveErrorCodes.Config_Invalid,\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\tthrow new ZWaveError(\n\t\t\t\t\t\t\t`An $import specifier cannot start with ~/ when no root directory is defined!${\n\t\t\t\t\t\t\t\tgetImportStack(\n\t\t\t\t\t\t\t\t\tvisited,\n\t\t\t\t\t\t\t\t\tselector,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}`,\n\t\t\t\t\t\t\tZWaveErrorCodes.Config_Invalid,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tnewFilename = path.join(\n\t\t\t\t\t\tpath.dirname(filename),\n\t\t\t\t\t\timportFilename,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnewFilename = filename;\n\t\t\t}\n\n\t\t\t// const importFilename = path.join(path.dirname(filename), val);\n\t\t\tconst imported = await readJsonWithTemplateInternal(\n\t\t\t\tnewFilename,\n\t\t\t\tselector,\n\t\t\t\tvisited,\n\t\t\t\tfileCache,\n\t\t\t\trootDirs,\n\t\t\t);\n\t\t\tObject.assign(ret, imported);\n\t\t} else if (isObject(val)) {\n\t\t\t// We're looking at an object, recurse into it\n\t\t\tret[prop] = await resolveJsonImports(\n\t\t\t\tval,\n\t\t\t\tfilename,\n\t\t\t\tvisited,\n\t\t\t\tfileCache,\n\t\t\t\trootDirs,\n\t\t\t);\n\t\t} else if (isArray(val)) {\n\t\t\t// We're looking at an array, check if there are objects we need to recurse into\n\t\t\tconst vals: unknown[] = [];\n\t\t\tfor (const v of val) {\n\t\t\t\tif (isObject(v)) {\n\t\t\t\t\tvals.push(\n\t\t\t\t\t\tawait resolveJsonImports(\n\t\t\t\t\t\t\tv,\n\t\t\t\t\t\t\tfilename,\n\t\t\t\t\t\t\tvisited,\n\t\t\t\t\t\t\tfileCache,\n\t\t\t\t\t\t\trootDirs,\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tvals.push(v);\n\t\t\t\t}\n\t\t\t}\n\t\t\tret[prop] = vals;\n\t\t} else {\n\t\t\tret[prop] = val;\n\t\t}\n\t}\n\treturn ret;\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["import_safe", "filename", "fs", "JSON5"]
7
7
  }
@@ -3,6 +3,7 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
7
  var __export = (target, all) => {
7
8
  for (var name in all)
8
9
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -24,6 +25,9 @@ module.exports = __toCommonJS(Logger_exports);
24
25
  var import_core = require("@zwave-js/core");
25
26
  var import_Logger_safe = require("./Logger_safe.js");
26
27
  class ConfigLogger extends import_core.ZWaveLoggerBase {
28
+ static {
29
+ __name(this, "ConfigLogger");
30
+ }
27
31
  constructor(loggers) {
28
32
  super(loggers, import_Logger_safe.CONFIG_LABEL);
29
33
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/Logger.ts"],
4
4
  "sourcesContent": ["import {\n\ttype ZWaveLogContainer,\n\tZWaveLoggerBase,\n\tgetDirectionPrefix,\n} from \"@zwave-js/core\";\nimport {\n\tCONFIG_LABEL,\n\tCONFIG_LOGLEVEL,\n\ttype ConfigLogContext,\n} from \"./Logger_safe.js\";\n\nexport class ConfigLogger extends ZWaveLoggerBase<ConfigLogContext> {\n\tconstructor(loggers: ZWaveLogContainer) {\n\t\tsuper(loggers, CONFIG_LABEL);\n\t}\n\n\t/**\n\t * Logs a message\n\t * @param msg The message to output\n\t */\n\tpublic print(\n\t\tmessage: string,\n\t\tlevel?: \"debug\" | \"verbose\" | \"warn\" | \"error\" | \"info\",\n\t): void {\n\t\tconst actualLevel = level || CONFIG_LOGLEVEL;\n\t\tif (!this.container.isLoglevelVisible(actualLevel)) return;\n\n\t\tthis.logger.log({\n\t\t\tlevel: actualLevel,\n\t\t\tmessage,\n\t\t\tdirection: getDirectionPrefix(\"none\"),\n\t\t\tcontext: { source: \"config\" },\n\t\t});\n\t}\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;;;;;AAAA,kBAIO;AACP,yBAIO;AAED,MAAO,qBAAqB,4BAAiC;EAClE,YAAY,SAA0B;AACrC,UAAM,SAAS,+BAAY;EAC5B;;;;;EAMO,MACN,SACA,OAAuD;AAEvD,UAAM,cAAc,SAAS;AAC7B,QAAI,CAAC,KAAK,UAAU,kBAAkB,WAAW;AAAG;AAEpD,SAAK,OAAO,IAAI;MACf,OAAO;MACP;MACA,eAAW,gCAAmB,MAAM;MACpC,SAAS,EAAE,QAAQ,SAAQ;KAC3B;EACF;;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;;;;;AAAA,kBAIO;AACP,yBAIO;AAED,MAAO,qBAAqB,4BAAiC;EAXnE,OAWmE;;;EAClE,YAAY,SAA0B;AACrC,UAAM,SAAS,+BAAY;EAC5B;;;;;EAMO,MACN,SACA,OAAuD;AAEvD,UAAM,cAAc,SAAS;AAC7B,QAAI,CAAC,KAAK,UAAU,kBAAkB,WAAW;AAAG;AAEpD,SAAK,OAAO,IAAI;MACf,OAAO;MACP;MACA,eAAW,gCAAmB,MAAM;MACpC,SAAS,EAAE,QAAQ,SAAQ;KAC3B;EACF;;",
6
6
  "names": []
7
7
  }
@@ -5,6 +5,7 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __getProtoOf = Object.getPrototypeOf;
7
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
8
9
  var __export = (target, all) => {
9
10
  for (var name in all)
10
11
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -50,6 +51,7 @@ function tryOr(operation, onError) {
50
51
  }
51
52
  };
52
53
  }
54
+ __name(tryOr, "tryOr");
53
55
  add_operation("ver >=", tryOr((a, b) => (0, import_gte.default)((0, import_shared.padVersion)(a), (0, import_shared.padVersion)(b)), false));
54
56
  add_operation("ver >", tryOr((a, b) => (0, import_gt.default)((0, import_shared.padVersion)(a), (0, import_shared.padVersion)(b)), false));
55
57
  add_operation("ver <=", tryOr((a, b) => (0, import_lte.default)((0, import_shared.padVersion)(a), (0, import_shared.padVersion)(b)), false));
@@ -63,10 +65,12 @@ function parseLogic(logic) {
63
65
  ${e.message}`);
64
66
  }
65
67
  }
68
+ __name(parseLogic, "parseLogic");
66
69
  function evaluate(logic, context) {
67
70
  const rules = parseLogic(logic);
68
71
  return apply(rules, context);
69
72
  }
73
+ __name(evaluate, "evaluate");
70
74
  // Annotate the CommonJS export names for ESM import in node:
71
75
  0 && (module.exports = {
72
76
  evaluate,
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/Logic.ts"],
4
4
  "sourcesContent": ["import { padVersion } from \"@zwave-js/shared\";\nimport semverEq from \"semver/functions/eq.js\";\nimport semverGt from \"semver/functions/gt.js\";\nimport semverGte from \"semver/functions/gte.js\";\nimport semverLt from \"semver/functions/lt.js\";\nimport semverLte from \"semver/functions/lte.js\";\nimport { parse } from \"./LogicParser.js\";\n\n// The types are not correct:\nimport { type RulesLogic, default as JsonLogic } from \"json-logic-js\";\nconst { add_operation, apply } = JsonLogic;\n\nfunction tryOr<T extends (...args: any[]) => any>(\n\toperation: T,\n\tonError: ReturnType<T>,\n): T {\n\treturn ((...args: any[]) => {\n\t\ttry {\n\t\t\treturn operation(...args);\n\t\t} catch {\n\t\t\treturn onError;\n\t\t}\n\t}) as any as T;\n}\n\nadd_operation(\n\t\"ver >=\",\n\ttryOr((a, b) => semverGte(padVersion(a), padVersion(b)), false),\n);\nadd_operation(\n\t\"ver >\",\n\ttryOr((a, b) => semverGt(padVersion(a), padVersion(b)), false),\n);\nadd_operation(\n\t\"ver <=\",\n\ttryOr((a, b) => semverLte(padVersion(a), padVersion(b)), false),\n);\nadd_operation(\n\t\"ver <\",\n\ttryOr((a, b) => semverLt(padVersion(a), padVersion(b)), false),\n);\nadd_operation(\n\t\"ver ===\",\n\ttryOr((a, b) => semverEq(padVersion(a), padVersion(b)), false),\n);\n\nexport function parseLogic(logic: string): RulesLogic {\n\ttry {\n\t\t// The generated types for the version comparisons are not compatible with the RulesLogic type\n\t\treturn parse(logic) as unknown as RulesLogic;\n\t} catch (e: any) {\n\t\tthrow new Error(`Invalid logic: ${logic}\\n${e.message}`);\n\t}\n}\n\nexport function evaluate(\n\tlogic: string,\n\tcontext: unknown,\n): string | number | boolean {\n\tconst rules = parseLogic(logic);\n\treturn apply(rules, context);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;AAAA,oBAA2B;AAC3B,gBAAqB;AACrB,gBAAqB;AACrB,iBAAsB;AACtB,gBAAqB;AACrB,iBAAsB;AACtB,yBAAsB;AAGtB,2BAAsD;AACtD,MAAM,EAAE,eAAe,MAAK,IAAK,qBAAAA;AAEjC,SAAS,MACR,WACA,SAAsB;AAEtB,SAAQ,IAAI,SAAe;AAC1B,QAAI;AACH,aAAO,UAAU,GAAG,IAAI;IACzB,QAAQ;AACP,aAAO;IACR;EACD;AACD;AAEA,cACC,UACA,MAAM,CAAC,GAAG,UAAM,WAAAC,aAAU,0BAAW,CAAC,OAAG,0BAAW,CAAC,CAAC,GAAG,KAAK,CAAC;AAEhE,cACC,SACA,MAAM,CAAC,GAAG,UAAM,UAAAC,aAAS,0BAAW,CAAC,OAAG,0BAAW,CAAC,CAAC,GAAG,KAAK,CAAC;AAE/D,cACC,UACA,MAAM,CAAC,GAAG,UAAM,WAAAC,aAAU,0BAAW,CAAC,OAAG,0BAAW,CAAC,CAAC,GAAG,KAAK,CAAC;AAEhE,cACC,SACA,MAAM,CAAC,GAAG,UAAM,UAAAC,aAAS,0BAAW,CAAC,OAAG,0BAAW,CAAC,CAAC,GAAG,KAAK,CAAC;AAE/D,cACC,WACA,MAAM,CAAC,GAAG,UAAM,UAAAC,aAAS,0BAAW,CAAC,OAAG,0BAAW,CAAC,CAAC,GAAG,KAAK,CAAC;AAGzD,SAAU,WAAW,OAAa;AACvC,MAAI;AAEH,eAAO,0BAAM,KAAK;EACnB,SAAS,GAAQ;AAChB,UAAM,IAAI,MAAM,kBAAkB,KAAK;EAAK,EAAE,OAAO,EAAE;EACxD;AACD;AAEM,SAAU,SACf,OACA,SAAgB;AAEhB,QAAM,QAAQ,WAAW,KAAK;AAC9B,SAAO,MAAM,OAAO,OAAO;AAC5B;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;AAAA,oBAA2B;AAC3B,gBAAqB;AACrB,gBAAqB;AACrB,iBAAsB;AACtB,gBAAqB;AACrB,iBAAsB;AACtB,yBAAsB;AAGtB,2BAAsD;AACtD,MAAM,EAAE,eAAe,MAAK,IAAK,qBAAAA;AAEjC,SAAS,MACR,WACA,SAAsB;AAEtB,SAAQ,IAAI,SAAe;AAC1B,QAAI;AACH,aAAO,UAAU,GAAG,IAAI;IACzB,QAAQ;AACP,aAAO;IACR;EACD;AACD;AAXS;AAaT,cACC,UACA,MAAM,CAAC,GAAG,UAAM,WAAAC,aAAU,0BAAW,CAAC,OAAG,0BAAW,CAAC,CAAC,GAAG,KAAK,CAAC;AAEhE,cACC,SACA,MAAM,CAAC,GAAG,UAAM,UAAAC,aAAS,0BAAW,CAAC,OAAG,0BAAW,CAAC,CAAC,GAAG,KAAK,CAAC;AAE/D,cACC,UACA,MAAM,CAAC,GAAG,UAAM,WAAAC,aAAU,0BAAW,CAAC,OAAG,0BAAW,CAAC,CAAC,GAAG,KAAK,CAAC;AAEhE,cACC,SACA,MAAM,CAAC,GAAG,UAAM,UAAAC,aAAS,0BAAW,CAAC,OAAG,0BAAW,CAAC,CAAC,GAAG,KAAK,CAAC;AAE/D,cACC,WACA,MAAM,CAAC,GAAG,UAAM,UAAAC,aAAS,0BAAW,CAAC,OAAG,0BAAW,CAAC,CAAC,GAAG,KAAK,CAAC;AAGzD,SAAU,WAAW,OAAa;AACvC,MAAI;AAEH,eAAO,0BAAM,KAAK;EACnB,SAAS,GAAQ;AAChB,UAAM,IAAI,MAAM,kBAAkB,KAAK;EAAK,EAAE,OAAO,EAAE;EACxD;AACD;AAPgB;AASV,SAAU,SACf,OACA,SAAgB;AAEhB,QAAM,QAAQ,WAAW,KAAK;AAC9B,SAAO,MAAM,OAAO,OAAO;AAC5B;AANgB;",
6
6
  "names": ["JsonLogic", "semverGte", "semverGt", "semverLte", "semverLt", "semverEq"]
7
7
  }