@zwave-js/cc 15.31.1 → 15.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/build/cjs/cc/AlarmSensorCC.js +2 -3
  2. package/build/cjs/cc/AlarmSensorCC.js.map +2 -2
  3. package/build/cjs/cc/AssociationGroupInfoCC.js +5 -2
  4. package/build/cjs/cc/AssociationGroupInfoCC.js.map +2 -2
  5. package/build/cjs/cc/BarrierOperatorCC.js +5 -8
  6. package/build/cjs/cc/BarrierOperatorCC.js.map +2 -2
  7. package/build/cjs/cc/BinarySensorCC.js +1 -2
  8. package/build/cjs/cc/BinarySensorCC.js.map +2 -2
  9. package/build/cjs/cc/ColorSwitchCC.js +3 -5
  10. package/build/cjs/cc/ColorSwitchCC.js.map +2 -2
  11. package/build/cjs/cc/ConfigurationCC.d.ts +7 -0
  12. package/build/cjs/cc/ConfigurationCC.js +28 -8
  13. package/build/cjs/cc/ConfigurationCC.js.map +2 -2
  14. package/build/cjs/cc/EntryControlCC.js +3 -2
  15. package/build/cjs/cc/EntryControlCC.js.map +2 -2
  16. package/build/cjs/cc/IndicatorCC.js +3 -3
  17. package/build/cjs/cc/IndicatorCC.js.map +2 -2
  18. package/build/cjs/cc/IrrigationCC.js.map +1 -1
  19. package/build/cjs/cc/LanguageCC.js +6 -2
  20. package/build/cjs/cc/LanguageCC.js.map +2 -2
  21. package/build/cjs/cc/ManufacturerSpecificCC.js +1 -1
  22. package/build/cjs/cc/ManufacturerSpecificCC.js.map +2 -2
  23. package/build/cjs/cc/MeterCC.js +25 -4
  24. package/build/cjs/cc/MeterCC.js.map +2 -2
  25. package/build/cjs/cc/NodeNamingCC.js +2 -2
  26. package/build/cjs/cc/NodeNamingCC.js.map +2 -2
  27. package/build/cjs/cc/NotificationCC.js +10 -11
  28. package/build/cjs/cc/NotificationCC.js.map +2 -2
  29. package/build/cjs/cc/PowerlevelCC.js +1 -1
  30. package/build/cjs/cc/PowerlevelCC.js.map +2 -2
  31. package/build/cjs/cc/Security2CC.js +11 -6
  32. package/build/cjs/cc/Security2CC.js.map +2 -2
  33. package/build/cjs/cc/SecurityCC.js +2 -1
  34. package/build/cjs/cc/SecurityCC.js.map +2 -2
  35. package/build/cjs/cc/SoundSwitchCC.js +1 -1
  36. package/build/cjs/cc/SoundSwitchCC.js.map +2 -2
  37. package/build/cjs/cc/ThermostatSetpointCC.js +2 -1
  38. package/build/cjs/cc/ThermostatSetpointCC.js.map +2 -2
  39. package/build/cjs/cc/UserCredentialCC.d.ts +6 -0
  40. package/build/cjs/cc/UserCredentialCC.js +81 -6
  41. package/build/cjs/cc/UserCredentialCC.js.map +2 -2
  42. package/build/cjs/cc/WindowCoveringCC.js +1 -2
  43. package/build/cjs/cc/WindowCoveringCC.js.map +2 -2
  44. package/build/cjs/cc/_CCValues.generated.d.ts +2 -2
  45. package/build/cjs/lib/Security2/Extension.js +2 -1
  46. package/build/cjs/lib/Security2/Extension.js.map +2 -2
  47. package/build/cjs/lib/securityLogging.d.ts +6 -0
  48. package/build/cjs/lib/securityLogging.js +34 -0
  49. package/build/cjs/lib/securityLogging.js.map +7 -0
  50. package/build/cjs/lib/serializers.js +3 -0
  51. package/build/cjs/lib/serializers.js.map +2 -2
  52. package/build/esm/cc/AlarmSensorCC.d.ts.map +1 -1
  53. package/build/esm/cc/AlarmSensorCC.js +5 -3
  54. package/build/esm/cc/AlarmSensorCC.js.map +1 -1
  55. package/build/esm/cc/AssociationGroupInfoCC.d.ts.map +1 -1
  56. package/build/esm/cc/AssociationGroupInfoCC.js +10 -6
  57. package/build/esm/cc/AssociationGroupInfoCC.js.map +1 -1
  58. package/build/esm/cc/BarrierOperatorCC.d.ts.map +1 -1
  59. package/build/esm/cc/BarrierOperatorCC.js +6 -9
  60. package/build/esm/cc/BarrierOperatorCC.js.map +1 -1
  61. package/build/esm/cc/BinarySensorCC.d.ts.map +1 -1
  62. package/build/esm/cc/BinarySensorCC.js +2 -3
  63. package/build/esm/cc/BinarySensorCC.js.map +1 -1
  64. package/build/esm/cc/ColorSwitchCC.d.ts.map +1 -1
  65. package/build/esm/cc/ColorSwitchCC.js +4 -7
  66. package/build/esm/cc/ColorSwitchCC.js.map +1 -1
  67. package/build/esm/cc/ConfigurationCC.d.ts +7 -0
  68. package/build/esm/cc/ConfigurationCC.d.ts.map +1 -1
  69. package/build/esm/cc/ConfigurationCC.js +34 -13
  70. package/build/esm/cc/ConfigurationCC.js.map +1 -1
  71. package/build/esm/cc/EntryControlCC.d.ts.map +1 -1
  72. package/build/esm/cc/EntryControlCC.js +4 -3
  73. package/build/esm/cc/EntryControlCC.js.map +1 -1
  74. package/build/esm/cc/IndicatorCC.d.ts.map +1 -1
  75. package/build/esm/cc/IndicatorCC.js +4 -6
  76. package/build/esm/cc/IndicatorCC.js.map +1 -1
  77. package/build/esm/cc/IrrigationCC.js.map +1 -1
  78. package/build/esm/cc/LanguageCC.d.ts.map +1 -1
  79. package/build/esm/cc/LanguageCC.js +8 -3
  80. package/build/esm/cc/LanguageCC.js.map +1 -1
  81. package/build/esm/cc/ManufacturerSpecificCC.d.ts.map +1 -1
  82. package/build/esm/cc/ManufacturerSpecificCC.js +2 -2
  83. package/build/esm/cc/ManufacturerSpecificCC.js.map +1 -1
  84. package/build/esm/cc/MeterCC.d.ts.map +1 -1
  85. package/build/esm/cc/MeterCC.js +27 -5
  86. package/build/esm/cc/MeterCC.js.map +1 -1
  87. package/build/esm/cc/NodeNamingCC.d.ts.map +1 -1
  88. package/build/esm/cc/NodeNamingCC.js +3 -3
  89. package/build/esm/cc/NodeNamingCC.js.map +1 -1
  90. package/build/esm/cc/NotificationCC.d.ts.map +1 -1
  91. package/build/esm/cc/NotificationCC.js +22 -24
  92. package/build/esm/cc/NotificationCC.js.map +1 -1
  93. package/build/esm/cc/PowerlevelCC.d.ts.map +1 -1
  94. package/build/esm/cc/PowerlevelCC.js +2 -2
  95. package/build/esm/cc/PowerlevelCC.js.map +1 -1
  96. package/build/esm/cc/Security2CC.d.ts.map +1 -1
  97. package/build/esm/cc/Security2CC.js +21 -10
  98. package/build/esm/cc/Security2CC.js.map +1 -1
  99. package/build/esm/cc/SecurityCC.d.ts.map +1 -1
  100. package/build/esm/cc/SecurityCC.js +4 -4
  101. package/build/esm/cc/SecurityCC.js.map +1 -1
  102. package/build/esm/cc/SoundSwitchCC.d.ts.map +1 -1
  103. package/build/esm/cc/SoundSwitchCC.js +2 -2
  104. package/build/esm/cc/SoundSwitchCC.js.map +1 -1
  105. package/build/esm/cc/ThermostatSetpointCC.d.ts.map +1 -1
  106. package/build/esm/cc/ThermostatSetpointCC.js +5 -1
  107. package/build/esm/cc/ThermostatSetpointCC.js.map +1 -1
  108. package/build/esm/cc/UserCredentialCC.d.ts +6 -0
  109. package/build/esm/cc/UserCredentialCC.d.ts.map +1 -1
  110. package/build/esm/cc/UserCredentialCC.js +103 -13
  111. package/build/esm/cc/UserCredentialCC.js.map +1 -1
  112. package/build/esm/cc/WindowCoveringCC.d.ts.map +1 -1
  113. package/build/esm/cc/WindowCoveringCC.js +3 -4
  114. package/build/esm/cc/WindowCoveringCC.js.map +1 -1
  115. package/build/esm/cc/_CCValues.generated.d.ts +2 -2
  116. package/build/esm/cc/_CCValues.generated.d.ts.map +1 -1
  117. package/build/esm/lib/Security2/Extension.d.ts.map +1 -1
  118. package/build/esm/lib/Security2/Extension.js +3 -3
  119. package/build/esm/lib/Security2/Extension.js.map +1 -1
  120. package/build/esm/lib/securityLogging.d.ts +6 -0
  121. package/build/esm/lib/securityLogging.d.ts.map +1 -0
  122. package/build/esm/lib/securityLogging.js +10 -0
  123. package/build/esm/lib/securityLogging.js.map +1 -0
  124. package/build/esm/lib/serializers.d.ts.map +1 -1
  125. package/build/esm/lib/serializers.js +4 -0
  126. package/build/esm/lib/serializers.js.map +1 -1
  127. package/package.json +11 -11
