zigbee-herdsman 5.0.4 → 6.0.1

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 (122) hide show
  1. package/.github/dependabot.yml +3 -0
  2. package/.github/workflows/ci.yml +1 -1
  3. package/.github/workflows/typedoc.yaml +1 -1
  4. package/.release-please-manifest.json +1 -1
  5. package/CHANGELOG.md +29 -0
  6. package/biome.json +1 -1
  7. package/dist/adapter/ember/ezsp/buffalo.d.ts +0 -2
  8. package/dist/adapter/ember/ezsp/buffalo.d.ts.map +1 -1
  9. package/dist/adapter/ember/ezsp/buffalo.js +0 -4
  10. package/dist/adapter/ember/ezsp/buffalo.js.map +1 -1
  11. package/dist/adapter/ember/uart/ash.d.ts.map +1 -1
  12. package/dist/adapter/ember/uart/ash.js +0 -2
  13. package/dist/adapter/ember/uart/ash.js.map +1 -1
  14. package/dist/buffalo/buffalo.d.ts +5 -0
  15. package/dist/buffalo/buffalo.d.ts.map +1 -1
  16. package/dist/buffalo/buffalo.js +7 -0
  17. package/dist/buffalo/buffalo.js.map +1 -1
  18. package/dist/controller/controller.d.ts.map +1 -1
  19. package/dist/controller/controller.js +8 -11
  20. package/dist/controller/controller.js.map +1 -1
  21. package/dist/controller/events.d.ts +2 -1
  22. package/dist/controller/events.d.ts.map +1 -1
  23. package/dist/controller/helpers/request.d.ts.map +1 -1
  24. package/dist/controller/helpers/request.js +2 -1
  25. package/dist/controller/helpers/request.js.map +1 -1
  26. package/dist/controller/helpers/zclFrameConverter.d.ts +2 -4
  27. package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
  28. package/dist/controller/helpers/zclFrameConverter.js +2 -0
  29. package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
  30. package/dist/controller/model/device.d.ts +13 -24
  31. package/dist/controller/model/device.d.ts.map +1 -1
  32. package/dist/controller/model/device.js +88 -129
  33. package/dist/controller/model/device.js.map +1 -1
  34. package/dist/controller/model/endpoint.d.ts +17 -16
  35. package/dist/controller/model/endpoint.d.ts.map +1 -1
  36. package/dist/controller/model/endpoint.js +31 -16
  37. package/dist/controller/model/endpoint.js.map +1 -1
  38. package/dist/controller/model/group.d.ts +6 -6
  39. package/dist/controller/model/group.d.ts.map +1 -1
  40. package/dist/controller/model/group.js +5 -3
  41. package/dist/controller/model/group.js.map +1 -1
  42. package/dist/controller/model/index.d.ts +1 -0
  43. package/dist/controller/model/index.d.ts.map +1 -1
  44. package/dist/controller/model/index.js +3 -1
  45. package/dist/controller/model/index.js.map +1 -1
  46. package/dist/controller/model/zigbeeEntity.d.ts +8 -0
  47. package/dist/controller/model/zigbeeEntity.d.ts.map +1 -0
  48. package/dist/controller/model/zigbeeEntity.js +11 -0
  49. package/dist/controller/model/zigbeeEntity.js.map +1 -0
  50. package/dist/controller/tstype.d.ts +39 -0
  51. package/dist/controller/tstype.d.ts.map +1 -1
  52. package/dist/zspec/zcl/buffaloZcl.d.ts +32 -17
  53. package/dist/zspec/zcl/buffaloZcl.d.ts.map +1 -1
  54. package/dist/zspec/zcl/buffaloZcl.js +257 -121
  55. package/dist/zspec/zcl/buffaloZcl.js.map +1 -1
  56. package/dist/zspec/zcl/definition/cluster.d.ts.map +1 -1
  57. package/dist/zspec/zcl/definition/cluster.js +156 -33
  58. package/dist/zspec/zcl/definition/cluster.js.map +1 -1
  59. package/dist/zspec/zcl/definition/clusters-typegen.d.ts +2 -0
  60. package/dist/zspec/zcl/definition/clusters-typegen.d.ts.map +1 -0
  61. package/dist/zspec/zcl/definition/clusters-typegen.js +348 -0
  62. package/dist/zspec/zcl/definition/clusters-typegen.js.map +1 -0
  63. package/dist/zspec/zcl/definition/clusters-types.d.ts +7238 -0
  64. package/dist/zspec/zcl/definition/clusters-types.d.ts.map +1 -0
  65. package/dist/zspec/zcl/definition/clusters-types.js +3 -0
  66. package/dist/zspec/zcl/definition/clusters-types.js.map +1 -0
  67. package/dist/zspec/zcl/definition/enums.d.ts +14 -6
  68. package/dist/zspec/zcl/definition/enums.d.ts.map +1 -1
  69. package/dist/zspec/zcl/definition/enums.js +15 -6
  70. package/dist/zspec/zcl/definition/enums.js.map +1 -1
  71. package/dist/zspec/zcl/definition/foundation.d.ts.map +1 -1
  72. package/dist/zspec/zcl/definition/foundation.js +43 -15
  73. package/dist/zspec/zcl/definition/foundation.js.map +1 -1
  74. package/dist/zspec/zcl/definition/tstype.d.ts +105 -11
  75. package/dist/zspec/zcl/definition/tstype.d.ts.map +1 -1
  76. package/dist/zspec/zcl/index.d.ts +1 -0
  77. package/dist/zspec/zcl/index.d.ts.map +1 -1
  78. package/dist/zspec/zcl/index.js.map +1 -1
  79. package/dist/zspec/zcl/utils.d.ts +1 -1
  80. package/dist/zspec/zcl/utils.d.ts.map +1 -1
  81. package/dist/zspec/zcl/utils.js +1 -1
  82. package/dist/zspec/zcl/utils.js.map +1 -1
  83. package/dist/zspec/zcl/zclFrame.d.ts.map +1 -1
  84. package/dist/zspec/zcl/zclFrame.js +32 -20
  85. package/dist/zspec/zcl/zclFrame.js.map +1 -1
  86. package/dist/zspec/zdo/buffaloZdo.d.ts +0 -6
  87. package/dist/zspec/zdo/buffaloZdo.d.ts.map +1 -1
  88. package/dist/zspec/zdo/buffaloZdo.js +0 -8
  89. package/dist/zspec/zdo/buffaloZdo.js.map +1 -1
  90. package/package.json +3 -3
  91. package/src/adapter/ember/ezsp/buffalo.ts +0 -5
  92. package/src/adapter/ember/uart/ash.ts +0 -2
  93. package/src/adapter/ezsp/driver/driver.ts +1 -1
  94. package/src/buffalo/buffalo.ts +8 -0
  95. package/src/controller/controller.ts +13 -16
  96. package/src/controller/events.ts +2 -1
  97. package/src/controller/greenPower.ts +4 -4
  98. package/src/controller/helpers/request.ts +3 -1
  99. package/src/controller/helpers/zclFrameConverter.ts +13 -17
  100. package/src/controller/model/device.ts +103 -148
  101. package/src/controller/model/endpoint.ts +112 -64
  102. package/src/controller/model/group.ts +33 -9
  103. package/src/controller/model/index.ts +1 -0
  104. package/src/controller/model/zigbeeEntity.ts +30 -0
  105. package/src/controller/tstype.ts +251 -16
  106. package/src/zspec/zcl/buffaloZcl.ts +323 -238
  107. package/src/zspec/zcl/definition/cluster.ts +156 -33
  108. package/src/zspec/zcl/definition/clusters-typegen.ts +588 -0
  109. package/src/zspec/zcl/definition/clusters-types.ts +7331 -0
  110. package/src/zspec/zcl/definition/enums.ts +14 -5
  111. package/src/zspec/zcl/definition/foundation.ts +43 -15
  112. package/src/zspec/zcl/definition/tstype.ts +118 -8
  113. package/src/zspec/zcl/index.ts +1 -0
  114. package/src/zspec/zcl/utils.ts +1 -1
  115. package/src/zspec/zcl/zclFrame.ts +37 -19
  116. package/src/zspec/zdo/buffaloZdo.ts +0 -9
  117. package/test/controller.test.ts +356 -896
  118. package/test/greenpower.test.ts +0 -12
  119. package/test/zcl.test.ts +13 -11
  120. package/test/zspec/zcl/buffalo.test.ts +216 -74
  121. package/test/zspec/zcl/frame.test.ts +62 -28
  122. package/test/zspec/zcl/utils.test.ts +4 -4
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=clusters-typegen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clusters-typegen.d.ts","sourceRoot":"","sources":["../../../../src/zspec/zcl/definition/clusters-typegen.ts"],"names":[],"mappings":""}
@@ -0,0 +1,348 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ /* v8 ignore start */
7
+ /**
8
+ * How to run:
9
+ * ```bash
10
+ * npm i -g ts-node
11
+ * ts-node ./src/zspec/zcl/definition/clusters-typegen.ts && pnpm run check:w
12
+ * ```
13
+ * or with compiled:
14
+ * ```bash
15
+ * pnpm run prepack
16
+ * node ./dist/zspec/zcl/definition/clusters-typegen.js && pnpm run check:w
17
+ * ```
18
+ */
19
+ const node_fs_1 = require("node:fs");
20
+ const typescript_1 = __importDefault(require("typescript"));
21
+ const utils_1 = require("../utils");
22
+ const cluster_1 = require("./cluster");
23
+ const enums_1 = require("./enums");
24
+ const foundation_1 = require("./foundation");
25
+ const manufacturerCode_1 = require("./manufacturerCode");
26
+ const FILENAME = "clusters-types.ts";
27
+ const file = typescript_1.default.createSourceFile(FILENAME, "", typescript_1.default.ScriptTarget.ESNext, false, typescript_1.default.ScriptKind.TS);
28
+ const printer = typescript_1.default.createPrinter({ newLine: typescript_1.default.NewLineKind.LineFeed });
29
+ const emptyObject = typescript_1.default.factory.createTypeReferenceNode("Record", [
30
+ typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.StringKeyword),
31
+ typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.NeverKeyword),
32
+ ]);
33
+ const namedImports = typescript_1.default.factory.createImportDeclaration(undefined, typescript_1.default.factory.createImportClause(true, undefined, typescript_1.default.factory.createNamedImports([
34
+ // sorted by name
35
+ typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier("ExtensionFieldSet")),
36
+ typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier("Gpd")),
37
+ typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier("GpdAttributeReport")),
38
+ typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier("GpdChannelConfiguration")),
39
+ typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier("GpdChannelRequest")),
40
+ typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier("GpdCommissioningReply")),
41
+ typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier("GpdCustomReply")),
42
+ typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier("MiboxerZone")),
43
+ typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier("Struct")),
44
+ typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier("StructuredSelector")),
45
+ typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier("ThermoTransition")),
46
+ typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier("TuyaDataPointValue")),
47
+ typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier("ZclArray")),
48
+ // ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("ZclDate")), // XXX: currently unused
49
+ // ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("ZclTimeOfDay")), // XXX: currently unused
50
+ typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier("ZoneInfo")),
51
+ ])), typescript_1.default.factory.createStringLiteral("./tstype"), undefined);
52
+ const getTypeFromDataType = (dataType) => {
53
+ switch (dataType) {
54
+ case enums_1.DataType.NO_DATA:
55
+ case enums_1.DataType.UNKNOWN: {
56
+ return typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.NeverKeyword);
57
+ }
58
+ case enums_1.DataType.DATA56:
59
+ case enums_1.DataType.BITMAP56:
60
+ case enums_1.DataType.UINT56:
61
+ case enums_1.DataType.DATA64:
62
+ case enums_1.DataType.BITMAP64:
63
+ case enums_1.DataType.UINT64:
64
+ case enums_1.DataType.INT56:
65
+ case enums_1.DataType.INT64: {
66
+ return typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.BigIntKeyword);
67
+ }
68
+ case enums_1.DataType.OCTET_STR:
69
+ case enums_1.DataType.LONG_OCTET_STR:
70
+ case enums_1.DataType.SEC_KEY: {
71
+ return typescript_1.default.factory.createTypeReferenceNode("Buffer");
72
+ }
73
+ case enums_1.DataType.CHAR_STR:
74
+ case enums_1.DataType.LONG_CHAR_STR:
75
+ case enums_1.DataType.IEEE_ADDR: {
76
+ return typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.StringKeyword);
77
+ }
78
+ case enums_1.DataType.ARRAY:
79
+ case enums_1.DataType.SET:
80
+ case enums_1.DataType.BAG: {
81
+ // mismatch on read vs write, have to union
82
+ return typescript_1.default.factory.createUnionTypeNode([
83
+ typescript_1.default.factory.createTypeReferenceNode("ZclArray"),
84
+ typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword)),
85
+ ]);
86
+ }
87
+ case enums_1.DataType.STRUCT: {
88
+ return typescript_1.default.factory.createTypeReferenceNode("Struct");
89
+ }
90
+ case enums_1.DataType.TOD: {
91
+ return typescript_1.default.factory.createTypeReferenceNode("ZclTimeOfDay");
92
+ }
93
+ case enums_1.DataType.DATE: {
94
+ return typescript_1.default.factory.createTypeReferenceNode("ZclDate");
95
+ }
96
+ case enums_1.BuffaloZclDataType.USE_DATA_TYPE: {
97
+ return typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword);
98
+ }
99
+ case enums_1.BuffaloZclDataType.LIST_UINT8:
100
+ case enums_1.BuffaloZclDataType.LIST_UINT16:
101
+ case enums_1.BuffaloZclDataType.LIST_UINT24:
102
+ case enums_1.BuffaloZclDataType.LIST_UINT32: {
103
+ return typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.NumberKeyword));
104
+ }
105
+ case enums_1.BuffaloZclDataType.LIST_ZONEINFO: {
106
+ return typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createTypeReferenceNode("ZoneInfo"));
107
+ }
108
+ case enums_1.BuffaloZclDataType.EXTENSION_FIELD_SETS: {
109
+ return typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createTypeReferenceNode("ExtensionFieldSet"));
110
+ }
111
+ case enums_1.BuffaloZclDataType.LIST_THERMO_TRANSITIONS: {
112
+ return typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createTypeReferenceNode("ThermoTransition"));
113
+ }
114
+ case enums_1.BuffaloZclDataType.BUFFER: {
115
+ return typescript_1.default.factory.createTypeReferenceNode("Buffer");
116
+ }
117
+ case enums_1.BuffaloZclDataType.GPD_FRAME: {
118
+ return typescript_1.default.factory.createUnionTypeNode([
119
+ typescript_1.default.factory.createTypeReferenceNode("Gpd"),
120
+ typescript_1.default.factory.createTypeReferenceNode("GpdChannelRequest"),
121
+ typescript_1.default.factory.createTypeReferenceNode("GpdAttributeReport"),
122
+ typescript_1.default.factory.createTypeLiteralNode([
123
+ typescript_1.default.factory.createPropertySignature(undefined, "raw", undefined, typescript_1.default.factory.createTypeReferenceNode("Buffer")),
124
+ ]),
125
+ typescript_1.default.factory.createTypeReferenceNode("Record<string, never>"),
126
+ typescript_1.default.factory.createTypeReferenceNode("GpdCommissioningReply"),
127
+ typescript_1.default.factory.createTypeReferenceNode("GpdChannelConfiguration"),
128
+ typescript_1.default.factory.createTypeReferenceNode("GpdCustomReply"),
129
+ ]);
130
+ }
131
+ case enums_1.BuffaloZclDataType.STRUCTURED_SELECTOR: {
132
+ return typescript_1.default.factory.createTypeReferenceNode("StructuredSelector");
133
+ }
134
+ case enums_1.BuffaloZclDataType.LIST_TUYA_DATAPOINT_VALUES: {
135
+ return typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createTypeReferenceNode("TuyaDataPointValue"));
136
+ }
137
+ case enums_1.BuffaloZclDataType.LIST_MIBOXER_ZONES: {
138
+ return typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createTypeReferenceNode("MiboxerZone"));
139
+ }
140
+ default: {
141
+ return typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.NumberKeyword);
142
+ }
143
+ }
144
+ };
145
+ const getConditionStr = (conditions) => {
146
+ if (conditions) {
147
+ let str = ", Conditions: [";
148
+ for (const condition of conditions) {
149
+ str += `{${condition.type}`;
150
+ for (const key in condition) {
151
+ if (key === "type") {
152
+ continue;
153
+ }
154
+ str += ` ${key}=${condition[key]}`;
155
+ }
156
+ str += "}";
157
+ }
158
+ return `${str}]`;
159
+ }
160
+ };
161
+ const addAttributes = (attributes) => {
162
+ const elements = [];
163
+ for (const attributeName in attributes) {
164
+ const attribute = attributes[attributeName];
165
+ const element = typescript_1.default.factory.createPropertySignature(undefined, attributeName,
166
+ // always optional if manuf-specific
167
+ attribute.manufacturerCode ? typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionToken) : undefined, getTypeFromDataType(attribute.type));
168
+ elements.push(element);
169
+ let comment = `* ID: ${attribute.ID} | Type: ${enums_1.DataType[attribute.type] ?? enums_1.BuffaloZclDataType[attribute.type]} `;
170
+ if (attribute.manufacturerCode !== undefined) {
171
+ comment += `| Specific to manufacturer: ${manufacturerCode_1.ManufacturerCode[attribute.manufacturerCode]} (${attribute.manufacturerCode}) `;
172
+ }
173
+ typescript_1.default.addSyntheticLeadingComment(element, typescript_1.default.SyntaxKind.MultiLineCommentTrivia, comment, true);
174
+ }
175
+ return elements.length > 0 ? typescript_1.default.factory.createTypeLiteralNode(elements) : typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.NeverKeyword);
176
+ };
177
+ const addCommands = (commands) => {
178
+ const elements = [];
179
+ for (const commandName in commands) {
180
+ const command = commands[commandName];
181
+ const cmdElements = [];
182
+ for (const parameter of command.parameters) {
183
+ // @ts-expect-error bad typing?
184
+ const existing = cmdElements.find((element) => element.name.escapedText === parameter.name);
185
+ const paramType = getTypeFromDataType(parameter.type);
186
+ if (!existing) {
187
+ const cmdElement = typescript_1.default.factory.createPropertySignature(undefined, parameter.name, parameter.conditions ? typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionToken) : undefined, paramType);
188
+ const conditionComment = getConditionStr(parameter.conditions);
189
+ cmdElements.push(cmdElement);
190
+ typescript_1.default.addSyntheticLeadingComment(cmdElement, typescript_1.default.SyntaxKind.MultiLineCommentTrivia, `* Type: ${enums_1.DataType[parameter.type] ?? enums_1.BuffaloZclDataType[parameter.type]}${conditionComment ?? ""} `, true);
191
+ }
192
+ else if (
193
+ // @ts-expect-error bad typing?
194
+ existing.type?.typeName?.escapedText &&
195
+ // @ts-expect-error bad typing?
196
+ paramType.typeName?.escapedText &&
197
+ // @ts-expect-error bad typing?
198
+ existing.type.typeName.escapedText !== paramType.typeName.escapedText) {
199
+ // XXX: not currently used, untested
200
+ typescript_1.default.factory.updatePropertySignature(existing, existing.modifiers, existing.name, existing.questionToken, typescript_1.default.factory.createUnionTypeNode([existing.type, paramType]));
201
+ }
202
+ else if (!parameter.conditions) {
203
+ throw new Error(`Two or more cluster command parameters have identical name without conditions. ${JSON.stringify(parameter)}`);
204
+ }
205
+ }
206
+ const element = typescript_1.default.factory.createPropertySignature(undefined, commandName, undefined, cmdElements.length > 0 ? typescript_1.default.factory.createTypeLiteralNode(cmdElements) : emptyObject);
207
+ elements.push(element);
208
+ let comment = `* ID: ${command.ID} `;
209
+ if (command.response !== undefined) {
210
+ comment += `| Response ID: ${command.response} `;
211
+ }
212
+ typescript_1.default.addSyntheticLeadingComment(element, typescript_1.default.SyntaxKind.MultiLineCommentTrivia, comment, true);
213
+ }
214
+ return elements.length > 0 ? typescript_1.default.factory.createTypeLiteralNode(elements) : typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.NeverKeyword);
215
+ };
216
+ const clusterElements = [];
217
+ for (const clusterName in cluster_1.Clusters) {
218
+ const cluster = cluster_1.Clusters[clusterName];
219
+ const attributesProp = typescript_1.default.factory.createPropertySignature(undefined, "attributes", undefined, addAttributes(cluster.attributes));
220
+ const commandsProp = typescript_1.default.factory.createPropertySignature(undefined, "commands", undefined, addCommands(cluster.commands));
221
+ const commandResponsesProp = typescript_1.default.factory.createPropertySignature(undefined, "commandResponses", undefined, addCommands(cluster.commandsResponse));
222
+ clusterElements.push(typescript_1.default.factory.createPropertySignature(undefined, clusterName, undefined, typescript_1.default.factory.createTypeLiteralNode([attributesProp, commandsProp, commandResponsesProp])));
223
+ }
224
+ const clustersDecl = typescript_1.default.factory.createInterfaceDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], "TClusters", undefined, undefined, clusterElements);
225
+ const addParameters = (foundation) => {
226
+ const elements = [];
227
+ for (const parameter of foundation.parameters) {
228
+ const element = typescript_1.default.factory.createPropertySignature(undefined, parameter.name, parameter.conditions ? typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionToken) : undefined, getTypeFromDataType(parameter.type));
229
+ const conditionComment = getConditionStr(parameter.conditions);
230
+ elements.push(element);
231
+ typescript_1.default.addSyntheticLeadingComment(element, typescript_1.default.SyntaxKind.MultiLineCommentTrivia, `* Type: ${enums_1.DataType[parameter.type] ?? enums_1.BuffaloZclDataType[parameter.type]}${conditionComment ?? ""} `, true);
232
+ }
233
+ if (elements.length === 0) {
234
+ return emptyObject;
235
+ }
236
+ switch (foundation.parseStrategy) {
237
+ case "repetitive": {
238
+ return typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createTypeLiteralNode(elements));
239
+ }
240
+ case "flat": {
241
+ return typescript_1.default.factory.createTypeLiteralNode(elements);
242
+ }
243
+ case "oneof": {
244
+ if ((0, utils_1.isFoundationDiscoverRsp)(foundation.ID)) {
245
+ const discComplete = typescript_1.default.factory.createPropertySignature(undefined, "discComplete", undefined, typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.NumberKeyword));
246
+ typescript_1.default.addSyntheticLeadingComment(discComplete, typescript_1.default.SyntaxKind.MultiLineCommentTrivia, `* Type: ${enums_1.DataType[enums_1.DataType.UINT8]} `, true);
247
+ return typescript_1.default.factory.createTypeLiteralNode([
248
+ discComplete,
249
+ typescript_1.default.factory.createPropertySignature(undefined, "attrInfos", undefined, typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createTypeLiteralNode(elements))),
250
+ ]);
251
+ }
252
+ }
253
+ }
254
+ throw new Error(`Unknown command strategy for ${JSON.stringify(foundation)}`);
255
+ };
256
+ const foundationElements = [];
257
+ const foundationRepetitiveElements = [];
258
+ const foundationFlatElements = [];
259
+ const foundationOneOfElements = [];
260
+ for (const foundationName in foundation_1.Foundation) {
261
+ const foundation = foundation_1.Foundation[foundationName];
262
+ const element = typescript_1.default.factory.createPropertySignature(undefined, foundationName, undefined, addParameters(foundation));
263
+ foundationElements.push(element);
264
+ typescript_1.default.addSyntheticLeadingComment(element, typescript_1.default.SyntaxKind.MultiLineCommentTrivia, `* ID: ${foundation.ID} `, true);
265
+ const stratNode = typescript_1.default.factory.createTypeReferenceNode(`"${foundationName}"`);
266
+ switch (foundation.parseStrategy) {
267
+ case "repetitive": {
268
+ foundationRepetitiveElements.push(stratNode);
269
+ break;
270
+ }
271
+ case "flat": {
272
+ foundationFlatElements.push(stratNode);
273
+ break;
274
+ }
275
+ case "oneof": {
276
+ foundationOneOfElements.push(stratNode);
277
+ break;
278
+ }
279
+ }
280
+ }
281
+ const foundationDecl = typescript_1.default.factory.createInterfaceDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], "TFoundation", undefined, undefined, foundationElements);
282
+ const foundationRepetitiveDecl = typescript_1.default.factory.createTypeAliasDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], "TFoundationRepetitive", undefined, typescript_1.default.factory.createUnionTypeNode(foundationRepetitiveElements));
283
+ const foundationFlatDecl = typescript_1.default.factory.createTypeAliasDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], "TFoundationFlat", undefined, typescript_1.default.factory.createUnionTypeNode(foundationFlatElements));
284
+ const foundationOneOfDecl = typescript_1.default.factory.createTypeAliasDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], "TFoundationOneOf", undefined, typescript_1.default.factory.createUnionTypeNode(foundationOneOfElements));
285
+ const clDecl = typescript_1.default.factory.createTypeParameterDeclaration(undefined, "Cl", typescript_1.default.factory.createUnionTypeNode([
286
+ typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.NumberKeyword),
287
+ typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.StringKeyword),
288
+ ]));
289
+ const coDecl = typescript_1.default.factory.createTypeParameterDeclaration(undefined, "Co", typescript_1.default.factory.createUnionTypeNode([
290
+ typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.NumberKeyword),
291
+ typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.StringKeyword),
292
+ ]));
293
+ const clusterAttributeKeysDecl = typescript_1.default.factory.createTypeAliasDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], "TClusterAttributeKeys", [clDecl], typescript_1.default.factory.createTypeReferenceNode(`Cl extends keyof ${clustersDecl.name.escapedText} ? (keyof ${clustersDecl.name.escapedText}[Cl]["attributes"])[] : (string | number)[];`));
294
+ const clusterAttributesDecl = typescript_1.default.factory.createTypeAliasDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], "TClusterAttributes", [clDecl], typescript_1.default.factory.createTypeReferenceNode(`Cl extends keyof ${clustersDecl.name.escapedText} ? ${clustersDecl.name.escapedText}[Cl]["attributes"] : never`));
295
+ const partialClusterAttributesDecl = typescript_1.default.factory.createTypeAliasDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], "TPartialClusterAttributes", [clDecl], typescript_1.default.factory.createTypeReferenceNode(`Cl extends keyof ${clustersDecl.name.escapedText} ? Partial<${clustersDecl.name.escapedText}[Cl]["attributes"]> : never`));
296
+ const clusterCommandKeysDecl = typescript_1.default.factory.createTypeAliasDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], "TClusterCommandKeys", [clDecl], typescript_1.default.factory.createTypeReferenceNode(`Cl extends keyof ${clustersDecl.name.escapedText} ? (keyof ${clustersDecl.name.escapedText}[Cl]["commands"])[] : (string | number)[];`));
297
+ const clusterCommandResponseKeysDecl = typescript_1.default.factory.createTypeAliasDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], "TClusterCommandResponseKeys", [clDecl], typescript_1.default.factory.createTypeReferenceNode(`Cl extends keyof ${clustersDecl.name.escapedText} ? (keyof ${clustersDecl.name.escapedText}[Cl]["commandResponses"])[] : (string | number)[];`));
298
+ const clusterCommandsDecl = typescript_1.default.factory.createTypeAliasDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], "TClusterCommands", [clDecl], typescript_1.default.factory.createTypeReferenceNode(`Cl extends keyof ${clustersDecl.name.escapedText} ? ${clustersDecl.name.escapedText}[Cl]["commands"] : never`));
299
+ const clusterCommandResponsesDecl = typescript_1.default.factory.createTypeAliasDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], "TClusterCommandResponses", [clDecl], typescript_1.default.factory.createTypeReferenceNode(`Cl extends keyof ${clustersDecl.name.escapedText} ? ${clustersDecl.name.escapedText}[Cl]["commandResponses"] : never`));
300
+ const clusterCommandPayloadDecl = typescript_1.default.factory.createTypeAliasDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], "TClusterCommandPayload", [clDecl, coDecl], typescript_1.default.factory.createTypeReferenceNode(`Cl extends keyof ${clustersDecl.name.escapedText} ? Co extends keyof ${clustersDecl.name.escapedText}[Cl]["commands"] ? ${clustersDecl.name.escapedText}[Cl]["commands"][Co] : never : never;`));
301
+ const clusterCommandResponsePayloadDecl = typescript_1.default.factory.createTypeAliasDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], "TClusterCommandResponsePayload", [clDecl, coDecl], typescript_1.default.factory.createTypeReferenceNode(`Cl extends keyof ${clustersDecl.name.escapedText} ? Co extends keyof ${clustersDecl.name.escapedText}[Cl]["commandResponses"] ? ${clustersDecl.name.escapedText}[Cl]["commandResponses"][Co] : never : never;`));
302
+ const clusterPayloadDecl = typescript_1.default.factory.createTypeAliasDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], "TClusterPayload", [clDecl, coDecl], typescript_1.default.factory.createTypeReferenceNode(`Cl extends keyof ${clustersDecl.name.escapedText} ? ${clustersDecl.name.escapedText}[Cl]["commands"] extends never ? ${clustersDecl.name.escapedText}[Cl]["commandResponses"] extends never ? never : Co extends keyof ${clustersDecl.name.escapedText}[Cl]["commandResponses"] ? ${clustersDecl.name.escapedText}[Cl]["commandResponses"][Co] : never : Co extends keyof ${clustersDecl.name.escapedText}[Cl]["commands"] ? ${clustersDecl.name.escapedText}[Cl]["commands"][Co] : Co extends keyof ${clustersDecl.name.escapedText}[Cl]["commandResponses"] ? ${clustersDecl.name.escapedText}[Cl]["commandResponses"][Co] : never : never;`));
303
+ const foundationGenericPayloadDecl = typescript_1.default.factory.createTypeAliasDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], "TFoundationGenericPayload", undefined, typescript_1.default.factory.createTypeReferenceNode(`${foundationDecl.name.escapedText}[keyof ${foundationDecl.name.escapedText}]`));
304
+ const foundationRepetitivePayloadDecl = typescript_1.default.factory.createTypeAliasDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], "TFoundationRepetitivePayload", undefined, typescript_1.default.factory.createTypeReferenceNode(`${foundationDecl.name.escapedText}[${foundationRepetitiveDecl.name.escapedText}]`));
305
+ const foundationFlatPayloadDecl = typescript_1.default.factory.createTypeAliasDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], "TFoundationFlatPayload", undefined, typescript_1.default.factory.createTypeReferenceNode(`${foundationDecl.name.escapedText}[${foundationFlatDecl.name.escapedText}]`));
306
+ const foundationOneOfPayloadDecl = typescript_1.default.factory.createTypeAliasDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], "TFoundationOneOfPayload", undefined, typescript_1.default.factory.createTypeReferenceNode(`${foundationDecl.name.escapedText}[${foundationOneOfDecl.name.escapedText}]`));
307
+ const foundationPayloadDecl = typescript_1.default.factory.createTypeAliasDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], "TFoundationPayload", [coDecl], typescript_1.default.factory.createTypeReferenceNode(`Co extends keyof ${foundationDecl.name.escapedText} ? ${foundationDecl.name.escapedText}[Co] : ${foundationGenericPayloadDecl.name.escapedText}`));
308
+ const result = `${printer.printNode(typescript_1.default.EmitHint.Unspecified, namedImports, file)}
309
+
310
+ ${printer.printNode(typescript_1.default.EmitHint.Unspecified, clustersDecl, file)}
311
+
312
+ ${printer.printNode(typescript_1.default.EmitHint.Unspecified, foundationDecl, file)}
313
+
314
+ ${printer.printNode(typescript_1.default.EmitHint.Unspecified, foundationRepetitiveDecl, file)}
315
+ ${printer.printNode(typescript_1.default.EmitHint.Unspecified, foundationFlatDecl, file)}
316
+ ${printer.printNode(typescript_1.default.EmitHint.Unspecified, foundationOneOfDecl, file)}
317
+
318
+ // Clusters
319
+ ${printer.printNode(typescript_1.default.EmitHint.Unspecified, clusterAttributeKeysDecl, file)}
320
+
321
+ ${printer.printNode(typescript_1.default.EmitHint.Unspecified, clusterAttributesDecl, file)}
322
+
323
+ ${printer.printNode(typescript_1.default.EmitHint.Unspecified, partialClusterAttributesDecl, file)}
324
+
325
+ ${printer.printNode(typescript_1.default.EmitHint.Unspecified, clusterCommandKeysDecl, file)}
326
+
327
+ ${printer.printNode(typescript_1.default.EmitHint.Unspecified, clusterCommandResponseKeysDecl, file)}
328
+
329
+ ${printer.printNode(typescript_1.default.EmitHint.Unspecified, clusterCommandsDecl, file)}
330
+
331
+ ${printer.printNode(typescript_1.default.EmitHint.Unspecified, clusterCommandResponsesDecl, file)}
332
+
333
+ ${printer.printNode(typescript_1.default.EmitHint.Unspecified, clusterCommandPayloadDecl, file)}
334
+
335
+ ${printer.printNode(typescript_1.default.EmitHint.Unspecified, clusterCommandResponsePayloadDecl, file)}
336
+
337
+ ${printer.printNode(typescript_1.default.EmitHint.Unspecified, clusterPayloadDecl, file)}
338
+
339
+ // Foundation
340
+ ${printer.printNode(typescript_1.default.EmitHint.Unspecified, foundationGenericPayloadDecl, file)}
341
+ ${printer.printNode(typescript_1.default.EmitHint.Unspecified, foundationRepetitivePayloadDecl, file)}
342
+ ${printer.printNode(typescript_1.default.EmitHint.Unspecified, foundationFlatPayloadDecl, file)}
343
+ ${printer.printNode(typescript_1.default.EmitHint.Unspecified, foundationOneOfPayloadDecl, file)}
344
+
345
+ ${printer.printNode(typescript_1.default.EmitHint.Unspecified, foundationPayloadDecl, file)}
346
+ `;
347
+ (0, node_fs_1.writeFileSync)(`./src/zspec/zcl/definition/${FILENAME}`, result, { encoding: "utf8" });
348
+ //# sourceMappingURL=clusters-typegen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clusters-typegen.js","sourceRoot":"","sources":["../../../../src/zspec/zcl/definition/clusters-typegen.ts"],"names":[],"mappings":"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"}