matterbridge 3.4.6 → 3.4.7-dev-20260103-3152357

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 (345) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README-DOCKER.md +8 -0
  3. package/dist/broadcastServer.js +0 -117
  4. package/dist/broadcastServerTypes.js +0 -24
  5. package/dist/cli.js +1 -97
  6. package/dist/cliEmitter.js +0 -37
  7. package/dist/cliHistory.js +0 -38
  8. package/dist/clusters/export.js +0 -2
  9. package/dist/deviceManager.js +1 -113
  10. package/dist/devices/airConditioner.js +0 -57
  11. package/dist/devices/batteryStorage.js +1 -48
  12. package/dist/devices/cooktop.js +0 -56
  13. package/dist/devices/dishwasher.js +0 -57
  14. package/dist/devices/evse.js +10 -74
  15. package/dist/devices/export.js +0 -5
  16. package/dist/devices/extractorHood.js +0 -43
  17. package/dist/devices/heatPump.js +2 -50
  18. package/dist/devices/laundryDryer.js +3 -62
  19. package/dist/devices/laundryWasher.js +4 -70
  20. package/dist/devices/microwaveOven.js +5 -88
  21. package/dist/devices/oven.js +0 -85
  22. package/dist/devices/refrigerator.js +0 -102
  23. package/dist/devices/roboticVacuumCleaner.js +9 -100
  24. package/dist/devices/solarPower.js +0 -38
  25. package/dist/devices/speaker.js +0 -84
  26. package/dist/devices/temperatureControl.js +3 -24
  27. package/dist/devices/waterHeater.js +2 -82
  28. package/dist/dgram/coap.js +13 -126
  29. package/dist/dgram/dgram.js +2 -114
  30. package/dist/dgram/mb_coap.js +3 -41
  31. package/dist/dgram/mb_mdns.js +23 -77
  32. package/dist/dgram/mdns.js +139 -371
  33. package/dist/dgram/mdnsReflectorClient.js +5 -71
  34. package/dist/dgram/mdnsReflectorServer.js +8 -73
  35. package/dist/dgram/mdnsReflectorTypes.js +1 -24
  36. package/dist/dgram/multicast.js +1 -62
  37. package/dist/dgram/unicast.js +0 -60
  38. package/dist/frontend.js +38 -485
  39. package/dist/frontendTypes.js +0 -45
  40. package/dist/helpers.js +0 -53
  41. package/dist/index.js +0 -25
  42. package/dist/jestutils/export.js +0 -1
  43. package/dist/jestutils/jestHelpers.js +14 -371
  44. package/dist/logger/export.js +0 -1
  45. package/dist/matter/behaviors.js +0 -2
  46. package/dist/matter/clusters.js +0 -2
  47. package/dist/matter/devices.js +0 -2
  48. package/dist/matter/endpoints.js +0 -2
  49. package/dist/matter/export.js +0 -3
  50. package/dist/matter/types.js +0 -3
  51. package/dist/matterNode.js +8 -369
  52. package/dist/matterbridge.js +46 -824
  53. package/dist/matterbridgeAccessoryPlatform.js +0 -38
  54. package/dist/matterbridgeBehaviors.js +5 -68
  55. package/dist/matterbridgeDeviceTypes.js +14 -635
  56. package/dist/matterbridgeDynamicPlatform.js +0 -38
  57. package/dist/matterbridgeEndpoint.js +53 -1457
  58. package/dist/matterbridgeEndpointHelpers.js +20 -483
  59. package/dist/matterbridgeEndpointTypes.js +0 -25
  60. package/dist/matterbridgePlatform.js +1 -451
  61. package/dist/matterbridgeTypes.js +0 -26
  62. package/dist/pluginManager.js +5 -341
  63. package/dist/shelly.js +7 -178
  64. package/dist/storage/export.js +0 -1
  65. package/dist/update.js +1 -93
  66. package/dist/utils/colorUtils.js +2 -97
  67. package/dist/utils/commandLine.js +0 -60
  68. package/dist/utils/copyDirectory.js +0 -37
  69. package/dist/utils/createDirectory.js +0 -33
  70. package/dist/utils/createZip.js +2 -47
  71. package/dist/utils/deepCopy.js +0 -39
  72. package/dist/utils/deepEqual.js +1 -72
  73. package/dist/utils/error.js +0 -42
  74. package/dist/utils/export.js +0 -1
  75. package/dist/utils/format.js +0 -49
  76. package/dist/utils/hex.js +0 -124
  77. package/dist/utils/inspector.js +1 -69
  78. package/dist/utils/isValid.js +0 -93
  79. package/dist/utils/network.js +5 -125
  80. package/dist/utils/spawn.js +1 -71
  81. package/dist/utils/tracker.js +1 -64
  82. package/dist/utils/wait.js +8 -60
  83. package/dist/workerGlobalPrefix.js +5 -37
  84. package/dist/workerTypes.js +0 -24
  85. package/dist/workers.js +4 -68
  86. package/npm-shrinkwrap.json +25 -25
  87. package/package.json +1 -2
  88. package/packages/mb-lib-test/dist/jestutils/jestHelpers.js +77 -0
  89. package/packages/mb-lib-test/dist/module.js +2 -0
  90. package/packages/mb-lib-test/dist/vitestutils/vitestHelpers.js +77 -0
  91. package/packages/mb-lib-test/package.json +10 -9
  92. package/dist/broadcastServer.d.ts +0 -144
  93. package/dist/broadcastServer.d.ts.map +0 -1
  94. package/dist/broadcastServer.js.map +0 -1
  95. package/dist/broadcastServerTypes.d.ts +0 -841
  96. package/dist/broadcastServerTypes.d.ts.map +0 -1
  97. package/dist/broadcastServerTypes.js.map +0 -1
  98. package/dist/cli.d.ts +0 -30
  99. package/dist/cli.d.ts.map +0 -1
  100. package/dist/cli.js.map +0 -1
  101. package/dist/cliEmitter.d.ts +0 -50
  102. package/dist/cliEmitter.d.ts.map +0 -1
  103. package/dist/cliEmitter.js.map +0 -1
  104. package/dist/cliHistory.d.ts +0 -48
  105. package/dist/cliHistory.d.ts.map +0 -1
  106. package/dist/cliHistory.js.map +0 -1
  107. package/dist/clusters/export.d.ts +0 -2
  108. package/dist/clusters/export.d.ts.map +0 -1
  109. package/dist/clusters/export.js.map +0 -1
  110. package/dist/deviceManager.d.ts +0 -135
  111. package/dist/deviceManager.d.ts.map +0 -1
  112. package/dist/deviceManager.js.map +0 -1
  113. package/dist/devices/airConditioner.d.ts +0 -98
  114. package/dist/devices/airConditioner.d.ts.map +0 -1
  115. package/dist/devices/airConditioner.js.map +0 -1
  116. package/dist/devices/batteryStorage.d.ts +0 -48
  117. package/dist/devices/batteryStorage.d.ts.map +0 -1
  118. package/dist/devices/batteryStorage.js.map +0 -1
  119. package/dist/devices/cooktop.d.ts +0 -61
  120. package/dist/devices/cooktop.d.ts.map +0 -1
  121. package/dist/devices/cooktop.js.map +0 -1
  122. package/dist/devices/dishwasher.d.ts +0 -71
  123. package/dist/devices/dishwasher.d.ts.map +0 -1
  124. package/dist/devices/dishwasher.js.map +0 -1
  125. package/dist/devices/evse.d.ts +0 -76
  126. package/dist/devices/evse.d.ts.map +0 -1
  127. package/dist/devices/evse.js.map +0 -1
  128. package/dist/devices/export.d.ts +0 -17
  129. package/dist/devices/export.d.ts.map +0 -1
  130. package/dist/devices/export.js.map +0 -1
  131. package/dist/devices/extractorHood.d.ts +0 -46
  132. package/dist/devices/extractorHood.d.ts.map +0 -1
  133. package/dist/devices/extractorHood.js.map +0 -1
  134. package/dist/devices/heatPump.d.ts +0 -47
  135. package/dist/devices/heatPump.d.ts.map +0 -1
  136. package/dist/devices/heatPump.js.map +0 -1
  137. package/dist/devices/laundryDryer.d.ts +0 -67
  138. package/dist/devices/laundryDryer.d.ts.map +0 -1
  139. package/dist/devices/laundryDryer.js.map +0 -1
  140. package/dist/devices/laundryWasher.d.ts +0 -81
  141. package/dist/devices/laundryWasher.d.ts.map +0 -1
  142. package/dist/devices/laundryWasher.js.map +0 -1
  143. package/dist/devices/microwaveOven.d.ts +0 -168
  144. package/dist/devices/microwaveOven.d.ts.map +0 -1
  145. package/dist/devices/microwaveOven.js.map +0 -1
  146. package/dist/devices/oven.d.ts +0 -105
  147. package/dist/devices/oven.d.ts.map +0 -1
  148. package/dist/devices/oven.js.map +0 -1
  149. package/dist/devices/refrigerator.d.ts +0 -118
  150. package/dist/devices/refrigerator.d.ts.map +0 -1
  151. package/dist/devices/refrigerator.js.map +0 -1
  152. package/dist/devices/roboticVacuumCleaner.d.ts +0 -112
  153. package/dist/devices/roboticVacuumCleaner.d.ts.map +0 -1
  154. package/dist/devices/roboticVacuumCleaner.js.map +0 -1
  155. package/dist/devices/solarPower.d.ts +0 -40
  156. package/dist/devices/solarPower.d.ts.map +0 -1
  157. package/dist/devices/solarPower.js.map +0 -1
  158. package/dist/devices/speaker.d.ts +0 -87
  159. package/dist/devices/speaker.d.ts.map +0 -1
  160. package/dist/devices/speaker.js.map +0 -1
  161. package/dist/devices/temperatureControl.d.ts +0 -166
  162. package/dist/devices/temperatureControl.d.ts.map +0 -1
  163. package/dist/devices/temperatureControl.js.map +0 -1
  164. package/dist/devices/waterHeater.d.ts +0 -111
  165. package/dist/devices/waterHeater.d.ts.map +0 -1
  166. package/dist/devices/waterHeater.js.map +0 -1
  167. package/dist/dgram/coap.d.ts +0 -205
  168. package/dist/dgram/coap.d.ts.map +0 -1
  169. package/dist/dgram/coap.js.map +0 -1
  170. package/dist/dgram/dgram.d.ts +0 -143
  171. package/dist/dgram/dgram.d.ts.map +0 -1
  172. package/dist/dgram/dgram.js.map +0 -1
  173. package/dist/dgram/mb_coap.d.ts +0 -24
  174. package/dist/dgram/mb_coap.d.ts.map +0 -1
  175. package/dist/dgram/mb_coap.js.map +0 -1
  176. package/dist/dgram/mb_mdns.d.ts +0 -24
  177. package/dist/dgram/mb_mdns.d.ts.map +0 -1
  178. package/dist/dgram/mb_mdns.js.map +0 -1
  179. package/dist/dgram/mdns.d.ts +0 -371
  180. package/dist/dgram/mdns.d.ts.map +0 -1
  181. package/dist/dgram/mdns.js.map +0 -1
  182. package/dist/dgram/mdnsReflectorClient.d.ts +0 -88
  183. package/dist/dgram/mdnsReflectorClient.d.ts.map +0 -1
  184. package/dist/dgram/mdnsReflectorClient.js.map +0 -1
  185. package/dist/dgram/mdnsReflectorServer.d.ts +0 -78
  186. package/dist/dgram/mdnsReflectorServer.d.ts.map +0 -1
  187. package/dist/dgram/mdnsReflectorServer.js.map +0 -1
  188. package/dist/dgram/mdnsReflectorTypes.d.ts +0 -28
  189. package/dist/dgram/mdnsReflectorTypes.d.ts.map +0 -1
  190. package/dist/dgram/mdnsReflectorTypes.js.map +0 -1
  191. package/dist/dgram/multicast.d.ts +0 -67
  192. package/dist/dgram/multicast.d.ts.map +0 -1
  193. package/dist/dgram/multicast.js.map +0 -1
  194. package/dist/dgram/unicast.d.ts +0 -64
  195. package/dist/dgram/unicast.d.ts.map +0 -1
  196. package/dist/dgram/unicast.js.map +0 -1
  197. package/dist/frontend.d.ts +0 -245
  198. package/dist/frontend.d.ts.map +0 -1
  199. package/dist/frontend.js.map +0 -1
  200. package/dist/frontendTypes.d.ts +0 -529
  201. package/dist/frontendTypes.d.ts.map +0 -1
  202. package/dist/frontendTypes.js.map +0 -1
  203. package/dist/helpers.d.ts +0 -48
  204. package/dist/helpers.d.ts.map +0 -1
  205. package/dist/helpers.js.map +0 -1
  206. package/dist/index.d.ts +0 -34
  207. package/dist/index.d.ts.map +0 -1
  208. package/dist/index.js.map +0 -1
  209. package/dist/jestutils/export.d.ts +0 -2
  210. package/dist/jestutils/export.d.ts.map +0 -1
  211. package/dist/jestutils/export.js.map +0 -1
  212. package/dist/jestutils/jestHelpers.d.ts +0 -345
  213. package/dist/jestutils/jestHelpers.d.ts.map +0 -1
  214. package/dist/jestutils/jestHelpers.js.map +0 -1
  215. package/dist/logger/export.d.ts +0 -2
  216. package/dist/logger/export.d.ts.map +0 -1
  217. package/dist/logger/export.js.map +0 -1
  218. package/dist/matter/behaviors.d.ts +0 -2
  219. package/dist/matter/behaviors.d.ts.map +0 -1
  220. package/dist/matter/behaviors.js.map +0 -1
  221. package/dist/matter/clusters.d.ts +0 -2
  222. package/dist/matter/clusters.d.ts.map +0 -1
  223. package/dist/matter/clusters.js.map +0 -1
  224. package/dist/matter/devices.d.ts +0 -2
  225. package/dist/matter/devices.d.ts.map +0 -1
  226. package/dist/matter/devices.js.map +0 -1
  227. package/dist/matter/endpoints.d.ts +0 -2
  228. package/dist/matter/endpoints.d.ts.map +0 -1
  229. package/dist/matter/endpoints.js.map +0 -1
  230. package/dist/matter/export.d.ts +0 -5
  231. package/dist/matter/export.d.ts.map +0 -1
  232. package/dist/matter/export.js.map +0 -1
  233. package/dist/matter/types.d.ts +0 -3
  234. package/dist/matter/types.d.ts.map +0 -1
  235. package/dist/matter/types.js.map +0 -1
  236. package/dist/matterNode.d.ts +0 -342
  237. package/dist/matterNode.d.ts.map +0 -1
  238. package/dist/matterNode.js.map +0 -1
  239. package/dist/matterbridge.d.ts +0 -505
  240. package/dist/matterbridge.d.ts.map +0 -1
  241. package/dist/matterbridge.js.map +0 -1
  242. package/dist/matterbridgeAccessoryPlatform.d.ts +0 -41
  243. package/dist/matterbridgeAccessoryPlatform.d.ts.map +0 -1
  244. package/dist/matterbridgeAccessoryPlatform.js.map +0 -1
  245. package/dist/matterbridgeBehaviors.d.ts +0 -2404
  246. package/dist/matterbridgeBehaviors.d.ts.map +0 -1
  247. package/dist/matterbridgeBehaviors.js.map +0 -1
  248. package/dist/matterbridgeDeviceTypes.d.ts +0 -698
  249. package/dist/matterbridgeDeviceTypes.d.ts.map +0 -1
  250. package/dist/matterbridgeDeviceTypes.js.map +0 -1
  251. package/dist/matterbridgeDynamicPlatform.d.ts +0 -41
  252. package/dist/matterbridgeDynamicPlatform.d.ts.map +0 -1
  253. package/dist/matterbridgeDynamicPlatform.js.map +0 -1
  254. package/dist/matterbridgeEndpoint.d.ts +0 -1507
  255. package/dist/matterbridgeEndpoint.d.ts.map +0 -1
  256. package/dist/matterbridgeEndpoint.js.map +0 -1
  257. package/dist/matterbridgeEndpointHelpers.d.ts +0 -787
  258. package/dist/matterbridgeEndpointHelpers.d.ts.map +0 -1
  259. package/dist/matterbridgeEndpointHelpers.js.map +0 -1
  260. package/dist/matterbridgeEndpointTypes.d.ts +0 -166
  261. package/dist/matterbridgeEndpointTypes.d.ts.map +0 -1
  262. package/dist/matterbridgeEndpointTypes.js.map +0 -1
  263. package/dist/matterbridgePlatform.d.ts +0 -539
  264. package/dist/matterbridgePlatform.d.ts.map +0 -1
  265. package/dist/matterbridgePlatform.js.map +0 -1
  266. package/dist/matterbridgeTypes.d.ts +0 -252
  267. package/dist/matterbridgeTypes.d.ts.map +0 -1
  268. package/dist/matterbridgeTypes.js.map +0 -1
  269. package/dist/pluginManager.d.ts +0 -372
  270. package/dist/pluginManager.d.ts.map +0 -1
  271. package/dist/pluginManager.js.map +0 -1
  272. package/dist/shelly.d.ts +0 -181
  273. package/dist/shelly.d.ts.map +0 -1
  274. package/dist/shelly.js.map +0 -1
  275. package/dist/storage/export.d.ts +0 -2
  276. package/dist/storage/export.d.ts.map +0 -1
  277. package/dist/storage/export.js.map +0 -1
  278. package/dist/update.d.ts +0 -84
  279. package/dist/update.d.ts.map +0 -1
  280. package/dist/update.js.map +0 -1
  281. package/dist/utils/colorUtils.d.ts +0 -101
  282. package/dist/utils/colorUtils.d.ts.map +0 -1
  283. package/dist/utils/colorUtils.js.map +0 -1
  284. package/dist/utils/commandLine.d.ts +0 -66
  285. package/dist/utils/commandLine.d.ts.map +0 -1
  286. package/dist/utils/commandLine.js.map +0 -1
  287. package/dist/utils/copyDirectory.d.ts +0 -35
  288. package/dist/utils/copyDirectory.d.ts.map +0 -1
  289. package/dist/utils/copyDirectory.js.map +0 -1
  290. package/dist/utils/createDirectory.d.ts +0 -34
  291. package/dist/utils/createDirectory.d.ts.map +0 -1
  292. package/dist/utils/createDirectory.js.map +0 -1
  293. package/dist/utils/createZip.d.ts +0 -39
  294. package/dist/utils/createZip.d.ts.map +0 -1
  295. package/dist/utils/createZip.js.map +0 -1
  296. package/dist/utils/deepCopy.d.ts +0 -32
  297. package/dist/utils/deepCopy.d.ts.map +0 -1
  298. package/dist/utils/deepCopy.js.map +0 -1
  299. package/dist/utils/deepEqual.d.ts +0 -54
  300. package/dist/utils/deepEqual.d.ts.map +0 -1
  301. package/dist/utils/deepEqual.js.map +0 -1
  302. package/dist/utils/error.d.ts +0 -45
  303. package/dist/utils/error.d.ts.map +0 -1
  304. package/dist/utils/error.js.map +0 -1
  305. package/dist/utils/export.d.ts +0 -13
  306. package/dist/utils/export.d.ts.map +0 -1
  307. package/dist/utils/export.js.map +0 -1
  308. package/dist/utils/format.d.ts +0 -53
  309. package/dist/utils/format.d.ts.map +0 -1
  310. package/dist/utils/format.js.map +0 -1
  311. package/dist/utils/hex.d.ts +0 -89
  312. package/dist/utils/hex.d.ts.map +0 -1
  313. package/dist/utils/hex.js.map +0 -1
  314. package/dist/utils/inspector.d.ts +0 -87
  315. package/dist/utils/inspector.d.ts.map +0 -1
  316. package/dist/utils/inspector.js.map +0 -1
  317. package/dist/utils/isValid.d.ts +0 -103
  318. package/dist/utils/isValid.d.ts.map +0 -1
  319. package/dist/utils/isValid.js.map +0 -1
  320. package/dist/utils/network.d.ts +0 -140
  321. package/dist/utils/network.d.ts.map +0 -1
  322. package/dist/utils/network.js.map +0 -1
  323. package/dist/utils/spawn.d.ts +0 -33
  324. package/dist/utils/spawn.d.ts.map +0 -1
  325. package/dist/utils/spawn.js.map +0 -1
  326. package/dist/utils/tracker.d.ts +0 -108
  327. package/dist/utils/tracker.d.ts.map +0 -1
  328. package/dist/utils/tracker.js.map +0 -1
  329. package/dist/utils/wait.d.ts +0 -54
  330. package/dist/utils/wait.d.ts.map +0 -1
  331. package/dist/utils/wait.js.map +0 -1
  332. package/dist/workerGlobalPrefix.d.ts +0 -25
  333. package/dist/workerGlobalPrefix.d.ts.map +0 -1
  334. package/dist/workerGlobalPrefix.js.map +0 -1
  335. package/dist/workerTypes.d.ts +0 -52
  336. package/dist/workerTypes.d.ts.map +0 -1
  337. package/dist/workerTypes.js.map +0 -1
  338. package/dist/workers.d.ts +0 -69
  339. package/dist/workers.d.ts.map +0 -1
  340. package/dist/workers.js.map +0 -1
  341. package/scripts/data_model.mjs +0 -2058
  342. package/scripts/fetch-chip.mjs +0 -102
  343. package/scripts/marked.mjs +0 -133
  344. package/scripts/markedFooter.html +0 -42
  345. package/scripts/markedHeader.html +0 -78