@@ -459,8 +459,7 @@ let WindowCoveringCCReport = (() => {
459
459
  }
460
460
  static from(raw, ctx) {
461
461
  (0, import_core.validatePayload)(raw.payload.length >= 4);
462
- const parameter = raw.payload[0];
463
- (0, import_core.validatePayload)((0, import_shared.isEnumMember)(import_Types.WindowCoveringParameter, parameter));
462
+ const parameter = (0, import_core.parseEnumValue)(import_Types.WindowCoveringParameter, raw.payload[0]);
464
463
  (0, import_core.validatePayload)(raw.payload[1] <= 99, raw.payload[2] <= 99);
465
464
  const currentValue = raw.payload[1];
466
465
  const targetValue = raw.payload[2];
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src_gen/cc/WindowCoveringCC.ts"],
4
- "sourcesContent": ["import * as __validateArgs from \"./WindowCoveringCC._validateArgs.js\";\nconst { validateArgs_WindowCoveringCCAPI_get, validateArgs_WindowCoveringCCAPI_set, validateArgs_WindowCoveringCCAPI_startLevelChange, validateArgs_WindowCoveringCCAPI_stopLevelChange } = __validateArgs;\nimport { CommandClasses, Duration, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type MessageRecord, type SupervisionResult, ValueMetadata, type WithAddress, encodeBitMask, logList, logText, parseBitMask, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, getEnumMemberName, isEnumMember, pick } from \"@zwave-js/shared\";\nimport { CCAPI, POLL_VALUE, type PollValueImplementation, SET_VALUE, SET_VALUE_HOOKS, type SetValueImplementation, type SetValueImplementationHooksFactory, throwMissingPropertyKey, throwUnsupportedProperty, throwUnsupportedPropertyKey, throwWrongValueType, } from \"../lib/API.js\";\nimport { windowCoveringParameterToLevelChangeLabel, windowCoveringParameterToMetadataStates, } from \"../lib/CCValueUtils.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type RefreshValuesContext, type RefreshValuesOptions, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, useSupervision, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { type LevelChangeDirection, WindowCoveringCommand, WindowCoveringParameter, } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { WindowCoveringCCValues } from \"./_CCValues.generated.js\";\nexport { WindowCoveringCCValues };\n@API(CommandClasses[\"Window Covering\"])\nexport class WindowCoveringCCAPI extends CCAPI {\n public supportsCommand(cmd: WindowCoveringCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case WindowCoveringCommand.Get:\n case WindowCoveringCommand.Set:\n case WindowCoveringCommand.SupportedGet:\n case WindowCoveringCommand.StartLevelChange:\n case WindowCoveringCommand.StopLevelChange:\n return true; // This is mandatory\n }\n return super.supportsCommand(cmd);\n }\n protected override get [SET_VALUE](): SetValueImplementation {\n return async function (this: WindowCoveringCCAPI, { property, propertyKey }, value, options) {\n const valueId = {\n commandClass: this.ccId,\n property,\n propertyKey,\n };\n if (WindowCoveringCCValues.targetValue.is(valueId)) {\n if (typeof propertyKey !== \"number\"\n // Only odd-numbered parameters have position support and are writable\n || propertyKey % 2 === 0) {\n throwUnsupportedPropertyKey(this.ccId, property, propertyKey!);\n }\n if (typeof value !== \"number\") {\n throwWrongValueType(this.ccId, property, \"number\", typeof value);\n }\n const parameter = propertyKey;\n const duration = Duration.from(options?.transitionDuration);\n return this.set([{ parameter, value }], duration);\n }\n else if (WindowCoveringCCValues.levelChangeUp.is(valueId)\n || WindowCoveringCCValues.levelChangeDown.is(valueId)) {\n if (typeof value !== \"boolean\") {\n throwWrongValueType(this.ccId, property, \"boolean\", typeof value);\n }\n const parameter = propertyKey as number;\n const direction = WindowCoveringCCValues.levelChangeUp.is(valueId)\n ? \"up\"\n : \"down\";\n if (value) {\n // Perform the level change\n const duration = Duration.from(options?.transitionDuration);\n return this.startLevelChange(parameter, direction, duration);\n }\n else {\n return this.stopLevelChange(parameter);\n }\n }\n else {\n throwUnsupportedProperty(this.ccId, property);\n }\n };\n }\n protected [SET_VALUE_HOOKS]: SetValueImplementationHooksFactory = ({ property, propertyKey }, value, options) => {\n const valueId = {\n commandClass: this.ccId,\n property,\n propertyKey,\n };\n if (WindowCoveringCCValues.targetValue.is(valueId)) {\n if (typeof propertyKey !== \"number\")\n return;\n const parameter = propertyKey;\n const duration = Duration.from(options?.transitionDuration);\n const currentValueValueId = WindowCoveringCCValues.currentValue(parameter).endpoint(this.endpoint.index);\n return {\n // This is the target value for a split target/current state pair.\n isSplitStateTargetValue: true,\n // Window Covering commands may take some time to be executed.\n // Therefore we try to supervise the command execution and delay the\n // optimistic update until the final result is received.\n supervisionDelayedUpdates: true,\n supervisionOnSuccess: async () => {\n // Only update currentValue for valid target values\n if (typeof value === \"number\"\n && value >= 0\n && value <= 99) {\n this.tryGetValueDB()?.setValue(currentValueValueId, value);\n }\n else if (value === 255) {\n // We don't know the status now, so refresh the current value\n try {\n await this.get(parameter);\n }\n catch {\n // ignore\n }\n }\n },\n supervisionOnFailure: async () => {\n // The transition failed, so now we don't know the status - refresh the current value\n try {\n await this.get(parameter);\n }\n catch {\n // ignore\n }\n },\n optimisticallyUpdateRelatedValues: (_supervisedAndSuccessful) => {\n // Only update currentValue for valid target values\n if (typeof value === \"number\"\n && value >= 0\n && value <= 99) {\n if (this.isSinglecast()) {\n this.tryGetValueDB()?.setValue(currentValueValueId, value);\n }\n else if (this.isMulticast()) {\n // Figure out which nodes were affected by this command\n const affectedNodes = this.endpoint.node.physicalNodes.filter((node) => node\n .getEndpoint(this.endpoint.index)\n ?.supportsCC(this.ccId));\n // and optimistically update the currentValue\n for (const node of affectedNodes) {\n this.host\n .tryGetValueDB(node.id)\n ?.setValue(currentValueValueId, value);\n }\n }\n }\n },\n verifyChanges: () => {\n if (this.isSinglecast()) {\n // We query currentValue instead of targetValue to make sure that unsolicited updates cancel the scheduled poll\n this.schedulePoll(currentValueValueId, value, {\n duration,\n });\n }\n else {\n // For multicasts, do not schedule a refresh - this could cause a LOT of traffic\n }\n },\n };\n }\n };\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: WindowCoveringCCAPI, { property, propertyKey }) {\n switch (property) {\n case \"currentValue\":\n case \"targetValue\":\n case \"duration\":\n if (propertyKey == undefined) {\n throwMissingPropertyKey(this.ccId, property);\n }\n else if (typeof propertyKey !== \"number\") {\n throwUnsupportedPropertyKey(this.ccId, property, propertyKey);\n }\n return (await this.get(propertyKey))?.[property];\n default:\n throwUnsupportedProperty(this.ccId, property);\n }\n };\n }\n public async getSupported(): Promise<MaybeNotKnown<readonly WindowCoveringParameter[]>> {\n this.assertSupportsCommand(WindowCoveringCommand, WindowCoveringCommand.SupportedGet);\n const cc = new WindowCoveringCCSupportedGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<WindowCoveringCCSupportedReport>(cc, this.commandOptions);\n return response?.supportedParameters;\n }\n @validateArgs_WindowCoveringCCAPI_get()\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async get(parameter: WindowCoveringParameter) {\n this.assertSupportsCommand(WindowCoveringCommand, WindowCoveringCommand.Get);\n const cc = new WindowCoveringCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n parameter,\n });\n const response = await this.host.sendCommand<WindowCoveringCCReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\"currentValue\", \"targetValue\", \"duration\"]);\n }\n }\n @validateArgs_WindowCoveringCCAPI_set()\n public async set(targetValues: {\n parameter: WindowCoveringParameter;\n value: number;\n }[], duration?: Duration | string): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(WindowCoveringCommand, WindowCoveringCommand.Set);\n const cc = new WindowCoveringCCSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n targetValues,\n duration,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n @validateArgs_WindowCoveringCCAPI_startLevelChange()\n public async startLevelChange(parameter: WindowCoveringParameter, direction: keyof typeof LevelChangeDirection, duration?: Duration | string): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(WindowCoveringCommand, WindowCoveringCommand.StartLevelChange);\n const cc = new WindowCoveringCCStartLevelChange({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n parameter,\n direction,\n duration,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n @validateArgs_WindowCoveringCCAPI_stopLevelChange()\n public async stopLevelChange(parameter: WindowCoveringParameter): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(WindowCoveringCommand, WindowCoveringCommand.StopLevelChange);\n const cc = new WindowCoveringCCStopLevelChange({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n parameter,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n}\n@commandClass(CommandClasses[\"Window Covering\"])\n@implementedVersion(1)\n@ccValues(WindowCoveringCCValues)\nexport class WindowCoveringCC extends CommandClass {\n declare ccCommand: WindowCoveringCommand;\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Window Covering\"], ctx, endpoint).withOptions({\n priority: MessagePriority.NodeQuery,\n tag: \"interview\",\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying supported window covering parameters...\",\n direction: \"outbound\",\n });\n const supported = await api.getSupported();\n if (supported?.length) {\n const logMessage = logText(\"supported window covering parameters:\", {\n nested: logList(supported.map((p) => getEnumMemberName(WindowCoveringParameter, p))),\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n // Create metadata for all supported parameters\n for (const param of supported) {\n // Default values\n this.setMetadata(ctx, WindowCoveringCCValues.currentValue(param));\n this.setMetadata(ctx, WindowCoveringCCValues.targetValue(param));\n this.setMetadata(ctx, WindowCoveringCCValues.duration(param));\n // Level change values\n this.setMetadata(ctx, WindowCoveringCCValues.levelChangeUp(param));\n this.setMetadata(ctx, WindowCoveringCCValues.levelChangeDown(param));\n }\n // Query current values for all supported parameters\n await this.refreshValues(ctx, {\n tag: \"interview\",\n onProgress: (completed, total) => node.reportInterviewProgress(completed, total),\n });\n }\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n public async refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Window Covering\"], ctx, endpoint).withOptions({\n priority: options?.priority ?? MessagePriority.NodeQuery,\n tag: options?.tag,\n });\n const parameters: number[] = this.getValue(ctx, WindowCoveringCCValues.supportedParameters)\n ?? [];\n // Only odd parameters have position support and need to be queried\n const queryableParameters = parameters.filter((param) => param % 2 != 0);\n for (const [i, param] of queryableParameters.entries()) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `querying position for parameter ${getEnumMemberName(WindowCoveringParameter, param)}...`,\n direction: \"outbound\",\n });\n await api.get(param);\n options?.onProgress?.(i + 1, queryableParameters.length);\n }\n }\n public translatePropertyKey(ctx: GetValueDB, property: string | number, propertyKey: string | number): string | undefined {\n if (typeof propertyKey === \"number\") {\n return getEnumMemberName(WindowCoveringParameter, propertyKey);\n }\n return super.translatePropertyKey(ctx, property, propertyKey);\n }\n}\n// @publicAPI\nexport interface WindowCoveringCCSupportedReportOptions {\n supportedParameters: readonly WindowCoveringParameter[];\n}\n@CCCommand(WindowCoveringCommand.SupportedReport)\n@ccValueProperty(\"supportedParameters\", WindowCoveringCCValues.supportedParameters)\nexport class WindowCoveringCCSupportedReport extends WindowCoveringCC {\n public constructor(options: WithAddress<WindowCoveringCCSupportedReportOptions>) {\n super(options);\n this.supportedParameters = options.supportedParameters;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCSupportedReport {\n validatePayload(raw.payload.length >= 1);\n const numBitmaskBytes = raw.payload[0] & 0b1111;\n validatePayload(raw.payload.length >= 1 + numBitmaskBytes);\n const bitmask = raw.payload.subarray(1, 1 + numBitmaskBytes);\n const supportedParameters: WindowCoveringParameter[] = parseBitMask(bitmask, WindowCoveringParameter[\"Outbound Left (no position)\"]);\n return new this({\n nodeId: ctx.sourceNodeId,\n supportedParameters,\n });\n }\n public readonly supportedParameters: readonly WindowCoveringParameter[];\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n const bitmask = encodeBitMask(this.supportedParameters, undefined, WindowCoveringParameter[\"Outbound Left (no position)\"]).subarray(0, 15);\n const numBitmaskBytes = bitmask.length & 0b1111;\n this.payload = Bytes.concat([\n [numBitmaskBytes],\n bitmask.subarray(0, numBitmaskBytes),\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"supported parameters\": logList(this.supportedParameters.map((p) => getEnumMemberName(WindowCoveringParameter, p))),\n },\n };\n }\n}\n@CCCommand(WindowCoveringCommand.SupportedGet)\n@expectedCCResponse(WindowCoveringCCSupportedReport)\nexport class WindowCoveringCCSupportedGet extends WindowCoveringCC {\n}\n// @publicAPI\nexport interface WindowCoveringCCReportOptions {\n parameter: WindowCoveringParameter;\n currentValue: number;\n targetValue: number;\n duration: Duration;\n}\n@CCCommand(WindowCoveringCommand.Report)\n@ccValueProperty(\"currentValue\", WindowCoveringCCValues.currentValue, (self) => [self.parameter])\n@ccValueProperty(\"targetValue\", WindowCoveringCCValues.targetValue, (self) => [\n self.parameter,\n])\n@ccValueProperty(\"duration\", WindowCoveringCCValues.duration, (self) => [\n self.parameter,\n])\nexport class WindowCoveringCCReport extends WindowCoveringCC {\n public constructor(options: WithAddress<WindowCoveringCCReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.parameter = options.parameter;\n this.currentValue = options.currentValue;\n this.targetValue = options.targetValue;\n this.duration = options.duration;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCReport {\n validatePayload(raw.payload.length >= 4);\n const parameter: WindowCoveringParameter = raw.payload[0];\n validatePayload(isEnumMember(WindowCoveringParameter, parameter));\n validatePayload(raw.payload[1] <= 99, raw.payload[2] <= 99);\n const currentValue = raw.payload[1];\n const targetValue = raw.payload[2];\n const duration = Duration.parseReport(raw.payload[3]) ?? Duration.unknown();\n return new this({\n nodeId: ctx.sourceNodeId,\n parameter,\n currentValue,\n targetValue,\n duration,\n });\n }\n public readonly parameter: WindowCoveringParameter;\n public readonly currentValue: number;\n public readonly targetValue: number;\n public readonly duration: Duration;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n this.parameter,\n this.currentValue,\n this.targetValue,\n this.duration.serializeReport(),\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n parameter: getEnumMemberName(WindowCoveringParameter, this.parameter),\n \"current value\": this.currentValue,\n \"target value\": this.targetValue,\n duration: this.duration.toString(),\n },\n };\n }\n}\n// @publicAPI\nexport interface WindowCoveringCCGetOptions {\n parameter: WindowCoveringParameter;\n}\nfunction testResponseForWindowCoveringGet(sent: WindowCoveringCCGet, received: WindowCoveringCCReport) {\n return received.parameter === sent.parameter;\n}\n@CCCommand(WindowCoveringCommand.Get)\n@expectedCCResponse(WindowCoveringCCReport, testResponseForWindowCoveringGet)\nexport class WindowCoveringCCGet extends WindowCoveringCC {\n public constructor(options: WithAddress<WindowCoveringCCGetOptions>) {\n super(options);\n this.parameter = options.parameter;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCGet {\n validatePayload(raw.payload.length >= 1);\n const parameter: WindowCoveringParameter = raw.payload[0];\n return new this({\n nodeId: ctx.sourceNodeId,\n parameter,\n });\n }\n public parameter: WindowCoveringParameter;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.parameter]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n parameter: getEnumMemberName(WindowCoveringParameter, this.parameter),\n },\n };\n }\n}\n// @publicAPI\nexport interface WindowCoveringCCSetOptions {\n targetValues: {\n parameter: WindowCoveringParameter;\n value: number;\n }[];\n duration?: Duration | string;\n}\n@CCCommand(WindowCoveringCommand.Set)\n@useSupervision()\nexport class WindowCoveringCCSet extends WindowCoveringCC {\n public constructor(options: WithAddress<WindowCoveringCCSetOptions>) {\n super(options);\n this.targetValues = options.targetValues;\n this.duration = Duration.from(options.duration);\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCSet {\n validatePayload(raw.payload.length >= 1);\n const numEntries = raw.payload[0] & 0b11111;\n validatePayload(raw.payload.length >= 1 + numEntries * 2);\n const targetValues: WindowCoveringCCSetOptions[\"targetValues\"] = [];\n for (let i = 0; i < numEntries; i++) {\n const offset = 1 + i * 2;\n targetValues.push({\n parameter: raw.payload[offset],\n value: raw.payload[offset + 1],\n });\n }\n let duration: Duration | undefined;\n if (raw.payload.length >= 2 + numEntries * 2) {\n duration = Duration.parseSet(raw.payload[1 + numEntries * 2]);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n targetValues,\n duration,\n });\n }\n public targetValues: {\n parameter: WindowCoveringParameter;\n value: number;\n }[];\n public duration: Duration | undefined;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n const numEntries = this.targetValues.length & 0b11111;\n this.payload = new Bytes(2 + numEntries * 2);\n this.payload[0] = numEntries;\n for (let i = 0; i < numEntries; i++) {\n const offset = 1 + i * 2;\n this.payload[offset] = this.targetValues[i].parameter;\n this.payload[offset + 1] = this.targetValues[i].value;\n }\n this.payload[this.payload.length - 1] = (this.duration ?? Duration.default()).serializeSet();\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {};\n for (const { parameter, value } of this.targetValues) {\n message[getEnumMemberName(WindowCoveringParameter, parameter)] =\n value;\n }\n if (this.duration) {\n message.duration = this.duration.toString();\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface WindowCoveringCCStartLevelChangeOptions {\n parameter: WindowCoveringParameter;\n direction: keyof typeof LevelChangeDirection;\n duration?: Duration | string;\n}\n@CCCommand(WindowCoveringCommand.StartLevelChange)\n@useSupervision()\nexport class WindowCoveringCCStartLevelChange extends WindowCoveringCC {\n public constructor(options: WithAddress<WindowCoveringCCStartLevelChangeOptions>) {\n super(options);\n this.parameter = options.parameter;\n this.direction = options.direction;\n this.duration = Duration.from(options.duration);\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCStartLevelChange {\n validatePayload(raw.payload.length >= 2);\n const direction = !!(raw.payload[0] & 64) ? \"down\" : \"up\";\n const parameter: WindowCoveringParameter = raw.payload[1];\n let duration: Duration | undefined;\n if (raw.payload.length >= 3) {\n duration = Duration.parseSet(raw.payload[2]);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n direction,\n parameter,\n duration,\n });\n }\n public parameter: WindowCoveringParameter;\n public direction: keyof typeof LevelChangeDirection;\n public duration: Duration | undefined;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n this.direction === \"down\" ? 64 : 0,\n this.parameter,\n (this.duration ?? Duration.default()).serializeSet(),\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n parameter: getEnumMemberName(WindowCoveringParameter, this.parameter),\n direction: this.direction,\n };\n if (this.duration) {\n message.duration = this.duration.toString();\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface WindowCoveringCCStopLevelChangeOptions {\n parameter: WindowCoveringParameter;\n}\n@CCCommand(WindowCoveringCommand.StopLevelChange)\n@useSupervision()\nexport class WindowCoveringCCStopLevelChange extends WindowCoveringCC {\n public constructor(options: WithAddress<WindowCoveringCCStopLevelChangeOptions>) {\n super(options);\n this.parameter = options.parameter;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCStopLevelChange {\n validatePayload(raw.payload.length >= 1);\n const parameter: WindowCoveringParameter = raw.payload[0];\n return new this({\n nodeId: ctx.sourceNodeId,\n parameter,\n });\n }\n public parameter: WindowCoveringParameter;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.parameter]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n parameter: getEnumMemberName(WindowCoveringParameter, this.parameter),\n },\n };\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import * as __validateArgs from \"./WindowCoveringCC._validateArgs.js\";\nconst { validateArgs_WindowCoveringCCAPI_get, validateArgs_WindowCoveringCCAPI_set, validateArgs_WindowCoveringCCAPI_startLevelChange, validateArgs_WindowCoveringCCAPI_stopLevelChange } = __validateArgs;\nimport { CommandClasses, Duration, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type MessageRecord, type SupervisionResult, ValueMetadata, type WithAddress, encodeBitMask, logList, logText, parseBitMask, parseEnumValue, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, getEnumMemberName, pick } from \"@zwave-js/shared\";\nimport { CCAPI, POLL_VALUE, type PollValueImplementation, SET_VALUE, SET_VALUE_HOOKS, type SetValueImplementation, type SetValueImplementationHooksFactory, throwMissingPropertyKey, throwUnsupportedProperty, throwUnsupportedPropertyKey, throwWrongValueType, } from \"../lib/API.js\";\nimport { windowCoveringParameterToLevelChangeLabel, windowCoveringParameterToMetadataStates, } from \"../lib/CCValueUtils.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type RefreshValuesContext, type RefreshValuesOptions, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, useSupervision, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { type LevelChangeDirection, WindowCoveringCommand, WindowCoveringParameter, } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { WindowCoveringCCValues } from \"./_CCValues.generated.js\";\nexport { WindowCoveringCCValues };\n@API(CommandClasses[\"Window Covering\"])\nexport class WindowCoveringCCAPI extends CCAPI {\n public supportsCommand(cmd: WindowCoveringCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case WindowCoveringCommand.Get:\n case WindowCoveringCommand.Set:\n case WindowCoveringCommand.SupportedGet:\n case WindowCoveringCommand.StartLevelChange:\n case WindowCoveringCommand.StopLevelChange:\n return true; // This is mandatory\n }\n return super.supportsCommand(cmd);\n }\n protected override get [SET_VALUE](): SetValueImplementation {\n return async function (this: WindowCoveringCCAPI, { property, propertyKey }, value, options) {\n const valueId = {\n commandClass: this.ccId,\n property,\n propertyKey,\n };\n if (WindowCoveringCCValues.targetValue.is(valueId)) {\n if (typeof propertyKey !== \"number\"\n // Only odd-numbered parameters have position support and are writable\n || propertyKey % 2 === 0) {\n throwUnsupportedPropertyKey(this.ccId, property, propertyKey!);\n }\n if (typeof value !== \"number\") {\n throwWrongValueType(this.ccId, property, \"number\", typeof value);\n }\n const parameter = propertyKey;\n const duration = Duration.from(options?.transitionDuration);\n return this.set([{ parameter, value }], duration);\n }\n else if (WindowCoveringCCValues.levelChangeUp.is(valueId)\n || WindowCoveringCCValues.levelChangeDown.is(valueId)) {\n if (typeof value !== \"boolean\") {\n throwWrongValueType(this.ccId, property, \"boolean\", typeof value);\n }\n const parameter = propertyKey as number;\n const direction = WindowCoveringCCValues.levelChangeUp.is(valueId)\n ? \"up\"\n : \"down\";\n if (value) {\n // Perform the level change\n const duration = Duration.from(options?.transitionDuration);\n return this.startLevelChange(parameter, direction, duration);\n }\n else {\n return this.stopLevelChange(parameter);\n }\n }\n else {\n throwUnsupportedProperty(this.ccId, property);\n }\n };\n }\n protected [SET_VALUE_HOOKS]: SetValueImplementationHooksFactory = ({ property, propertyKey }, value, options) => {\n const valueId = {\n commandClass: this.ccId,\n property,\n propertyKey,\n };\n if (WindowCoveringCCValues.targetValue.is(valueId)) {\n if (typeof propertyKey !== \"number\")\n return;\n const parameter = propertyKey;\n const duration = Duration.from(options?.transitionDuration);\n const currentValueValueId = WindowCoveringCCValues.currentValue(parameter).endpoint(this.endpoint.index);\n return {\n // This is the target value for a split target/current state pair.\n isSplitStateTargetValue: true,\n // Window Covering commands may take some time to be executed.\n // Therefore we try to supervise the command execution and delay the\n // optimistic update until the final result is received.\n supervisionDelayedUpdates: true,\n supervisionOnSuccess: async () => {\n // Only update currentValue for valid target values\n if (typeof value === \"number\"\n && value >= 0\n && value <= 99) {\n this.tryGetValueDB()?.setValue(currentValueValueId, value);\n }\n else if (value === 255) {\n // We don't know the status now, so refresh the current value\n try {\n await this.get(parameter);\n }\n catch {\n // ignore\n }\n }\n },\n supervisionOnFailure: async () => {\n // The transition failed, so now we don't know the status - refresh the current value\n try {\n await this.get(parameter);\n }\n catch {\n // ignore\n }\n },\n optimisticallyUpdateRelatedValues: (_supervisedAndSuccessful) => {\n // Only update currentValue for valid target values\n if (typeof value === \"number\"\n && value >= 0\n && value <= 99) {\n if (this.isSinglecast()) {\n this.tryGetValueDB()?.setValue(currentValueValueId, value);\n }\n else if (this.isMulticast()) {\n // Figure out which nodes were affected by this command\n const affectedNodes = this.endpoint.node.physicalNodes.filter((node) => node\n .getEndpoint(this.endpoint.index)\n ?.supportsCC(this.ccId));\n // and optimistically update the currentValue\n for (const node of affectedNodes) {\n this.host\n .tryGetValueDB(node.id)\n ?.setValue(currentValueValueId, value);\n }\n }\n }\n },\n verifyChanges: () => {\n if (this.isSinglecast()) {\n // We query currentValue instead of targetValue to make sure that unsolicited updates cancel the scheduled poll\n this.schedulePoll(currentValueValueId, value, {\n duration,\n });\n }\n else {\n // For multicasts, do not schedule a refresh - this could cause a LOT of traffic\n }\n },\n };\n }\n };\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: WindowCoveringCCAPI, { property, propertyKey }) {\n switch (property) {\n case \"currentValue\":\n case \"targetValue\":\n case \"duration\":\n if (propertyKey == undefined) {\n throwMissingPropertyKey(this.ccId, property);\n }\n else if (typeof propertyKey !== \"number\") {\n throwUnsupportedPropertyKey(this.ccId, property, propertyKey);\n }\n return (await this.get(propertyKey))?.[property];\n default:\n throwUnsupportedProperty(this.ccId, property);\n }\n };\n }\n public async getSupported(): Promise<MaybeNotKnown<readonly WindowCoveringParameter[]>> {\n this.assertSupportsCommand(WindowCoveringCommand, WindowCoveringCommand.SupportedGet);\n const cc = new WindowCoveringCCSupportedGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<WindowCoveringCCSupportedReport>(cc, this.commandOptions);\n return response?.supportedParameters;\n }\n @validateArgs_WindowCoveringCCAPI_get()\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async get(parameter: WindowCoveringParameter) {\n this.assertSupportsCommand(WindowCoveringCommand, WindowCoveringCommand.Get);\n const cc = new WindowCoveringCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n parameter,\n });\n const response = await this.host.sendCommand<WindowCoveringCCReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\"currentValue\", \"targetValue\", \"duration\"]);\n }\n }\n @validateArgs_WindowCoveringCCAPI_set()\n public async set(targetValues: {\n parameter: WindowCoveringParameter;\n value: number;\n }[], duration?: Duration | string): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(WindowCoveringCommand, WindowCoveringCommand.Set);\n const cc = new WindowCoveringCCSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n targetValues,\n duration,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n @validateArgs_WindowCoveringCCAPI_startLevelChange()\n public async startLevelChange(parameter: WindowCoveringParameter, direction: keyof typeof LevelChangeDirection, duration?: Duration | string): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(WindowCoveringCommand, WindowCoveringCommand.StartLevelChange);\n const cc = new WindowCoveringCCStartLevelChange({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n parameter,\n direction,\n duration,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n @validateArgs_WindowCoveringCCAPI_stopLevelChange()\n public async stopLevelChange(parameter: WindowCoveringParameter): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(WindowCoveringCommand, WindowCoveringCommand.StopLevelChange);\n const cc = new WindowCoveringCCStopLevelChange({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n parameter,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n}\n@commandClass(CommandClasses[\"Window Covering\"])\n@implementedVersion(1)\n@ccValues(WindowCoveringCCValues)\nexport class WindowCoveringCC extends CommandClass {\n declare ccCommand: WindowCoveringCommand;\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Window Covering\"], ctx, endpoint).withOptions({\n priority: MessagePriority.NodeQuery,\n tag: \"interview\",\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying supported window covering parameters...\",\n direction: \"outbound\",\n });\n const supported = await api.getSupported();\n if (supported?.length) {\n const logMessage = logText(\"supported window covering parameters:\", {\n nested: logList(supported.map((p) => getEnumMemberName(WindowCoveringParameter, p))),\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n // Create metadata for all supported parameters\n for (const param of supported) {\n // Default values\n this.setMetadata(ctx, WindowCoveringCCValues.currentValue(param));\n this.setMetadata(ctx, WindowCoveringCCValues.targetValue(param));\n this.setMetadata(ctx, WindowCoveringCCValues.duration(param));\n // Level change values\n this.setMetadata(ctx, WindowCoveringCCValues.levelChangeUp(param));\n this.setMetadata(ctx, WindowCoveringCCValues.levelChangeDown(param));\n }\n // Query current values for all supported parameters\n await this.refreshValues(ctx, {\n tag: \"interview\",\n onProgress: (completed, total) => node.reportInterviewProgress(completed, total),\n });\n }\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n public async refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Window Covering\"], ctx, endpoint).withOptions({\n priority: options?.priority ?? MessagePriority.NodeQuery,\n tag: options?.tag,\n });\n const parameters: number[] = this.getValue(ctx, WindowCoveringCCValues.supportedParameters)\n ?? [];\n // Only odd parameters have position support and need to be queried\n const queryableParameters = parameters.filter((param) => param % 2 != 0);\n for (const [i, param] of queryableParameters.entries()) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `querying position for parameter ${getEnumMemberName(WindowCoveringParameter, param)}...`,\n direction: \"outbound\",\n });\n await api.get(param);\n options?.onProgress?.(i + 1, queryableParameters.length);\n }\n }\n public translatePropertyKey(ctx: GetValueDB, property: string | number, propertyKey: string | number): string | undefined {\n if (typeof propertyKey === \"number\") {\n return getEnumMemberName(WindowCoveringParameter, propertyKey);\n }\n return super.translatePropertyKey(ctx, property, propertyKey);\n }\n}\n// @publicAPI\nexport interface WindowCoveringCCSupportedReportOptions {\n supportedParameters: readonly WindowCoveringParameter[];\n}\n@CCCommand(WindowCoveringCommand.SupportedReport)\n@ccValueProperty(\"supportedParameters\", WindowCoveringCCValues.supportedParameters)\nexport class WindowCoveringCCSupportedReport extends WindowCoveringCC {\n public constructor(options: WithAddress<WindowCoveringCCSupportedReportOptions>) {\n super(options);\n this.supportedParameters = options.supportedParameters;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCSupportedReport {\n validatePayload(raw.payload.length >= 1);\n const numBitmaskBytes = raw.payload[0] & 0b1111;\n validatePayload(raw.payload.length >= 1 + numBitmaskBytes);\n const bitmask = raw.payload.subarray(1, 1 + numBitmaskBytes);\n const supportedParameters: WindowCoveringParameter[] = parseBitMask(bitmask, WindowCoveringParameter[\"Outbound Left (no position)\"]);\n return new this({\n nodeId: ctx.sourceNodeId,\n supportedParameters,\n });\n }\n public readonly supportedParameters: readonly WindowCoveringParameter[];\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n const bitmask = encodeBitMask(this.supportedParameters, undefined, WindowCoveringParameter[\"Outbound Left (no position)\"]).subarray(0, 15);\n const numBitmaskBytes = bitmask.length & 0b1111;\n this.payload = Bytes.concat([\n [numBitmaskBytes],\n bitmask.subarray(0, numBitmaskBytes),\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"supported parameters\": logList(this.supportedParameters.map((p) => getEnumMemberName(WindowCoveringParameter, p))),\n },\n };\n }\n}\n@CCCommand(WindowCoveringCommand.SupportedGet)\n@expectedCCResponse(WindowCoveringCCSupportedReport)\nexport class WindowCoveringCCSupportedGet extends WindowCoveringCC {\n}\n// @publicAPI\nexport interface WindowCoveringCCReportOptions {\n parameter: WindowCoveringParameter;\n currentValue: number;\n targetValue: number;\n duration: Duration;\n}\n@CCCommand(WindowCoveringCommand.Report)\n@ccValueProperty(\"currentValue\", WindowCoveringCCValues.currentValue, (self) => [self.parameter])\n@ccValueProperty(\"targetValue\", WindowCoveringCCValues.targetValue, (self) => [\n self.parameter,\n])\n@ccValueProperty(\"duration\", WindowCoveringCCValues.duration, (self) => [\n self.parameter,\n])\nexport class WindowCoveringCCReport extends WindowCoveringCC {\n public constructor(options: WithAddress<WindowCoveringCCReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.parameter = options.parameter;\n this.currentValue = options.currentValue;\n this.targetValue = options.targetValue;\n this.duration = options.duration;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCReport {\n validatePayload(raw.payload.length >= 4);\n const parameter = parseEnumValue(WindowCoveringParameter, raw.payload[0]);\n validatePayload(raw.payload[1] <= 99, raw.payload[2] <= 99);\n const currentValue = raw.payload[1];\n const targetValue = raw.payload[2];\n const duration = Duration.parseReport(raw.payload[3]) ?? Duration.unknown();\n return new this({\n nodeId: ctx.sourceNodeId,\n parameter,\n currentValue,\n targetValue,\n duration,\n });\n }\n public readonly parameter: WindowCoveringParameter;\n public readonly currentValue: number;\n public readonly targetValue: number;\n public readonly duration: Duration;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n this.parameter,\n this.currentValue,\n this.targetValue,\n this.duration.serializeReport(),\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n parameter: getEnumMemberName(WindowCoveringParameter, this.parameter),\n \"current value\": this.currentValue,\n \"target value\": this.targetValue,\n duration: this.duration.toString(),\n },\n };\n }\n}\n// @publicAPI\nexport interface WindowCoveringCCGetOptions {\n parameter: WindowCoveringParameter;\n}\nfunction testResponseForWindowCoveringGet(sent: WindowCoveringCCGet, received: WindowCoveringCCReport) {\n return received.parameter === sent.parameter;\n}\n@CCCommand(WindowCoveringCommand.Get)\n@expectedCCResponse(WindowCoveringCCReport, testResponseForWindowCoveringGet)\nexport class WindowCoveringCCGet extends WindowCoveringCC {\n public constructor(options: WithAddress<WindowCoveringCCGetOptions>) {\n super(options);\n this.parameter = options.parameter;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCGet {\n validatePayload(raw.payload.length >= 1);\n const parameter: WindowCoveringParameter = raw.payload[0];\n return new this({\n nodeId: ctx.sourceNodeId,\n parameter,\n });\n }\n public parameter: WindowCoveringParameter;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.parameter]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n parameter: getEnumMemberName(WindowCoveringParameter, this.parameter),\n },\n };\n }\n}\n// @publicAPI\nexport interface WindowCoveringCCSetOptions {\n targetValues: {\n parameter: WindowCoveringParameter;\n value: number;\n }[];\n duration?: Duration | string;\n}\n@CCCommand(WindowCoveringCommand.Set)\n@useSupervision()\nexport class WindowCoveringCCSet extends WindowCoveringCC {\n public constructor(options: WithAddress<WindowCoveringCCSetOptions>) {\n super(options);\n this.targetValues = options.targetValues;\n this.duration = Duration.from(options.duration);\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCSet {\n validatePayload(raw.payload.length >= 1);\n const numEntries = raw.payload[0] & 0b11111;\n validatePayload(raw.payload.length >= 1 + numEntries * 2);\n const targetValues: WindowCoveringCCSetOptions[\"targetValues\"] = [];\n for (let i = 0; i < numEntries; i++) {\n const offset = 1 + i * 2;\n targetValues.push({\n parameter: raw.payload[offset],\n value: raw.payload[offset + 1],\n });\n }\n let duration: Duration | undefined;\n if (raw.payload.length >= 2 + numEntries * 2) {\n duration = Duration.parseSet(raw.payload[1 + numEntries * 2]);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n targetValues,\n duration,\n });\n }\n public targetValues: {\n parameter: WindowCoveringParameter;\n value: number;\n }[];\n public duration: Duration | undefined;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n const numEntries = this.targetValues.length & 0b11111;\n this.payload = new Bytes(2 + numEntries * 2);\n this.payload[0] = numEntries;\n for (let i = 0; i < numEntries; i++) {\n const offset = 1 + i * 2;\n this.payload[offset] = this.targetValues[i].parameter;\n this.payload[offset + 1] = this.targetValues[i].value;\n }\n this.payload[this.payload.length - 1] = (this.duration ?? Duration.default()).serializeSet();\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {};\n for (const { parameter, value } of this.targetValues) {\n message[getEnumMemberName(WindowCoveringParameter, parameter)] =\n value;\n }\n if (this.duration) {\n message.duration = this.duration.toString();\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface WindowCoveringCCStartLevelChangeOptions {\n parameter: WindowCoveringParameter;\n direction: keyof typeof LevelChangeDirection;\n duration?: Duration | string;\n}\n@CCCommand(WindowCoveringCommand.StartLevelChange)\n@useSupervision()\nexport class WindowCoveringCCStartLevelChange extends WindowCoveringCC {\n public constructor(options: WithAddress<WindowCoveringCCStartLevelChangeOptions>) {\n super(options);\n this.parameter = options.parameter;\n this.direction = options.direction;\n this.duration = Duration.from(options.duration);\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCStartLevelChange {\n validatePayload(raw.payload.length >= 2);\n const direction = !!(raw.payload[0] & 64) ? \"down\" : \"up\";\n const parameter: WindowCoveringParameter = raw.payload[1];\n let duration: Duration | undefined;\n if (raw.payload.length >= 3) {\n duration = Duration.parseSet(raw.payload[2]);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n direction,\n parameter,\n duration,\n });\n }\n public parameter: WindowCoveringParameter;\n public direction: keyof typeof LevelChangeDirection;\n public duration: Duration | undefined;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n this.direction === \"down\" ? 64 : 0,\n this.parameter,\n (this.duration ?? Duration.default()).serializeSet(),\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n parameter: getEnumMemberName(WindowCoveringParameter, this.parameter),\n direction: this.direction,\n };\n if (this.duration) {\n message.duration = this.duration.toString();\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface WindowCoveringCCStopLevelChangeOptions {\n parameter: WindowCoveringParameter;\n}\n@CCCommand(WindowCoveringCommand.StopLevelChange)\n@useSupervision()\nexport class WindowCoveringCCStopLevelChange extends WindowCoveringCC {\n public constructor(options: WithAddress<WindowCoveringCCStopLevelChangeOptions>) {\n super(options);\n this.parameter = options.parameter;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCStopLevelChange {\n validatePayload(raw.payload.length >= 1);\n const parameter: WindowCoveringParameter = raw.payload[0];\n return new this({\n nodeId: ctx.sourceNodeId,\n parameter,\n });\n }\n public parameter: WindowCoveringParameter;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.parameter]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n parameter: getEnumMemberName(WindowCoveringParameter, this.parameter),\n },\n };\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -774,7 +774,7 @@ export declare const BatteryCCValues: Readonly<{
774
774
  readonly writeable: false;
775
775
  readonly type: "number";
776
776
  readonly label: "Temperature";
777
- readonly unit: "\u00B0C";
777
+ readonly unit: "°C";
778
778
  };
779
779
  options: {
780
780
  readonly internal: false;
@@ -9583,7 +9583,7 @@ export declare const CCValues: {
9583
9583
  readonly writeable: false;
9584
9584
  readonly type: "number";
9585
9585
  readonly label: "Temperature";
9586
- readonly unit: "\u00B0C";
9586
+ readonly unit: "°C";
9587
9587
  };
9588
9588
  options: {
9589
9589
  readonly internal: false;
@@ -37,6 +37,7 @@ var import_tslib = require("tslib");
37
37
  var import_core = require("@zwave-js/core");
38
38
  var import_reflection = require("@zwave-js/core/reflection");
39
39
  var import_shared = require("@zwave-js/shared");
40
+ var import_securityLogging = require("../securityLogging.js");
40
41
  var S2ExtensionType;
41
42
  (function(S2ExtensionType2) {
42
43
  S2ExtensionType2[S2ExtensionType2["SPAN"] = 1] = "SPAN";
@@ -300,7 +301,7 @@ let MPANExtension = (() => {
300
301
  return super.serialize(moreToFollow);
301
302
  }
302
303
  toLogEntryDict() {
303
- const mpanState = (0, import_shared.getenv)("NODE_ENV") === "test" || (0, import_shared.getenv)("NODE_ENV") === "development" ? (0, import_shared.buffer2hex)(this.innerMPANState) : "(hidden)";
304
+ const mpanState = (0, import_securityLogging.shouldLogSecurityDetails)() ? (0, import_shared.buffer2hex)(this.innerMPANState) : "(hidden)";
304
305
  return {
305
306
  "group ID": this.groupId,
306
307
  "MPAN state": mpanState
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src_gen/lib/Security2/Extension.ts"],
4
- "sourcesContent": ["import {\n\ttype LogPayloadText,\n\ttype MessageRecord,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tlogBuffer,\n\tlogDict,\n\tlogText,\n\tvalidatePayload,\n} from \"@zwave-js/core\";\nimport { createSimpleReflectionDecorator } from \"@zwave-js/core/reflection\";\nimport {\n\tBytes,\n\ttype BytesView,\n\tbuffer2hex,\n\tgetEnumMemberName,\n\tgetenv,\n} from \"@zwave-js/shared\";\n\nenum S2ExtensionType {\n\tSPAN = 0x01,\n\tMPAN = 0x02,\n\tMGRP = 0x03,\n\tMOS = 0x04,\n}\n\nconst extensionTypeDecorator = createSimpleReflectionDecorator<\n\ttypeof Security2Extension,\n\t[type: S2ExtensionType],\n\tSecurity2ExtensionConstructor<Security2Extension>\n>({\n\tname: \"extensionType\",\n});\n\n/** Defines which S2 extension type a subclass of S2Extension has */\nexport const extensionType = extensionTypeDecorator.decorator;\n\n/** Returns which S2 extension type a subclass of S2Extension has */\nexport const getExtensionType = extensionTypeDecorator.lookupValue;\n\n/**\n * Looks up the S2 extension constructor for a given S2 extension type\n */\nexport const getS2ExtensionConstructor =\n\textensionTypeDecorator.lookupConstructor;\n\nexport type Security2ExtensionConstructor<T extends Security2Extension> =\n\ttypeof Security2Extension & {\n\t\tnew (options: Security2ExtensionOptions): T;\n\t};\n\nexport enum ValidateS2ExtensionResult {\n\tOK,\n\tDiscardExtension,\n\tDiscardCommand,\n}\n\n/** Tests if the extension may be accepted */\nexport function validateS2Extension(\n\text: Security2Extension,\n\twasEncrypted: boolean,\n): ValidateS2ExtensionResult {\n\tif (ext instanceof InvalidExtension) {\n\t\t// The extension could not be parsed, ignore it\n\t\treturn ValidateS2ExtensionResult.DiscardExtension;\n\t}\n\n\tif (ext.critical && !(ext.type in S2ExtensionType)) {\n\t\t// A receiving node MUST discard the entire command if the Critical flag\n\t\t// is set to \u20181\u2019 and the Type field advertises a value that the\n\t\t// receiving node does not support.\n\t\treturn ValidateS2ExtensionResult.DiscardCommand;\n\t}\n\n\t// Check if the extension is correctly encrypted or not encrypted\n\tswitch (ext.type) {\n\t\tcase S2ExtensionType.MPAN:\n\t\t\tif (!wasEncrypted) {\n\t\t\t\treturn ValidateS2ExtensionResult.DiscardExtension;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase S2ExtensionType.SPAN:\n\t\tcase S2ExtensionType.MGRP:\n\t\tcase S2ExtensionType.MOS:\n\t\t\tif (wasEncrypted) {\n\t\t\t\treturn ValidateS2ExtensionResult.DiscardExtension;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\n\treturn ValidateS2ExtensionResult.OK;\n}\n\nexport class Security2ExtensionRaw {\n\tpublic constructor(\n\t\tpublic type: S2ExtensionType,\n\t\tpublic critical: boolean,\n\t\tpublic readonly moreToFollow: boolean,\n\t\tpublic payload: BytesView,\n\t) {}\n\n\tpublic static parse(data: BytesView): Security2ExtensionRaw {\n\t\tvalidatePayload(data.length >= 2);\n\t\tconst totalLength = data[0];\n\t\tconst moreToFollow = !!(data[1] & 0b1000_0000);\n\t\tconst critical = !!(data[1] & 0b0100_0000);\n\t\tconst type = data[1] & 0b11_1111;\n\t\tconst payload = data.subarray(2, totalLength);\n\n\t\treturn new Security2ExtensionRaw(type, critical, moreToFollow, payload);\n\t}\n\n\tpublic withPayload(payload: Bytes): Security2ExtensionRaw {\n\t\treturn new Security2ExtensionRaw(\n\t\t\tthis.type,\n\t\t\tthis.critical,\n\t\t\tthis.moreToFollow,\n\t\t\tpayload,\n\t\t);\n\t}\n}\n\ninterface Security2ExtensionBaseOptions {\n\tcritical?: boolean;\n\tmoreToFollow?: boolean;\n}\n\ninterface Security2ExtensionOptions extends Security2ExtensionBaseOptions {\n\ttype?: S2ExtensionType;\n\tpayload?: BytesView;\n}\n\nexport class Security2Extension {\n\tpublic constructor(options: Security2ExtensionOptions) {\n\t\tconst {\n\t\t\t// Try to determine the extension type if none is given\n\t\t\ttype = getExtensionType(this),\n\t\t\tcritical = false,\n\t\t\tmoreToFollow = false,\n\t\t\tpayload = new Uint8Array(),\n\t\t} = options;\n\n\t\tif (type == undefined) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"A Security2Extension must have a given or predefined extension type\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\n\t\tthis.type = type;\n\t\tthis.critical = critical;\n\t\tthis.moreToFollow = moreToFollow;\n\t\tthis.payload = payload;\n\t}\n\n\tpublic static parse(data: BytesView): Security2Extension {\n\t\tconst raw = Security2ExtensionRaw.parse(data);\n\t\tconst Constructor =\n\t\t\tgetS2ExtensionConstructor(raw.type) ?? Security2Extension;\n\t\treturn Constructor.from(raw);\n\t}\n\n\t/** Creates an instance of the message that is serialized in the given buffer */\n\tpublic static from(raw: Security2ExtensionRaw): Security2Extension {\n\t\treturn new this({\n\t\t\ttype: raw.type,\n\t\t\tcritical: raw.critical,\n\t\t\tmoreToFollow: raw.moreToFollow,\n\t\t\tpayload: raw.payload,\n\t\t});\n\t}\n\n\tpublic type: S2ExtensionType;\n\tpublic critical: boolean;\n\tpublic readonly moreToFollow?: boolean;\n\tpublic payload: BytesView;\n\n\tpublic isEncrypted(): boolean {\n\t\treturn false;\n\t}\n\n\tpublic serialize(moreToFollow: boolean): Bytes {\n\t\treturn Bytes.concat([\n\t\t\t[\n\t\t\t\t2 + this.payload.length,\n\t\t\t\t(moreToFollow ? 0b1000_0000 : 0)\n\t\t\t\t\t| (this.critical ? 0b0100_0000 : 0)\n\t\t\t\t\t| (this.type & 0b11_1111),\n\t\t\t],\n\t\t\tthis.payload,\n\t\t]);\n\t}\n\n\t/** Returns the number of bytes the first extension in the buffer occupies */\n\tpublic static getExtensionLength(data: BytesView): {\n\t\texpected?: number;\n\t\tactual: number;\n\t} {\n\t\tconst actual = data[0];\n\t\tlet expected: number | undefined;\n\n\t\t// For known extensions, return the expected length\n\t\tconst type = data[1] & 0b11_1111;\n\t\tswitch (type) {\n\t\t\tcase S2ExtensionType.SPAN:\n\t\t\t\texpected = SPANExtension.expectedLength;\n\t\t\t\tbreak;\n\t\t\tcase S2ExtensionType.MPAN:\n\t\t\t\texpected = MPANExtension.expectedLength;\n\t\t\t\tbreak;\n\t\t\tcase S2ExtensionType.MGRP:\n\t\t\t\texpected = MGRPExtension.expectedLength;\n\t\t\t\tbreak;\n\t\t\tcase S2ExtensionType.MOS:\n\t\t\t\texpected = MOSExtension.expectedLength;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn { expected, actual };\n\t}\n\n\t/** Returns the number of bytes the serialized extension will occupy */\n\tpublic computeLength(): number {\n\t\treturn 2 + this.payload.length;\n\t}\n\n\tpublic toLogEntry(): LogPayloadText {\n\t\treturn logText([], {\n\t\t\ttags: [getEnumMemberName(S2ExtensionType, this.type)],\n\t\t\tnested: logDict(this.toLogEntryDict()),\n\t\t});\n\t}\n\n\tprotected toLogEntryDict(): MessageRecord {\n\t\treturn {\n\t\t\tpayload: logBuffer(this.payload),\n\t\t};\n\t}\n}\n\nexport class InvalidExtension extends Security2Extension {}\n\ninterface SPANExtensionOptions {\n\tsenderEI: BytesView;\n}\n\n@extensionType(S2ExtensionType.SPAN)\nexport class SPANExtension extends Security2Extension {\n\tpublic constructor(\n\t\toptions: SPANExtensionOptions & Security2ExtensionBaseOptions,\n\t) {\n\t\tif (options.senderEI.length !== 16) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The sender's entropy must be a 16-byte buffer!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tsuper({ critical: true, ...options });\n\t\tthis.senderEI = options.senderEI;\n\t}\n\n\tpublic static from(raw: Security2ExtensionRaw): Security2Extension {\n\t\tvalidatePayload(raw.payload.length === 16);\n\t\tconst senderEI = raw.payload;\n\n\t\treturn new SPANExtension({\n\t\t\tcritical: raw.critical,\n\t\t\tmoreToFollow: raw.moreToFollow,\n\t\t\tsenderEI,\n\t\t});\n\t}\n\n\tpublic senderEI: BytesView;\n\tpublic static readonly expectedLength = 18;\n\n\tpublic serialize(moreToFollow: boolean): Bytes {\n\t\tthis.payload = this.senderEI;\n\t\treturn super.serialize(moreToFollow);\n\t}\n\n\tprotected toLogEntryDict(): MessageRecord {\n\t\treturn {\n\t\t\t\"sender EI\": buffer2hex(this.senderEI),\n\t\t};\n\t}\n}\n\ninterface MPANExtensionOptions {\n\tgroupId: number;\n\tinnerMPANState: BytesView;\n}\n\n@extensionType(S2ExtensionType.MPAN)\nexport class MPANExtension extends Security2Extension {\n\tpublic constructor(\n\t\toptions: MPANExtensionOptions & Security2ExtensionBaseOptions,\n\t) {\n\t\tif (options.innerMPANState.length !== 16) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The inner MPAN state must be a 16-byte buffer!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tsuper({ critical: true, ...options });\n\t\tthis.groupId = options.groupId;\n\t\tthis.innerMPANState = options.innerMPANState;\n\t}\n\n\tpublic static from(raw: Security2ExtensionRaw): Security2Extension {\n\t\tvalidatePayload(raw.payload.length === 17);\n\t\tconst groupId = raw.payload[0];\n\t\tconst innerMPANState = raw.payload.subarray(1);\n\n\t\treturn new MPANExtension({\n\t\t\tcritical: raw.critical,\n\t\t\tmoreToFollow: raw.moreToFollow,\n\t\t\tgroupId,\n\t\t\tinnerMPANState,\n\t\t});\n\t}\n\n\tpublic groupId: number;\n\tpublic innerMPANState: BytesView;\n\n\tpublic isEncrypted(): boolean {\n\t\treturn true;\n\t}\n\n\tpublic static readonly expectedLength = 19;\n\n\tpublic serialize(moreToFollow: boolean): Bytes {\n\t\tthis.payload = Bytes.concat([[this.groupId], this.innerMPANState]);\n\t\treturn super.serialize(moreToFollow);\n\t}\n\n\tprotected toLogEntryDict(): MessageRecord {\n\t\tconst mpanState =\n\t\t\tgetenv(\"NODE_ENV\") === \"test\"\n\t\t\t|| getenv(\"NODE_ENV\") === \"development\"\n\t\t\t\t? buffer2hex(this.innerMPANState)\n\t\t\t\t: \"(hidden)\";\n\t\treturn {\n\t\t\t\"group ID\": this.groupId,\n\t\t\t\"MPAN state\": mpanState,\n\t\t};\n\t}\n}\n\ninterface MGRPExtensionOptions {\n\tgroupId: number;\n}\n\n@extensionType(S2ExtensionType.MGRP)\nexport class MGRPExtension extends Security2Extension {\n\tpublic constructor(\n\t\toptions: MGRPExtensionOptions & Security2ExtensionBaseOptions,\n\t) {\n\t\tsuper({ critical: true, ...options });\n\t\tthis.groupId = options.groupId;\n\t}\n\n\tpublic static from(raw: Security2ExtensionRaw): Security2Extension {\n\t\tvalidatePayload(raw.payload.length === 1);\n\t\tconst groupId = raw.payload[0];\n\n\t\treturn new MGRPExtension({\n\t\t\tcritical: raw.critical,\n\t\t\tmoreToFollow: raw.moreToFollow,\n\t\t\tgroupId,\n\t\t});\n\t}\n\n\tpublic groupId: number;\n\n\tpublic static readonly expectedLength = 3;\n\n\tpublic serialize(moreToFollow: boolean): Bytes {\n\t\tthis.payload = Bytes.from([this.groupId]);\n\t\treturn super.serialize(moreToFollow);\n\t}\n\n\tprotected toLogEntryDict(): MessageRecord {\n\t\treturn {\n\t\t\t\"group ID\": this.groupId,\n\t\t};\n\t}\n}\n\n@extensionType(S2ExtensionType.MOS)\nexport class MOSExtension extends Security2Extension {\n\tpublic constructor(options: Security2ExtensionBaseOptions = {}) {\n\t\tsuper({ critical: false, ...options });\n\t}\n\n\tpublic static readonly expectedLength = 2;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n\ttype LogPayloadText,\n\ttype MessageRecord,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tlogBuffer,\n\tlogDict,\n\tlogText,\n\tvalidatePayload,\n} from \"@zwave-js/core\";\nimport { createSimpleReflectionDecorator } from \"@zwave-js/core/reflection\";\nimport {\n\tBytes,\n\ttype BytesView,\n\tbuffer2hex,\n\tgetEnumMemberName,\n} from \"@zwave-js/shared\";\n\nimport { shouldLogSecurityDetails } from \"../securityLogging.js\";\n\nenum S2ExtensionType {\n\tSPAN = 0x01,\n\tMPAN = 0x02,\n\tMGRP = 0x03,\n\tMOS = 0x04,\n}\n\nconst extensionTypeDecorator = createSimpleReflectionDecorator<\n\ttypeof Security2Extension,\n\t[type: S2ExtensionType],\n\tSecurity2ExtensionConstructor<Security2Extension>\n>({\n\tname: \"extensionType\",\n});\n\n/** Defines which S2 extension type a subclass of S2Extension has */\nexport const extensionType = extensionTypeDecorator.decorator;\n\n/** Returns which S2 extension type a subclass of S2Extension has */\nexport const getExtensionType = extensionTypeDecorator.lookupValue;\n\n/**\n * Looks up the S2 extension constructor for a given S2 extension type\n */\nexport const getS2ExtensionConstructor =\n\textensionTypeDecorator.lookupConstructor;\n\nexport type Security2ExtensionConstructor<T extends Security2Extension> =\n\ttypeof Security2Extension & {\n\t\tnew (options: Security2ExtensionOptions): T;\n\t};\n\nexport enum ValidateS2ExtensionResult {\n\tOK,\n\tDiscardExtension,\n\tDiscardCommand,\n}\n\n/** Tests if the extension may be accepted */\nexport function validateS2Extension(\n\text: Security2Extension,\n\twasEncrypted: boolean,\n): ValidateS2ExtensionResult {\n\tif (ext instanceof InvalidExtension) {\n\t\t// The extension could not be parsed, ignore it\n\t\treturn ValidateS2ExtensionResult.DiscardExtension;\n\t}\n\n\tif (ext.critical && !(ext.type in S2ExtensionType)) {\n\t\t// A receiving node MUST discard the entire command if the Critical flag\n\t\t// is set to \u20181\u2019 and the Type field advertises a value that the\n\t\t// receiving node does not support.\n\t\treturn ValidateS2ExtensionResult.DiscardCommand;\n\t}\n\n\t// Check if the extension is correctly encrypted or not encrypted\n\tswitch (ext.type) {\n\t\tcase S2ExtensionType.MPAN:\n\t\t\tif (!wasEncrypted) {\n\t\t\t\treturn ValidateS2ExtensionResult.DiscardExtension;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase S2ExtensionType.SPAN:\n\t\tcase S2ExtensionType.MGRP:\n\t\tcase S2ExtensionType.MOS:\n\t\t\tif (wasEncrypted) {\n\t\t\t\treturn ValidateS2ExtensionResult.DiscardExtension;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\n\treturn ValidateS2ExtensionResult.OK;\n}\n\nexport class Security2ExtensionRaw {\n\tpublic constructor(\n\t\tpublic type: S2ExtensionType,\n\t\tpublic critical: boolean,\n\t\tpublic readonly moreToFollow: boolean,\n\t\tpublic payload: BytesView,\n\t) {}\n\n\tpublic static parse(data: BytesView): Security2ExtensionRaw {\n\t\tvalidatePayload(data.length >= 2);\n\t\tconst totalLength = data[0];\n\t\tconst moreToFollow = !!(data[1] & 0b1000_0000);\n\t\tconst critical = !!(data[1] & 0b0100_0000);\n\t\tconst type = data[1] & 0b11_1111;\n\t\tconst payload = data.subarray(2, totalLength);\n\n\t\treturn new Security2ExtensionRaw(type, critical, moreToFollow, payload);\n\t}\n\n\tpublic withPayload(payload: Bytes): Security2ExtensionRaw {\n\t\treturn new Security2ExtensionRaw(\n\t\t\tthis.type,\n\t\t\tthis.critical,\n\t\t\tthis.moreToFollow,\n\t\t\tpayload,\n\t\t);\n\t}\n}\n\ninterface Security2ExtensionBaseOptions {\n\tcritical?: boolean;\n\tmoreToFollow?: boolean;\n}\n\ninterface Security2ExtensionOptions extends Security2ExtensionBaseOptions {\n\ttype?: S2ExtensionType;\n\tpayload?: BytesView;\n}\n\nexport class Security2Extension {\n\tpublic constructor(options: Security2ExtensionOptions) {\n\t\tconst {\n\t\t\t// Try to determine the extension type if none is given\n\t\t\ttype = getExtensionType(this),\n\t\t\tcritical = false,\n\t\t\tmoreToFollow = false,\n\t\t\tpayload = new Uint8Array(),\n\t\t} = options;\n\n\t\tif (type == undefined) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"A Security2Extension must have a given or predefined extension type\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\n\t\tthis.type = type;\n\t\tthis.critical = critical;\n\t\tthis.moreToFollow = moreToFollow;\n\t\tthis.payload = payload;\n\t}\n\n\tpublic static parse(data: BytesView): Security2Extension {\n\t\tconst raw = Security2ExtensionRaw.parse(data);\n\t\tconst Constructor =\n\t\t\tgetS2ExtensionConstructor(raw.type) ?? Security2Extension;\n\t\treturn Constructor.from(raw);\n\t}\n\n\t/** Creates an instance of the message that is serialized in the given buffer */\n\tpublic static from(raw: Security2ExtensionRaw): Security2Extension {\n\t\treturn new this({\n\t\t\ttype: raw.type,\n\t\t\tcritical: raw.critical,\n\t\t\tmoreToFollow: raw.moreToFollow,\n\t\t\tpayload: raw.payload,\n\t\t});\n\t}\n\n\tpublic type: S2ExtensionType;\n\tpublic critical: boolean;\n\tpublic readonly moreToFollow?: boolean;\n\tpublic payload: BytesView;\n\n\tpublic isEncrypted(): boolean {\n\t\treturn false;\n\t}\n\n\tpublic serialize(moreToFollow: boolean): Bytes {\n\t\treturn Bytes.concat([\n\t\t\t[\n\t\t\t\t2 + this.payload.length,\n\t\t\t\t(moreToFollow ? 0b1000_0000 : 0)\n\t\t\t\t\t| (this.critical ? 0b0100_0000 : 0)\n\t\t\t\t\t| (this.type & 0b11_1111),\n\t\t\t],\n\t\t\tthis.payload,\n\t\t]);\n\t}\n\n\t/** Returns the number of bytes the first extension in the buffer occupies */\n\tpublic static getExtensionLength(data: BytesView): {\n\t\texpected?: number;\n\t\tactual: number;\n\t} {\n\t\tconst actual = data[0];\n\t\tlet expected: number | undefined;\n\n\t\t// For known extensions, return the expected length\n\t\tconst type = data[1] & 0b11_1111;\n\t\tswitch (type) {\n\t\t\tcase S2ExtensionType.SPAN:\n\t\t\t\texpected = SPANExtension.expectedLength;\n\t\t\t\tbreak;\n\t\t\tcase S2ExtensionType.MPAN:\n\t\t\t\texpected = MPANExtension.expectedLength;\n\t\t\t\tbreak;\n\t\t\tcase S2ExtensionType.MGRP:\n\t\t\t\texpected = MGRPExtension.expectedLength;\n\t\t\t\tbreak;\n\t\t\tcase S2ExtensionType.MOS:\n\t\t\t\texpected = MOSExtension.expectedLength;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn { expected, actual };\n\t}\n\n\t/** Returns the number of bytes the serialized extension will occupy */\n\tpublic computeLength(): number {\n\t\treturn 2 + this.payload.length;\n\t}\n\n\tpublic toLogEntry(): LogPayloadText {\n\t\treturn logText([], {\n\t\t\ttags: [getEnumMemberName(S2ExtensionType, this.type)],\n\t\t\tnested: logDict(this.toLogEntryDict()),\n\t\t});\n\t}\n\n\tprotected toLogEntryDict(): MessageRecord {\n\t\treturn {\n\t\t\tpayload: logBuffer(this.payload),\n\t\t};\n\t}\n}\n\nexport class InvalidExtension extends Security2Extension {}\n\ninterface SPANExtensionOptions {\n\tsenderEI: BytesView;\n}\n\n@extensionType(S2ExtensionType.SPAN)\nexport class SPANExtension extends Security2Extension {\n\tpublic constructor(\n\t\toptions: SPANExtensionOptions & Security2ExtensionBaseOptions,\n\t) {\n\t\tif (options.senderEI.length !== 16) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The sender's entropy must be a 16-byte buffer!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tsuper({ critical: true, ...options });\n\t\tthis.senderEI = options.senderEI;\n\t}\n\n\tpublic static from(raw: Security2ExtensionRaw): Security2Extension {\n\t\tvalidatePayload(raw.payload.length === 16);\n\t\tconst senderEI = raw.payload;\n\n\t\treturn new SPANExtension({\n\t\t\tcritical: raw.critical,\n\t\t\tmoreToFollow: raw.moreToFollow,\n\t\t\tsenderEI,\n\t\t});\n\t}\n\n\tpublic senderEI: BytesView;\n\tpublic static readonly expectedLength = 18;\n\n\tpublic serialize(moreToFollow: boolean): Bytes {\n\t\tthis.payload = this.senderEI;\n\t\treturn super.serialize(moreToFollow);\n\t}\n\n\tprotected toLogEntryDict(): MessageRecord {\n\t\treturn {\n\t\t\t\"sender EI\": buffer2hex(this.senderEI),\n\t\t};\n\t}\n}\n\ninterface MPANExtensionOptions {\n\tgroupId: number;\n\tinnerMPANState: BytesView;\n}\n\n@extensionType(S2ExtensionType.MPAN)\nexport class MPANExtension extends Security2Extension {\n\tpublic constructor(\n\t\toptions: MPANExtensionOptions & Security2ExtensionBaseOptions,\n\t) {\n\t\tif (options.innerMPANState.length !== 16) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The inner MPAN state must be a 16-byte buffer!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tsuper({ critical: true, ...options });\n\t\tthis.groupId = options.groupId;\n\t\tthis.innerMPANState = options.innerMPANState;\n\t}\n\n\tpublic static from(raw: Security2ExtensionRaw): Security2Extension {\n\t\tvalidatePayload(raw.payload.length === 17);\n\t\tconst groupId = raw.payload[0];\n\t\tconst innerMPANState = raw.payload.subarray(1);\n\n\t\treturn new MPANExtension({\n\t\t\tcritical: raw.critical,\n\t\t\tmoreToFollow: raw.moreToFollow,\n\t\t\tgroupId,\n\t\t\tinnerMPANState,\n\t\t});\n\t}\n\n\tpublic groupId: number;\n\tpublic innerMPANState: BytesView;\n\n\tpublic isEncrypted(): boolean {\n\t\treturn true;\n\t}\n\n\tpublic static readonly expectedLength = 19;\n\n\tpublic serialize(moreToFollow: boolean): Bytes {\n\t\tthis.payload = Bytes.concat([[this.groupId], this.innerMPANState]);\n\t\treturn super.serialize(moreToFollow);\n\t}\n\n\tprotected toLogEntryDict(): MessageRecord {\n\t\tconst mpanState = shouldLogSecurityDetails()\n\t\t\t? buffer2hex(this.innerMPANState)\n\t\t\t: \"(hidden)\";\n\t\treturn {\n\t\t\t\"group ID\": this.groupId,\n\t\t\t\"MPAN state\": mpanState,\n\t\t};\n\t}\n}\n\ninterface MGRPExtensionOptions {\n\tgroupId: number;\n}\n\n@extensionType(S2ExtensionType.MGRP)\nexport class MGRPExtension extends Security2Extension {\n\tpublic constructor(\n\t\toptions: MGRPExtensionOptions & Security2ExtensionBaseOptions,\n\t) {\n\t\tsuper({ critical: true, ...options });\n\t\tthis.groupId = options.groupId;\n\t}\n\n\tpublic static from(raw: Security2ExtensionRaw): Security2Extension {\n\t\tvalidatePayload(raw.payload.length === 1);\n\t\tconst groupId = raw.payload[0];\n\n\t\treturn new MGRPExtension({\n\t\t\tcritical: raw.critical,\n\t\t\tmoreToFollow: raw.moreToFollow,\n\t\t\tgroupId,\n\t\t});\n\t}\n\n\tpublic groupId: number;\n\n\tpublic static readonly expectedLength = 3;\n\n\tpublic serialize(moreToFollow: boolean): Bytes {\n\t\tthis.payload = Bytes.from([this.groupId]);\n\t\treturn super.serialize(moreToFollow);\n\t}\n\n\tprotected toLogEntryDict(): MessageRecord {\n\t\treturn {\n\t\t\t\"group ID\": this.groupId,\n\t\t};\n\t}\n}\n\n@extensionType(S2ExtensionType.MOS)\nexport class MOSExtension extends Security2Extension {\n\tpublic constructor(options: Security2ExtensionBaseOptions = {}) {\n\t\tsuper({ critical: false, ...options });\n\t}\n\n\tpublic static readonly expectedLength = 2;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kBASO;AACP,wBAAgD;AAChD,oBAKO;AAEP,6BAAyC;AAEzC,IAAK;CAAL,SAAKA,kBAAe;AACnB,EAAAA,iBAAAA,iBAAA,MAAA,IAAA,CAAA,IAAA;AACA,EAAAA,iBAAAA,iBAAA,MAAA,IAAA,CAAA,IAAA;AACA,EAAAA,iBAAAA,iBAAA,MAAA,IAAA,CAAA,IAAA;AACA,EAAAA,iBAAAA,iBAAA,KAAA,IAAA,CAAA,IAAA;AACD,GALK,oBAAA,kBAAe,CAAA,EAAA;AAOpB,MAAM,6BAAyB,mDAI7B;EACD,MAAM;CACN;AAGM,MAAM,gBAAgB,uBAAuB;AAG7C,MAAM,mBAAmB,uBAAuB;AAKhD,MAAM,4BACZ,uBAAuB;AAOxB,IAAY;CAAZ,SAAYC,4BAAyB;AACpC,EAAAA,2BAAAA,2BAAA,IAAA,IAAA,CAAA,IAAA;AACA,EAAAA,2BAAAA,2BAAA,kBAAA,IAAA,CAAA,IAAA;AACA,EAAAA,2BAAAA,2BAAA,gBAAA,IAAA,CAAA,IAAA;AACD,GAJY,8BAAA,4BAAyB,CAAA,EAAA;AAO/B,SAAU,oBACf,KACA,cAAqB;AAErB,MAAI,eAAe,kBAAkB;AAEpC,WAAO,0BAA0B;EAClC;AAEA,MAAI,IAAI,YAAY,EAAE,IAAI,QAAQ,kBAAkB;AAInD,WAAO,0BAA0B;EAClC;AAGA,UAAQ,IAAI,MAAM;IACjB,KAAK,gBAAgB;AACpB,UAAI,CAAC,cAAc;AAClB,eAAO,0BAA0B;MAClC;AACA;IACD,KAAK,gBAAgB;IACrB,KAAK,gBAAgB;IACrB,KAAK,gBAAgB;AACpB,UAAI,cAAc;AACjB,eAAO,0BAA0B;MAClC;AACA;EACF;AAEA,SAAO,0BAA0B;AAClC;AAjCgB;AAmCV,MAAO,sBAAqB;SAAA;;;EAEzB;EACA;EACS;EACT;EAJR,YACQ,MACA,UACS,cACT,SAAkB;gBAHlB;oBACA;wBACS;mBACT;EACL;EAEI,OAAO,MAAM,MAAe;AAClC,qCAAgB,KAAK,UAAU,CAAC;AAChC,UAAM,cAAc,KAAK,CAAC;AAC1B,UAAM,eAAe,CAAC,EAAE,KAAK,CAAC,IAAI;AAClC,UAAM,WAAW,CAAC,EAAE,KAAK,CAAC,IAAI;AAC9B,UAAM,OAAO,KAAK,CAAC,IAAI;AACvB,UAAM,UAAU,KAAK,SAAS,GAAG,WAAW;AAE5C,WAAO,IAAI,sBAAsB,MAAM,UAAU,cAAc,OAAO;EACvE;EAEO,YAAY,SAAc;AAChC,WAAO,IAAI,sBACV,KAAK,MACL,KAAK,UACL,KAAK,cACL,OAAO;EAET;;AAaK,MAAO,mBAAkB;SAAA;;;EAC9B,YAAmB,SAAkC;AACpD,UAAM;;MAEL,OAAO,iBAAiB,IAAI;MAC5B,WAAW;MACX,eAAe;MACf,UAAU,IAAI,WAAU;IAAE,IACvB;AAEJ,QAAI,QAAQ,QAAW;AACtB,YAAM,IAAI,uBACT,uEACA,4BAAgB,gBAAgB;IAElC;AAEA,SAAK,OAAO;AACZ,SAAK,WAAW;AAChB,SAAK,eAAe;AACpB,SAAK,UAAU;EAChB;EAEO,OAAO,MAAM,MAAe;AAClC,UAAM,MAAM,sBAAsB,MAAM,IAAI;AAC5C,UAAM,cACL,0BAA0B,IAAI,IAAI,KAAK;AACxC,WAAO,YAAY,KAAK,GAAG;EAC5B;;EAGO,OAAO,KAAK,KAA0B;AAC5C,WAAO,IAAI,KAAK;MACf,MAAM,IAAI;MACV,UAAU,IAAI;MACd,cAAc,IAAI;MAClB,SAAS,IAAI;KACb;EACF;EAEO;EACA;EACS;EACT;EAEA,cAAW;AACjB,WAAO;EACR;EAEO,UAAU,cAAqB;AACrC,WAAO,oBAAM,OAAO;MACnB;QACC,IAAI,KAAK,QAAQ;SAChB,eAAe,MAAc,MAC1B,KAAK,WAAW,KAAc,KAC9B,KAAK,OAAO;;MAEjB,KAAK;KACL;EACF;;EAGO,OAAO,mBAAmB,MAAe;AAI/C,UAAM,SAAS,KAAK,CAAC;AACrB,QAAI;AAGJ,UAAM,OAAO,KAAK,CAAC,IAAI;AACvB,YAAQ,MAAM;MACb,KAAK,gBAAgB;AACpB,mBAAW,cAAc;AACzB;MACD,KAAK,gBAAgB;AACpB,mBAAW,cAAc;AACzB;MACD,KAAK,gBAAgB;AACpB,mBAAW,cAAc;AACzB;MACD,KAAK,gBAAgB;AACpB,mBAAW,aAAa;AACxB;IACF;AAEA,WAAO,EAAE,UAAU,OAAM;EAC1B;;EAGO,gBAAa;AACnB,WAAO,IAAI,KAAK,QAAQ;EACzB;EAEO,aAAU;AAChB,eAAO,qBAAQ,CAAA,GAAI;MAClB,MAAM,KAAC,iCAAkB,iBAAiB,KAAK,IAAI,CAAC;MACpD,YAAQ,qBAAQ,KAAK,eAAc,CAAE;KACrC;EACF;EAEU,iBAAc;AACvB,WAAO;MACN,aAAS,uBAAU,KAAK,OAAO;;EAEjC;;AAGK,MAAO,yBAAyB,mBAAkB;SAAA;;;;IAO3C,iBAAa,MAAA;0BADzB,cAAc,gBAAgB,IAAI,CAAC;;;;oBACD;qCAAA,YAAkB;WAAA;;;;;;;;AAArD,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;;IACC,YACC,SAA6D;AAE7D,UAAI,QAAQ,SAAS,WAAW,IAAI;AACnC,cAAM,IAAI,uBACT,kDACA,4BAAgB,gBAAgB;MAElC;AACA,YAAM,EAAE,UAAU,MAAM,GAAG,QAAO,CAAE;AACpC,WAAK,WAAW,QAAQ;IACzB;IAEO,OAAO,KAAK,KAA0B;AAC5C,uCAAgB,IAAI,QAAQ,WAAW,EAAE;AACzC,YAAM,WAAW,IAAI;AAErB,aAAO,IAAIC,eAAc;QACxB,UAAU,IAAI;QACd,cAAc,IAAI;QAClB;OACA;IACF;IAEO;IACA,OAAgB,iBAAiB;IAEjC,UAAU,cAAqB;AACrC,WAAK,UAAU,KAAK;AACpB,aAAO,MAAM,UAAU,YAAY;IACpC;IAEU,iBAAc;AACvB,aAAO;QACN,iBAAa,0BAAW,KAAK,QAAQ;;IAEvC;;AArCY,0CAAA,YAAA,uBAAA;;;;;IA8CA,iBAAa,MAAA;0BADzB,cAAc,gBAAgB,IAAI,CAAC;;;;oBACD;qCAAA,YAAkB;WAAA;;;;;;;;AAArD,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;;IACC,YACC,SAA6D;AAE7D,UAAI,QAAQ,eAAe,WAAW,IAAI;AACzC,cAAM,IAAI,uBACT,kDACA,4BAAgB,gBAAgB;MAElC;AACA,YAAM,EAAE,UAAU,MAAM,GAAG,QAAO,CAAE;AACpC,WAAK,UAAU,QAAQ;AACvB,WAAK,iBAAiB,QAAQ;IAC/B;IAEO,OAAO,KAAK,KAA0B;AAC5C,uCAAgB,IAAI,QAAQ,WAAW,EAAE;AACzC,YAAM,UAAU,IAAI,QAAQ,CAAC;AAC7B,YAAM,iBAAiB,IAAI,QAAQ,SAAS,CAAC;AAE7C,aAAO,IAAIC,eAAc;QACxB,UAAU,IAAI;QACd,cAAc,IAAI;QAClB;QACA;OACA;IACF;IAEO;IACA;IAEA,cAAW;AACjB,aAAO;IACR;IAEO,OAAgB,iBAAiB;IAEjC,UAAU,cAAqB;AACrC,WAAK,UAAU,oBAAM,OAAO,CAAC,CAAC,KAAK,OAAO,GAAG,KAAK,cAAc,CAAC;AACjE,aAAO,MAAM,UAAU,YAAY;IACpC;IAEU,iBAAc;AACvB,YAAM,gBAAY,iDAAwB,QACvC,0BAAW,KAAK,cAAc,IAC9B;AACH,aAAO;QACN,YAAY,KAAK;QACjB,cAAc;;IAEhB;;AAlDY,0CAAA,YAAA,uBAAA;;;;;IA0DA,iBAAa,MAAA;0BADzB,cAAc,gBAAgB,IAAI,CAAC;;;;oBACD;qCAAA,YAAkB;WAAA;;;;;;;;AAArD,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;;IACC,YACC,SAA6D;AAE7D,YAAM,EAAE,UAAU,MAAM,GAAG,QAAO,CAAE;AACpC,WAAK,UAAU,QAAQ;IACxB;IAEO,OAAO,KAAK,KAA0B;AAC5C,uCAAgB,IAAI,QAAQ,WAAW,CAAC;AACxC,YAAM,UAAU,IAAI,QAAQ,CAAC;AAE7B,aAAO,IAAIC,eAAc;QACxB,UAAU,IAAI;QACd,cAAc,IAAI;QAClB;OACA;IACF;IAEO;IAEA,OAAgB,iBAAiB;IAEjC,UAAU,cAAqB;AACrC,WAAK,UAAU,oBAAM,KAAK,CAAC,KAAK,OAAO,CAAC;AACxC,aAAO,MAAM,UAAU,YAAY;IACpC;IAEU,iBAAc;AACvB,aAAO;QACN,YAAY,KAAK;;IAEnB;;AAhCY,0CAAA,YAAA,uBAAA;;;;;IAoCA,gBAAY,MAAA;0BADxB,cAAc,gBAAgB,GAAG,CAAC;;;;oBACD;oCAAA,YAAkB;WAAA;;;;;;;;AAApD,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;;IACC,YAAmB,UAAyC,CAAA,GAAE;AAC7D,YAAM,EAAE,UAAU,OAAO,GAAG,QAAO,CAAE;IACtC;IAEO,OAAgB,iBAAiB;;AAL5B,0CAAA,YAAA,uBAAA;;;;;",
6
6
  "names": ["S2ExtensionType", "ValidateS2ExtensionResult", "SPANExtension", "MPANExtension", "MGRPExtension"]
7
7
  }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Whether keys, nonces and plaintext of secure commands may be logged.
3
+ * This exposes key material, so it requires an explicit opt-in outside of tests.
4
+ */
5
+ export declare function shouldLogSecurityDetails(): boolean;
6
+ //# sourceMappingURL=securityLogging.d.ts.map
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var securityLogging_exports = {};
21
+ __export(securityLogging_exports, {
22
+ shouldLogSecurityDetails: () => shouldLogSecurityDetails
23
+ });
24
+ module.exports = __toCommonJS(securityLogging_exports);
25
+ var import_shared = require("@zwave-js/shared");
26
+ function shouldLogSecurityDetails() {
27
+ return (0, import_shared.getenv)("NODE_ENV") === "test" || (0, import_shared.getenv)("ZWAVEJS_LOG_SECURITY_DETAILS") === "true";
28
+ }
29
+ __name(shouldLogSecurityDetails, "shouldLogSecurityDetails");
30
+ // Annotate the CommonJS export names for ESM import in node:
31
+ 0 && (module.exports = {
32
+ shouldLogSecurityDetails
33
+ });
34
+ //# sourceMappingURL=securityLogging.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src_gen/lib/securityLogging.ts"],
4
+ "sourcesContent": ["import { getenv } from \"@zwave-js/shared\";\n\n/**\n * Whether keys, nonces and plaintext of secure commands may be logged.\n * This exposes key material, so it requires an explicit opt-in outside of tests.\n */\nexport function shouldLogSecurityDetails(): boolean {\n\treturn (\n\t\tgetenv(\"NODE_ENV\") === \"test\"\n\t\t|| getenv(\"ZWAVEJS_LOG_SECURITY_DETAILS\") === \"true\"\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;;;;;AAAA,oBAAuB;AAMjB,SAAU,2BAAwB;AACvC,aACC,sBAAO,UAAU,MAAM,cACpB,sBAAO,8BAA8B,MAAM;AAEhD;AALgB;",
6
+ "names": []
7
+ }
@@ -104,6 +104,9 @@ function encodeTimezone(tz) {
104
104
  const delta = tz.dstOffset - tz.standardOffset;
105
105
  const deltaMinutes = Math.abs(delta);
106
106
  const deltaSign = delta < 0 ? 1 : 0;
107
+ if (deltaMinutes > 127) {
108
+ throw new import_core.ZWaveError("The given timezone is not valid!", import_core.ZWaveErrorCodes.CC_Invalid);
109
+ }
107
110
  return import_shared.Bytes.from([
108
111
  hourSign << 7 | hour & 127,
109
112
  minutes,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src_gen/lib/serializers.ts"],
4
- "sourcesContent": ["import { ZWaveError, ZWaveErrorCodes, validatePayload } from \"@zwave-js/core\";\nimport { Bytes, type BytesView } from \"@zwave-js/shared\";\nimport { clamp } from \"alcalzone-shared/math\";\n\nimport type {\n\tSetbackSpecialState,\n\tSetbackState,\n\tSwitchpoint,\n\tTimezone,\n} from \"./_Types.js\";\n\nexport const setbackSpecialStateValues: Record<SetbackSpecialState, number> = {\n\t\"Frost Protection\": 0x79,\n\t\"Energy Saving\": 0x7a,\n\tUnused: 0x7f,\n};\n\n/**\n * @publicAPI\n * Encodes a setback state to use in a ThermostatSetbackCC\n */\nexport function encodeSetbackState(state: SetbackState): Bytes {\n\tlet rawValue: number;\n\tif (typeof state === \"string\") {\n\t\trawValue = setbackSpecialStateValues[state];\n\t} else {\n\t\tstate = clamp(state, -12.8, 12);\n\t\trawValue = Math.round(state * 10);\n\t}\n\n\tconst ret = new Bytes(1);\n\tret.writeInt8(rawValue);\n\treturn ret;\n}\n\n/**\n * @publicAPI\n * Decodes a setback state used in a ThermostatSetbackCC\n */\nexport function decodeSetbackState(\n\tdata: BytesView,\n\toffset: number = 0,\n): SetbackState | undefined {\n\tconst val = Bytes.view(data).readInt8(offset);\n\tif (val > 120) {\n\t\t// Special state, try to look it up\n\t\tconst foundEntry = Object.entries(setbackSpecialStateValues).find(\n\t\t\t([, v]) => val === v,\n\t\t);\n\t\tif (!foundEntry) return;\n\t\treturn foundEntry[0] as SetbackSpecialState;\n\t} else {\n\t\treturn val / 10;\n\t}\n}\n\n/**\n * @publicAPI\n * Decodes a switch point used in a ClimateControlScheduleCC\n */\nexport function decodeSwitchpoint(data: BytesView): Switchpoint {\n\treturn {\n\t\thour: data[0] & 0b000_11111,\n\t\tminute: data[1] & 0b00_111111,\n\t\tstate: decodeSetbackState(data, 2),\n\t};\n}\n\n/**\n * @publicAPI\n * Encodes a switch point to use in a ClimateControlScheduleCC\n */\nexport function encodeSwitchpoint(point: Switchpoint): Bytes {\n\tif (point.state == undefined) {\n\t\tthrow new ZWaveError(\n\t\t\t\"The given Switchpoint is not valid!\",\n\t\t\tZWaveErrorCodes.CC_Invalid,\n\t\t);\n\t}\n\treturn Bytes.concat([\n\t\t[point.hour & 0b000_11111, point.minute & 0b00_111111],\n\t\tencodeSetbackState(point.state),\n\t]);\n}\n\n/**\n * @publicAPI\n * Decodes timezone information used in time related CCs\n */\nexport function parseTimezone(data: BytesView): Timezone {\n\t// The timezone structure is 3 bytes: hour, minute, delta\n\tvalidatePayload(data.length >= 3);\n\tconst hourSign = !!(data[0] & 0b1000_0000);\n\tconst hour = data[0] & 0b0111_1111;\n\tconst minute = data[1];\n\tconst standardOffset = (hourSign ? -1 : 1) * (hour * 60 + minute);\n\tconst deltaSign = !!(data[2] & 0b1000_0000);\n\tconst deltaMinutes = data[2] & 0b0111_1111;\n\tconst dstOffset = standardOffset + (deltaSign ? -1 : 1) * deltaMinutes;\n\n\treturn {\n\t\tstandardOffset,\n\t\tdstOffset,\n\t};\n}\n\n/**\n * @publicAPI\n * Decodes timezone information used in time related CCs\n */\nexport function encodeTimezone(tz: Timezone): Bytes {\n\tif (\n\t\tMath.abs(tz.standardOffset) >= 24 * 60\n\t\t|| Math.abs(tz.dstOffset) >= 24 * 60\n\t) {\n\t\tthrow new ZWaveError(\n\t\t\t\"The given timezone is not valid!\",\n\t\t\tZWaveErrorCodes.CC_Invalid,\n\t\t);\n\t}\n\tconst minutes = Math.abs(tz.standardOffset) % 60;\n\tconst hour = Math.floor(Math.abs(tz.standardOffset) / 60);\n\tconst hourSign = tz.standardOffset < 0 ? 1 : 0;\n\n\tconst delta = tz.dstOffset - tz.standardOffset;\n\tconst deltaMinutes = Math.abs(delta);\n\tconst deltaSign = delta < 0 ? 1 : 0;\n\n\treturn Bytes.from([\n\t\t(hourSign << 7) | (hour & 0b0111_1111),\n\t\tminutes,\n\t\t(deltaSign << 7) | (deltaMinutes & 0b0111_1111),\n\t]);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAAA,kBAA6D;AAC7D,oBAAsC;AACtC,kBAAsB;AASf,MAAM,4BAAiE;EAC7E,oBAAoB;EACpB,iBAAiB;EACjB,QAAQ;;AAOH,SAAU,mBAAmB,OAAmB;AACrD,MAAI;AACJ,MAAI,OAAO,UAAU,UAAU;AAC9B,eAAW,0BAA0B,KAAK;EAC3C,OAAO;AACN,gBAAQ,mBAAM,OAAO,OAAO,EAAE;AAC9B,eAAW,KAAK,MAAM,QAAQ,EAAE;EACjC;AAEA,QAAM,MAAM,IAAI,oBAAM,CAAC;AACvB,MAAI,UAAU,QAAQ;AACtB,SAAO;AACR;AAZgB;AAkBV,SAAU,mBACf,MACA,SAAiB,GAAC;AAElB,QAAM,MAAM,oBAAM,KAAK,IAAI,EAAE,SAAS,MAAM;AAC5C,MAAI,MAAM,KAAK;AAEd,UAAM,aAAa,OAAO,QAAQ,yBAAyB,EAAE,KAC5D,CAAC,CAAC,EAAE,CAAC,MAAM,QAAQ,CAAC;AAErB,QAAI,CAAC;AAAY;AACjB,WAAO,WAAW,CAAC;EACpB,OAAO;AACN,WAAO,MAAM;EACd;AACD;AAfgB;AAqBV,SAAU,kBAAkB,MAAe;AAChD,SAAO;IACN,MAAM,KAAK,CAAC,IAAI;IAChB,QAAQ,KAAK,CAAC,IAAI;IAClB,OAAO,mBAAmB,MAAM,CAAC;;AAEnC;AANgB;AAYV,SAAU,kBAAkB,OAAkB;AACnD,MAAI,MAAM,SAAS,QAAW;AAC7B,UAAM,IAAI,uBACT,uCACA,4BAAgB,UAAU;EAE5B;AACA,SAAO,oBAAM,OAAO;IACnB,CAAC,MAAM,OAAO,IAAa,MAAM,SAAS,EAAW;IACrD,mBAAmB,MAAM,KAAK;GAC9B;AACF;AAXgB;AAiBV,SAAU,cAAc,MAAe;AAE5C,mCAAgB,KAAK,UAAU,CAAC;AAChC,QAAM,WAAW,CAAC,EAAE,KAAK,CAAC,IAAI;AAC9B,QAAM,OAAO,KAAK,CAAC,IAAI;AACvB,QAAM,SAAS,KAAK,CAAC;AACrB,QAAM,kBAAkB,WAAW,KAAK,MAAM,OAAO,KAAK;AAC1D,QAAM,YAAY,CAAC,EAAE,KAAK,CAAC,IAAI;AAC/B,QAAM,eAAe,KAAK,CAAC,IAAI;AAC/B,QAAM,YAAY,kBAAkB,YAAY,KAAK,KAAK;AAE1D,SAAO;IACN;IACA;;AAEF;AAfgB;AAqBV,SAAU,eAAe,IAAY;AAC1C,MACC,KAAK,IAAI,GAAG,cAAc,KAAK,KAAK,MACjC,KAAK,IAAI,GAAG,SAAS,KAAK,KAAK,IACjC;AACD,UAAM,IAAI,uBACT,oCACA,4BAAgB,UAAU;EAE5B;AACA,QAAM,UAAU,KAAK,IAAI,GAAG,cAAc,IAAI;AAC9C,QAAM,OAAO,KAAK,MAAM,KAAK,IAAI,GAAG,cAAc,IAAI,EAAE;AACxD,QAAM,WAAW,GAAG,iBAAiB,IAAI,IAAI;AAE7C,QAAM,QAAQ,GAAG,YAAY,GAAG;AAChC,QAAM,eAAe,KAAK,IAAI,KAAK;AACnC,QAAM,YAAY,QAAQ,IAAI,IAAI;AAElC,SAAO,oBAAM,KAAK;IAChB,YAAY,IAAM,OAAO;IAC1B;IACC,aAAa,IAAM,eAAe;GACnC;AACF;AAvBgB;",
4
+ "sourcesContent": ["import { ZWaveError, ZWaveErrorCodes, validatePayload } from \"@zwave-js/core\";\nimport { Bytes, type BytesView } from \"@zwave-js/shared\";\nimport { clamp } from \"alcalzone-shared/math\";\n\nimport type {\n\tSetbackSpecialState,\n\tSetbackState,\n\tSwitchpoint,\n\tTimezone,\n} from \"./_Types.js\";\n\nexport const setbackSpecialStateValues: Record<SetbackSpecialState, number> = {\n\t\"Frost Protection\": 0x79,\n\t\"Energy Saving\": 0x7a,\n\tUnused: 0x7f,\n};\n\n/**\n * @publicAPI\n * Encodes a setback state to use in a ThermostatSetbackCC\n */\nexport function encodeSetbackState(state: SetbackState): Bytes {\n\tlet rawValue: number;\n\tif (typeof state === \"string\") {\n\t\trawValue = setbackSpecialStateValues[state];\n\t} else {\n\t\tstate = clamp(state, -12.8, 12);\n\t\trawValue = Math.round(state * 10);\n\t}\n\n\tconst ret = new Bytes(1);\n\tret.writeInt8(rawValue);\n\treturn ret;\n}\n\n/**\n * @publicAPI\n * Decodes a setback state used in a ThermostatSetbackCC\n */\nexport function decodeSetbackState(\n\tdata: BytesView,\n\toffset: number = 0,\n): SetbackState | undefined {\n\tconst val = Bytes.view(data).readInt8(offset);\n\tif (val > 120) {\n\t\t// Special state, try to look it up\n\t\tconst foundEntry = Object.entries(setbackSpecialStateValues).find(\n\t\t\t([, v]) => val === v,\n\t\t);\n\t\tif (!foundEntry) return;\n\t\treturn foundEntry[0] as SetbackSpecialState;\n\t} else {\n\t\treturn val / 10;\n\t}\n}\n\n/**\n * @publicAPI\n * Decodes a switch point used in a ClimateControlScheduleCC\n */\nexport function decodeSwitchpoint(data: BytesView): Switchpoint {\n\treturn {\n\t\thour: data[0] & 0b000_11111,\n\t\tminute: data[1] & 0b00_111111,\n\t\tstate: decodeSetbackState(data, 2),\n\t};\n}\n\n/**\n * @publicAPI\n * Encodes a switch point to use in a ClimateControlScheduleCC\n */\nexport function encodeSwitchpoint(point: Switchpoint): Bytes {\n\tif (point.state == undefined) {\n\t\tthrow new ZWaveError(\n\t\t\t\"The given Switchpoint is not valid!\",\n\t\t\tZWaveErrorCodes.CC_Invalid,\n\t\t);\n\t}\n\treturn Bytes.concat([\n\t\t[point.hour & 0b000_11111, point.minute & 0b00_111111],\n\t\tencodeSetbackState(point.state),\n\t]);\n}\n\n/**\n * @publicAPI\n * Decodes timezone information used in time related CCs\n */\nexport function parseTimezone(data: BytesView): Timezone {\n\t// The timezone structure is 3 bytes: hour, minute, delta\n\tvalidatePayload(data.length >= 3);\n\tconst hourSign = !!(data[0] & 0b1000_0000);\n\tconst hour = data[0] & 0b0111_1111;\n\tconst minute = data[1];\n\tconst standardOffset = (hourSign ? -1 : 1) * (hour * 60 + minute);\n\tconst deltaSign = !!(data[2] & 0b1000_0000);\n\tconst deltaMinutes = data[2] & 0b0111_1111;\n\tconst dstOffset = standardOffset + (deltaSign ? -1 : 1) * deltaMinutes;\n\n\treturn {\n\t\tstandardOffset,\n\t\tdstOffset,\n\t};\n}\n\n/**\n * @publicAPI\n * Decodes timezone information used in time related CCs\n */\nexport function encodeTimezone(tz: Timezone): Bytes {\n\tif (\n\t\tMath.abs(tz.standardOffset) >= 24 * 60\n\t\t|| Math.abs(tz.dstOffset) >= 24 * 60\n\t) {\n\t\tthrow new ZWaveError(\n\t\t\t\"The given timezone is not valid!\",\n\t\t\tZWaveErrorCodes.CC_Invalid,\n\t\t);\n\t}\n\tconst minutes = Math.abs(tz.standardOffset) % 60;\n\tconst hour = Math.floor(Math.abs(tz.standardOffset) / 60);\n\tconst hourSign = tz.standardOffset < 0 ? 1 : 0;\n\n\tconst delta = tz.dstOffset - tz.standardOffset;\n\tconst deltaMinutes = Math.abs(delta);\n\tconst deltaSign = delta < 0 ? 1 : 0;\n\t// The DST offset is encoded relative to the standard offset in 7 bits\n\tif (deltaMinutes > 0b0111_1111) {\n\t\tthrow new ZWaveError(\n\t\t\t\"The given timezone is not valid!\",\n\t\t\tZWaveErrorCodes.CC_Invalid,\n\t\t);\n\t}\n\n\treturn Bytes.from([\n\t\t(hourSign << 7) | (hour & 0b0111_1111),\n\t\tminutes,\n\t\t(deltaSign << 7) | (deltaMinutes & 0b0111_1111),\n\t]);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAAA,kBAA6D;AAC7D,oBAAsC;AACtC,kBAAsB;AASf,MAAM,4BAAiE;EAC7E,oBAAoB;EACpB,iBAAiB;EACjB,QAAQ;;AAOH,SAAU,mBAAmB,OAAmB;AACrD,MAAI;AACJ,MAAI,OAAO,UAAU,UAAU;AAC9B,eAAW,0BAA0B,KAAK;EAC3C,OAAO;AACN,gBAAQ,mBAAM,OAAO,OAAO,EAAE;AAC9B,eAAW,KAAK,MAAM,QAAQ,EAAE;EACjC;AAEA,QAAM,MAAM,IAAI,oBAAM,CAAC;AACvB,MAAI,UAAU,QAAQ;AACtB,SAAO;AACR;AAZgB;AAkBV,SAAU,mBACf,MACA,SAAiB,GAAC;AAElB,QAAM,MAAM,oBAAM,KAAK,IAAI,EAAE,SAAS,MAAM;AAC5C,MAAI,MAAM,KAAK;AAEd,UAAM,aAAa,OAAO,QAAQ,yBAAyB,EAAE,KAC5D,CAAC,CAAC,EAAE,CAAC,MAAM,QAAQ,CAAC;AAErB,QAAI,CAAC;AAAY;AACjB,WAAO,WAAW,CAAC;EACpB,OAAO;AACN,WAAO,MAAM;EACd;AACD;AAfgB;AAqBV,SAAU,kBAAkB,MAAe;AAChD,SAAO;IACN,MAAM,KAAK,CAAC,IAAI;IAChB,QAAQ,KAAK,CAAC,IAAI;IAClB,OAAO,mBAAmB,MAAM,CAAC;;AAEnC;AANgB;AAYV,SAAU,kBAAkB,OAAkB;AACnD,MAAI,MAAM,SAAS,QAAW;AAC7B,UAAM,IAAI,uBACT,uCACA,4BAAgB,UAAU;EAE5B;AACA,SAAO,oBAAM,OAAO;IACnB,CAAC,MAAM,OAAO,IAAa,MAAM,SAAS,EAAW;IACrD,mBAAmB,MAAM,KAAK;GAC9B;AACF;AAXgB;AAiBV,SAAU,cAAc,MAAe;AAE5C,mCAAgB,KAAK,UAAU,CAAC;AAChC,QAAM,WAAW,CAAC,EAAE,KAAK,CAAC,IAAI;AAC9B,QAAM,OAAO,KAAK,CAAC,IAAI;AACvB,QAAM,SAAS,KAAK,CAAC;AACrB,QAAM,kBAAkB,WAAW,KAAK,MAAM,OAAO,KAAK;AAC1D,QAAM,YAAY,CAAC,EAAE,KAAK,CAAC,IAAI;AAC/B,QAAM,eAAe,KAAK,CAAC,IAAI;AAC/B,QAAM,YAAY,kBAAkB,YAAY,KAAK,KAAK;AAE1D,SAAO;IACN;IACA;;AAEF;AAfgB;AAqBV,SAAU,eAAe,IAAY;AAC1C,MACC,KAAK,IAAI,GAAG,cAAc,KAAK,KAAK,MACjC,KAAK,IAAI,GAAG,SAAS,KAAK,KAAK,IACjC;AACD,UAAM,IAAI,uBACT,oCACA,4BAAgB,UAAU;EAE5B;AACA,QAAM,UAAU,KAAK,IAAI,GAAG,cAAc,IAAI;AAC9C,QAAM,OAAO,KAAK,MAAM,KAAK,IAAI,GAAG,cAAc,IAAI,EAAE;AACxD,QAAM,WAAW,GAAG,iBAAiB,IAAI,IAAI;AAE7C,QAAM,QAAQ,GAAG,YAAY,GAAG;AAChC,QAAM,eAAe,KAAK,IAAI,KAAK;AACnC,QAAM,YAAY,QAAQ,IAAI,IAAI;AAElC,MAAI,eAAe,KAAa;AAC/B,UAAM,IAAI,uBACT,oCACA,4BAAgB,UAAU;EAE5B;AAEA,SAAO,oBAAM,KAAK;IAChB,YAAY,IAAM,OAAO;IAC1B;IACC,aAAa,IAAM,eAAe;GACnC;AACF;AA9BgB;",
6
6
  "names": []
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AlarmSensorCC.d.ts","sourceRoot":"","sources":["../../../src_gen/cc/AlarmSensorCC.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AlarmSensorCC.d.ts","sourceRoot":"","sources":["../../../src_gen/cc/AlarmSensorCC.ts"],"names":[],"mappings":"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"}
@@ -225,6 +225,10 @@ let AlarmSensorCCReport = (() => {
225
225
  static from(raw, ctx) {
226
226
  validatePayload(raw.payload.length >= 5, raw.payload[1] !== 0xff);
227
227
  const sourceNodeId = raw.payload[0];
228
+ // Alarm Sensor reports may be forwarded by a different node, in which case the payload
229
+ // contains the original node ID. We cannot verify that the forwarding node is allowed
230
+ // to report on behalf of another node, so such reports are ignored.
231
+ validatePayload.withReason(`Ignoring Alarm Sensor Report forwarded on behalf of node ${sourceNodeId}`)(sourceNodeId === 0 || sourceNodeId === ctx.sourceNodeId);
228
232
  const sensorType = raw.payload[1];
229
233
  // Any positive value gets interpreted as alarm
230
234
  const state = raw.payload[2] > 0;
@@ -236,9 +240,7 @@ let AlarmSensorCCReport = (() => {
236
240
  // ignore zero durations
237
241
  const duration = raw.payload.readUInt16BE(3) || undefined;
238
242
  return new this({
239
- // Alarm Sensor reports may be forwarded by a different node, in this case
240
- // (and only then!) the payload contains the original node ID
241
- nodeId: sourceNodeId || ctx.sourceNodeId,
243
+ nodeId: ctx.sourceNodeId,
242
244
  sensorType,
243
245
  state,
244
246
  severity,
@@ -1 +1 @@
1
- {"version":3,"file":"AlarmSensorCC.js","sourceRoot":"","sources":["../../../src_gen/cc/AlarmSensorCC.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AlarmSensorCC.js","sourceRoot":"","sources":["../../../src_gen/cc/AlarmSensorCC.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AssociationGroupInfoCC.d.ts","sourceRoot":"","sources":["../../../src_gen/cc/AssociationGroupInfoCC.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAuC,KAAK,UAAU,EAAE,KAAK,WAAW,EAAiF,MAAM,gBAAgB,CAAC;AACvR,OAAO,EAAE,KAAK,EAAsC,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAS,aAAa,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,KAAK,KAAK,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,KAAK,oBAAoB,EAAE,KAAK,oBAAoB,EAAE,KAAK,oBAAoB,EAAG,MAAM,wBAAwB,CAAC;AAG3K,OAAO,EAAE,2BAA2B,EAAE,2BAA2B,EAAG,MAAM,kBAAkB,CAAC;AAC7F,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAG5E,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,CAAC;AAExC,qBACa,yBAA0B,SAAQ,aAAa;IACjD,eAAe,CAAC,GAAG,EAAE,2BAA2B,GAAG,aAAa,CAAC,OAAO,CAAC,CAW/E;IAEY,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAUzE;IAEY,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASzE;IAGY,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,GAAE,OAAe;;cA+RlE,MAAM;iBACH,MAAM;mBACJ,MAAM;mBA9QhB;IAEY,eAAe,CAAC,OAAO,EAAE,uCAAuC,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ5F;IAEY,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,GAAE,OAAc,GAAG,OAAO,CAAC,aAAa,CAAC,uCAAuC,CAAC,UAAU,CAAC,CAAC,CAAC,CAWjJ;IAEY,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CASpH;CACJ;AACD,qBAGa,sBAAuB,SAAQ,YAAY;IAC5C,SAAS,EAAE,2BAA2B,CAAC;IACxC,6BAA6B,IAAI,SAAS,cAAc,EAAE,CAOhE;IACD,+CAA+C;IAC/C,OAAc,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAI9G;IACD,+DAA+D;IAC/D,OAAc,qBAAqB,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC,2BAA2B,CAAC,CAKtI;IACD,mFAAmF;IACnF,OAAc,uBAAuB,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAI3J;IACD,OAAc,0BAA0B,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,GAAG,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAe5I;IACD,OAAO,CAAC,MAAM,CAAC,8BAA8B;IAahC,SAAS,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgD3D;IACY,aAAa,CAAC,GAAG,EAAE,oBAAoB,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCnG;CACJ;AAED,MAAM,WAAW,uCAAuC;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CAChB;AACD,qBACa,gCAAiC,SAAQ,sBAAsB;IACxE,YAAmB,OAAO,EAAE,WAAW,CAAC,uCAAuC,CAAC,EAI/E;IACD,OAAc,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,gBAAgB,GAAG,gCAAgC,CAetF;IACD,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,IAAI,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAMvD;IACM,SAAS,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,CAMvD;IACM,UAAU,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,mBAAmB,CAQvD;CACJ;AAED,MAAM,WAAW,oCAAoC;IACjD,OAAO,EAAE,MAAM,CAAC;CACnB;AACD,qBAEa,6BAA8B,SAAQ,sBAAsB;IACrE,YAAmB,OAAO,EAAE,WAAW,CAAC,oCAAoC,CAAC,EAG5E;IACD,OAAc,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,gBAAgB,GAAG,6BAA6B,CAOnF;IACM,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,CAGvD;IACM,UAAU,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,mBAAmB,CAKvD;CACJ;AAED,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uCAAuC;IACpD,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,oBAAoB,EAAE,CAAC;CAClC;AACD,qBAEa,gCAAiC,SAAQ,sBAAsB;IACxE,YAAmB,OAAO,EAAE,WAAW,CAAC,uCAAuC,CAAC,EAK/E;IACD,OAAc,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,gBAAgB,GAAG,gCAAgC,CAwBtF;IACD,SAAgB,UAAU,EAAE,OAAO,CAAC;IACpC,SAAgB,cAAc,EAAE,OAAO,CAAC;IACxC,SAAgB,MAAM,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACjD,aAAa,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAYvD;IACM,SAAS,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,CAavD;IACM,UAAU,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,mBAAmB,CAcvD;CACJ;AAED,MAAM,MAAM,oCAAoC,GAAG;IAC/C,YAAY,EAAE,OAAO,CAAC;CACzB,GAAG,CAAC;IACD,QAAQ,EAAE,OAAO,CAAC;CACrB,GAAG;IACA,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC,CAAC;AACH,qBAEa,6BAA8B,SAAQ,sBAAsB;IACrE,YAAmB,OAAO,EAAE,WAAW,CAAC,oCAAoC,CAAC,EAO5E;IACD,OAAc,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,gBAAgB,GAAG,6BAA6B,CAenF;IACM,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,CAMvD;IACM,UAAU,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,mBAAmB,CAavD;CACJ;AAED,MAAM,WAAW,8CAA8C;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,WAAW,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;CAC5D;AACD,qBAIa,uCAAwC,SAAQ,sBAAsB;IAC/E,YAAmB,OAAO,EAAE,WAAW,CAAC,8CAA8C,CAAC,EAItF;IACD,OAAc,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,gBAAgB,GAAG,uCAAuC,CAsB7F;IACD,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,QAAQ,EAAE,WAAW,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;IAClE,SAAS,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,CAgBvD;IACM,UAAU,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,mBAAmB,CAUvD;CACJ;AAED,MAAM,WAAW,2CAA2C;IACxD,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACnB;AACD,qBAEa,oCAAqC,SAAQ,sBAAsB;IAC5E,YAAmB,OAAO,EAAE,WAAW,CAAC,2CAA2C,CAAC,EAInF;IACD,OAAc,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,gBAAgB,GAAG,oCAAoC,CAS1F;IACM,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,CAMvD;IACM,UAAU,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,mBAAmB,CAQvD;CACJ"}
1
+ {"version":3,"file":"AssociationGroupInfoCC.d.ts","sourceRoot":"","sources":["../../../src_gen/cc/AssociationGroupInfoCC.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { __esDecorate, __runInitializers } from "tslib";
2
2
  import * as __validateArgs from "./AssociationGroupInfoCC._validateArgs.js";
3
3
  const { validateArgs_AssociationGroupInfoCCAPI_getGroupName, validateArgs_AssociationGroupInfoCCAPI_reportGroupName, validateArgs_AssociationGroupInfoCCAPI_getGroupInfo, validateArgs_AssociationGroupInfoCCAPI_reportGroupInfo, validateArgs_AssociationGroupInfoCCAPI_getCommands, validateArgs_AssociationGroupInfoCCAPI_reportCommands } = __validateArgs;
4
- import { CommandClasses, MessagePriority, encodeCCId, getCCName, logDict, logList, logText, parseCCId, validatePayload, } from "@zwave-js/core";
5
- import { Bytes, cpp2js, getEnumMemberName, num2hex } from "@zwave-js/shared";
4
+ import { CommandClasses, MessagePriority, encodeCCId, getCCName, logDict, logList, logText, tryParseCCId, validatePayload, } from "@zwave-js/core";
5
+ import { Bytes, stripControlCharacters, getEnumMemberName, num2hex, } from "@zwave-js/shared";
6
6
  import { CCAPI, PhysicalCCAPI } from "../lib/API.js";
7
7
  import { CommandClass, } from "../lib/CommandClass.js";
8
8
  import { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, } from "../lib/CommandClassDecorators.js";
@@ -320,9 +320,9 @@ let AssociationGroupInfoCCNameReport = (() => {
320
320
  // CC:0059.01.02.11.001: The Name Length field MUST be in the range 0..42
321
321
  validatePayload(nameLength <= 42);
322
322
  validatePayload(raw.payload.length >= 2 + nameLength);
323
- // The specs don't allow 0-terminated string, but some devices use them
324
- // So we need to cut them off
325
- const name = cpp2js(raw.payload.subarray(2, 2 + nameLength).toString("utf8"));
323
+ // The specs don't allow 0-terminated strings, but some devices use them.
324
+ // stripControlCharacters cuts them off at the first NUL character.
325
+ const name = stripControlCharacters(raw.payload.subarray(2, 2 + nameLength).toString("utf8"));
326
326
  return new this({
327
327
  nodeId: ctx.sourceNodeId,
328
328
  groupId,
@@ -594,7 +594,11 @@ let AssociationGroupInfoCCCommandListReport = (() => {
594
594
  let offset = 0;
595
595
  const commands = new Map();
596
596
  while (offset < listLength) {
597
- const { ccId, bytesRead } = parseCCId(listBytes, offset);
597
+ // Ignore a truncated entry at the end of the list
598
+ const parsed = tryParseCCId(listBytes, offset);
599
+ if (!parsed || offset + parsed.bytesRead >= listLength)
600
+ break;
601
+ const { ccId, bytesRead } = parsed;
598
602
  const command = listBytes[offset + bytesRead];
599
603
  if (!commands.has(ccId))
600
604
  commands.set(ccId, []);