@@ -1,102 +0,0 @@
1
- /* eslint-disable */
2
- import { mkdir, writeFile } from 'node:fs/promises';
3
- import { dirname, join as pathJoin, sep as pathSep } from 'node:path';
4
- import https from 'node:https';
5
-
6
- /**
7
- * Fetch the canonical Matter ZCL JSON file from the connectedhomeip repository
8
- * and store it locally for offline / deterministic revision checks.
9
- *
10
- * Environment overrides:
11
- * - ZCL_OUT: output path for zcl.json (default: chip/zcl.json)
12
- * - ZCL_BRANCH: connectedhomeip branch to fetch from (default: v1.4-branch)
13
- */
14
- // Single branch strategy from online only
15
- const BRANCH = process.env.ZCL_BRANCH || 'v1.4.2-branch';
16
- const OUT_ZCL_PATH = process.env.ZCL_OUT || `chip/${BRANCH}/zcl.json`;
17
- const OUT_MANUFACTURERS_PATH = process.env.MANUFACTURERS_OUT || `chip/${BRANCH}/manufacturers.xml`;
18
- const ZCL_BASE_URL = `https://raw.githubusercontent.com/project-chip/connectedhomeip/${BRANCH}/src/app/zap-templates/zcl/`;
19
- const ZCL_JSON_URL = ZCL_BASE_URL + 'zcl.json';
20
- const MANUFACTURERS_URL = ZCL_BASE_URL + 'data-model/manufacturers.xml';
21
- const XML_BASE_URL = ZCL_BASE_URL + 'data-model/chip/';
22
-
23
- function fetchUrl(url) {
24
- return new Promise((resolve, reject) => {
25
- https
26
- .get(url, (res) => {
27
- if (res.statusCode && res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) {
28
- // Follow redirect
29
- return resolve(fetchUrl(res.headers.location));
30
- }
31
- if (res.statusCode !== 200) {
32
- return reject(new Error(`Failed to fetch ${url}: ${res.statusCode}`));
33
- }
34
- const chunks = [];
35
- res.on('data', (c) => chunks.push(c));
36
- res.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
37
- })
38
- .on('error', reject);
39
- });
40
- }
41
-
42
- async function main() {
43
- await mkdir(dirname(OUT_ZCL_PATH), { recursive: true });
44
- // Always fetch online from the specified branch
45
- const data = await fetchUrl(ZCL_JSON_URL);
46
-
47
- // Structural sanity check: this is a ZAP ZCL properties file, expected to include xml roots and files
48
- let parsed;
49
- try {
50
- parsed = JSON.parse(data);
51
- } catch (e) {
52
- throw new Error(`Downloaded content is not valid JSON: ${e.message}`);
53
- }
54
- if (!parsed || typeof parsed !== 'object' || !Array.isArray(parsed.xmlFile)) {
55
- process.stderr.write('Warning: zcl.json does not contain expected ZAP ZCL properties (xmlFile). Saving anyway for manual inspection.\n');
56
- }
57
-
58
- await writeFile(OUT_ZCL_PATH, JSON.stringify(parsed, null, 2));
59
- process.stderr.write(`Saved ${OUT_ZCL_PATH}. Branch=${BRANCH}\n`);
60
-
61
- // Also fetch manufacturers.xml to chip/manufacturers.xml from the same branch
62
- try {
63
- const manuContent = await fetchUrl(MANUFACTURERS_URL);
64
- await writeFile(OUT_MANUFACTURERS_PATH, manuContent);
65
- process.stderr.write(`Saved ${OUT_MANUFACTURERS_PATH}. Branch=${BRANCH}\n`);
66
- } catch (e) {
67
- process.stderr.write(`Warning: failed to fetch manufacturers.xml (${e.message}).\n`);
68
- }
69
-
70
- // Always fetch XMLs referenced by zcl.json from the same branch under data-model/chip
71
- const xmlFiles = Array.isArray(parsed.xmlFile) ? parsed.xmlFile : [];
72
- if (xmlFiles.length === 0) {
73
- process.stderr.write('No xmlFile entries found; skipping XML fetch.\n');
74
- } else {
75
- const outXmlBase = `chip/${BRANCH}/xml`;
76
- await mkdir(outXmlBase, { recursive: true });
77
- let ok = 0;
78
- let fail = 0;
79
- for (const fileName of xmlFiles) {
80
- const relative = fileName.trim();
81
- try {
82
- const url = XML_BASE_URL + relative;
83
- const content = await fetchUrl(url);
84
- const outPath = pathJoin(outXmlBase, relative.replaceAll('/', pathSep));
85
- await mkdir(dirname(outPath), { recursive: true });
86
- await writeFile(outPath, content);
87
- ok++;
88
- } catch (e) {
89
- fail++;
90
- process.stderr.write(`Failed XML: ${relative} (${e.message})\n`);
91
- }
92
- }
93
- process.stderr.write(`Fetched XML files: ${ok} ok, ${fail} failed. Output under ${outXmlBase}. Branch=${BRANCH}\n`);
94
- }
95
- // Ensure success exit unless an unhandled error occurred
96
- process.exit(0);
97
- }
98
-
99
- main().catch((err) => {
100
- process.stderr.write(`Error: ${err.message}\n`);
101
- process.exitCode = 1;
102
- });
@@ -1,133 +0,0 @@
1
- /* eslint-disable no-console */
2
- import { readFile, writeFile } from 'node:fs/promises';
3
- import { join } from 'node:path';
4
- import { fileURLToPath } from 'node:url';
5
-
6
- import { Marked, TextRenderer } from 'marked';
7
-
8
- const ROOT_DIR = fileURLToPath(new URL('.', import.meta.url));
9
- const MD_DIR = join(ROOT_DIR, '..');
10
- console.log(`Generating marked HTML files from ${MD_DIR}`);
11
- const DOCS_DIR = join(ROOT_DIR, '..', 'docs');
12
- console.log(`Generating marked HTML files in ${DOCS_DIR}`);
13
- const HEADER_PATH = join(ROOT_DIR, 'markedHeader.html');
14
- const FOOTER_PATH = join(ROOT_DIR, 'markedFooter.html');
15
-
16
- const HEADING_FALLBACK_PREFIX = 'heading';
17
-
18
- const slugifyHeading = (text) => {
19
- const normalized = text
20
- .normalize('NFKD')
21
- .replace(/[\u0300-\u036f]/gu, '')
22
- .toLowerCase();
23
-
24
- return normalized
25
- .replace(/[^a-z0-9\s-]/g, '')
26
- .trim()
27
- .replace(/[\s_-]+/g, '-')
28
- .replace(/^-+|-+$/g, '');
29
- };
30
-
31
- const createSlugGenerator = () => {
32
- const counts = new Map();
33
-
34
- return (rawText) => {
35
- const base = slugifyHeading(rawText) || HEADING_FALLBACK_PREFIX;
36
- const usage = counts.get(base) ?? 0;
37
- counts.set(base, usage + 1);
38
- return usage > 0 ? `${base}-${usage}` : base;
39
- };
40
- };
41
-
42
- const createMarkdownParser = () => {
43
- const textRenderer = new TextRenderer();
44
- const nextSlug = createSlugGenerator();
45
-
46
- return new Marked({
47
- gfm: true,
48
- mangle: false,
49
- renderer: {
50
- heading(token) {
51
- const inlineHtml = this.parser.parseInline(token.tokens);
52
- const plainText = this.parser.parseInline(token.tokens, textRenderer).trim();
53
- const slug = nextSlug(plainText);
54
- return `<h${token.depth} id="${slug}">${inlineHtml}</h${token.depth}>\n`;
55
- },
56
- },
57
- });
58
- };
59
-
60
- // Replicates marked.ps1 targets for cross-platform doc generation.
61
- const FILES_TO_RENDER = [
62
- { source: 'README-DEV.md', target: 'README-DEV.html' },
63
- { source: 'README-DOCKER.md', target: 'README-DOCKER.html' },
64
- { source: 'README-MACOS-PLIST.md', target: 'README-MACOS-PLIST.html' },
65
- { source: 'README-NGINX.md', target: 'README-NGINX.html' },
66
- { source: 'README-PODMAN.md', target: 'README-PODMAN.html' },
67
- { source: 'README-SERVICE-LOCAL.md', target: 'README-SERVICE-LOCAL.html' },
68
- { source: 'README-SERVICE-OPT.md', target: 'README-SERVICE-OPT.html' },
69
- { source: 'README-SERVICE.md', target: 'README-SERVICE.html' },
70
- { source: 'README.md', target: 'README.html' },
71
- { source: 'CHANGELOG.md', target: 'CHANGELOG.html' },
72
- { source: 'docker-reflector/Docker reflector.md', target: 'docker-reflector/Docker reflector.html' },
73
- ];
74
-
75
- /**
76
- * Render configured markdown documents with the shared header and footer.
77
- *
78
- * @param {string} header HTML header template.
79
- * @param {string} footer HTML footer template.
80
- * @returns {Promise<void>} Resolves once all files are written.
81
- */
82
- async function renderMarkdownFiles(header, footer) {
83
- for (const { source, target } of FILES_TO_RENDER) {
84
- const markdownPath = join(MD_DIR, source);
85
- const targetPath = join(DOCS_DIR, target);
86
- const markdown = await readFile(markdownPath, 'utf8');
87
- const parser = createMarkdownParser();
88
- const body = await parser.parse(markdown);
89
-
90
- await writeFile(targetPath, `${header}${body}${footer}`, 'utf8');
91
- console.log(`Rendered ${source} to ${target}`);
92
- }
93
- }
94
-
95
- /**
96
- * Apply post-processing replacements to generated HTML files.
97
- *
98
- * @param {string[]} htmlFiles HTML files to update.
99
- * @returns {Promise<void>} Resolves when replacements are applied.
100
- */
101
- async function applyReplacements(htmlFiles) {
102
- for (const filePath of htmlFiles) {
103
- const originalContent = await readFile(filePath, 'utf8');
104
- let updatedContent = originalContent.replace(/\.md/g, '.html');
105
- updatedContent = updatedContent.replace(/→/g, '->');
106
- updatedContent = updatedContent.replace(/✅/g, '&#x2714;');
107
-
108
- if (updatedContent !== originalContent) {
109
- await writeFile(filePath, updatedContent, 'utf8');
110
- }
111
- }
112
- }
113
-
114
- /**
115
- * Build HTML documentation mirroring the original PowerShell workflow.
116
- *
117
- * @returns {Promise<void>} Resolves on success.
118
- */
119
- async function main() {
120
- const header = await readFile(HEADER_PATH, 'utf8');
121
- const footer = await readFile(FOOTER_PATH, 'utf8');
122
-
123
- await renderMarkdownFiles(header, footer);
124
-
125
- const htmlFiles = FILES_TO_RENDER.map(({ target }) => join(DOCS_DIR, target));
126
- await applyReplacements(htmlFiles);
127
- }
128
-
129
- main().catch((error) => {
130
- const message = error instanceof Error ? (error.stack ?? error.message) : String(error);
131
- process.stderr.write(`Failed to generate marked HTML files: ${message}\n`);
132
- process.exitCode = 1;
133
- });
@@ -1,42 +0,0 @@
1
- <script>
2
- const copyIcon = '<svg viewBox="0 0 16 16" aria-hidden="true" focusable="false"><path d="M11 1H3c-.6 0-1 .4-1 1v10h2V3h7V1zm2 3H6c-.6 0-1 .4-1 1v10c0 .6.4 1 1 1h7c.6 0 1-.4 1-1V5c0-.6-.4-1-1-1zm-1 10H7V6h5v8z"></path></svg>';
3
- const successIcon = '<svg viewBox="0 0 16 16" aria-hidden="true" focusable="false"><path d="M6.5 10.7L4.3 8.5 3 9.8l3.5 3.5 6.5-6.5-1.3-1.3z"></path></svg>';
4
-
5
- document.querySelectorAll('pre').forEach(block => {
6
- const button = document.createElement('button');
7
- button.type = 'button';
8
- button.className = 'copy-btn';
9
- button.setAttribute('aria-label', 'Copy code snippet');
10
- button.innerHTML = copyIcon;
11
-
12
- let resetTimer;
13
- button.addEventListener('click', async () => {
14
- const code = block.querySelector('code')?.innerText ?? '';
15
- try {
16
- await navigator.clipboard.writeText(code);
17
- } catch {
18
- const textarea = document.createElement('textarea');
19
- textarea.value = code;
20
- textarea.style.position = 'fixed';
21
- textarea.style.opacity = '0';
22
- document.body.appendChild(textarea);
23
- textarea.focus();
24
- textarea.select();
25
- document.execCommand('copy');
26
- textarea.remove();
27
- }
28
-
29
- clearTimeout(resetTimer);
30
- button.innerHTML = successIcon;
31
- button.classList.add('copied');
32
- resetTimer = setTimeout(() => {
33
- button.innerHTML = copyIcon;
34
- button.classList.remove('copied');
35
- }, 2000);
36
- });
37
-
38
- block.appendChild(button);
39
- });
40
- </script>
41
- </body>
42
- </html>
@@ -1,78 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta charset="UTF-8">
5
- <title>Matterbridge</title>
6
- <link rel="icon" type="image/svg+xml" href="matterbridge.svg">
7
- <style>
8
- body {
9
- font-family: Roboto, Arial, 'Helvetica Neue', sans-serif;
10
- line-height: 1.6;
11
- margin: 40px;
12
- }
13
- h1, h2, h3 {
14
- font-family: 'Roboto Slab', Roboto, Arial, 'Helvetica Neue', sans-serif;
15
- color: #263238;
16
- scroll-margin-top: 90px;
17
- margin-top: 2.5rem;
18
- margin-bottom: 1rem;
19
- }
20
- h1 {
21
- font-size: 2.4rem;
22
- font-weight: 700;
23
- letter-spacing: -0.01em;
24
- position: relative;
25
- padding-bottom: 1.1rem;
26
- }
27
- h2 {
28
- font-size: 1.8rem;
29
- font-weight: 600;
30
- border-bottom: 2px solid #e0e0e0;
31
- padding-bottom: 0.35rem;
32
- color: #41535b;
33
- }
34
- h3 {
35
- font-size: 1.10rem;
36
- font-weight: 600;
37
- text-transform: uppercase;
38
- letter-spacing: 0.06em;
39
- color: #455a64;
40
- }
41
- pre {
42
- background: #e4e7ec;
43
- color: #000000;
44
- padding: 10px 56px 10px 10px;
45
- border-radius: 0.5rem;
46
- font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
47
- font-size: 0.875rem;
48
- margin: 10px 20px 10px 0px;
49
- position: relative;
50
- }
51
- .copy-btn {
52
- display: flex;
53
- align-items: center;
54
- justify-content: center;
55
- width: 24px;
56
- height: 24px;
57
- padding: 0;
58
- cursor: pointer;
59
- border: none;
60
- border-radius: 4px;
61
- background: #eee;
62
- color: #333;
63
- position: absolute;
64
- top: 8px;
65
- right: 8px;
66
- transition: color 0.2s ease;
67
- }
68
- .copy-btn svg {
69
- width: 16px;
70
- height: 16px;
71
- fill: currentColor;
72
- }
73
- .copy-btn.copied {
74
- color: #1b5e20;
75
- }
76
- </style>
77
- </head>
78
- <body>