matterbridge 3.3.7 → 3.3.8-dev-20251114-9b65e59

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 (308) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README-SERVICE-OPT.md +4 -4
  3. package/README.md +4 -0
  4. package/dist/broadcastServer.js +1 -93
  5. package/dist/broadcastServerTypes.js +0 -24
  6. package/dist/cli.js +1 -97
  7. package/dist/cliEmitter.js +0 -37
  8. package/dist/cliHistory.js +0 -38
  9. package/dist/clusters/export.js +0 -2
  10. package/dist/defaultConfigSchema.js +0 -24
  11. package/dist/deviceManager.js +1 -105
  12. package/dist/devices/airConditioner.js +1 -58
  13. package/dist/devices/batteryStorage.js +2 -49
  14. package/dist/devices/cooktop.js +1 -56
  15. package/dist/devices/dishwasher.js +1 -58
  16. package/dist/devices/evse.js +11 -75
  17. package/dist/devices/export.js +0 -5
  18. package/dist/devices/extractorHood.js +1 -43
  19. package/dist/devices/heatPump.js +3 -51
  20. package/dist/devices/laundryDryer.js +4 -63
  21. package/dist/devices/laundryWasher.js +5 -71
  22. package/dist/devices/microwaveOven.js +6 -89
  23. package/dist/devices/oven.js +1 -86
  24. package/dist/devices/refrigerator.js +2 -104
  25. package/dist/devices/roboticVacuumCleaner.js +10 -101
  26. package/dist/devices/solarPower.js +1 -39
  27. package/dist/devices/speaker.js +1 -85
  28. package/dist/devices/temperatureControl.js +3 -24
  29. package/dist/devices/waterHeater.js +3 -83
  30. package/dist/dgram/coap.js +13 -126
  31. package/dist/dgram/dgram.js +2 -114
  32. package/dist/dgram/mb_coap.js +3 -41
  33. package/dist/dgram/mb_mdns.js +15 -80
  34. package/dist/dgram/mdns.js +137 -299
  35. package/dist/dgram/multicast.js +1 -62
  36. package/dist/dgram/unicast.js +0 -54
  37. package/dist/frontend.js +40 -452
  38. package/dist/frontendTypes.js +0 -45
  39. package/dist/helpers.js +0 -53
  40. package/dist/index.js +1 -25
  41. package/dist/jestutils/export.js +1 -0
  42. package/dist/{utils → jestutils}/jestHelpers.js +167 -175
  43. package/dist/logger/export.js +0 -1
  44. package/dist/matter/behaviors.js +0 -2
  45. package/dist/matter/clusters.js +0 -2
  46. package/dist/matter/devices.js +0 -2
  47. package/dist/matter/endpoints.js +0 -2
  48. package/dist/matter/export.js +0 -3
  49. package/dist/matter/types.js +0 -3
  50. package/dist/matterbridge.js +50 -838
  51. package/dist/matterbridgeAccessoryPlatform.js +0 -37
  52. package/dist/matterbridgeBehaviors.js +5 -68
  53. package/dist/matterbridgeDeviceTypes.js +27 -653
  54. package/dist/matterbridgeDynamicPlatform.js +0 -37
  55. package/dist/matterbridgeEndpoint.js +73 -1429
  56. package/dist/matterbridgeEndpointHelpers.js +42 -475
  57. package/dist/matterbridgeEndpointTypes.js +3 -0
  58. package/dist/matterbridgePlatform.js +18 -341
  59. package/dist/matterbridgeTypes.js +0 -26
  60. package/dist/pluginManager.js +5 -340
  61. package/dist/shelly.js +7 -168
  62. package/dist/storage/export.js +0 -1
  63. package/dist/update.js +0 -69
  64. package/dist/utils/colorUtils.js +2 -97
  65. package/dist/utils/commandLine.js +0 -60
  66. package/dist/utils/copyDirectory.js +1 -38
  67. package/dist/utils/createDirectory.js +0 -33
  68. package/dist/utils/createZip.js +2 -47
  69. package/dist/utils/deepCopy.js +0 -39
  70. package/dist/utils/deepEqual.js +1 -72
  71. package/dist/utils/error.js +2 -43
  72. package/dist/utils/export.js +0 -1
  73. package/dist/utils/format.js +0 -49
  74. package/dist/utils/hex.js +0 -124
  75. package/dist/utils/inspector.js +1 -69
  76. package/dist/utils/isvalid.js +0 -101
  77. package/dist/utils/network.js +5 -96
  78. package/dist/utils/spawn.js +0 -71
  79. package/dist/utils/tracker.js +1 -64
  80. package/dist/utils/wait.js +8 -60
  81. package/npm-shrinkwrap.json +8 -8
  82. package/package.json +5 -2
  83. package/scripts/fetch-chip.mjs +100 -0
  84. package/dist/broadcastServer.d.ts +0 -115
  85. package/dist/broadcastServer.d.ts.map +0 -1
  86. package/dist/broadcastServer.js.map +0 -1
  87. package/dist/broadcastServerTypes.d.ts +0 -806
  88. package/dist/broadcastServerTypes.d.ts.map +0 -1
  89. package/dist/broadcastServerTypes.js.map +0 -1
  90. package/dist/cli.d.ts +0 -30
  91. package/dist/cli.d.ts.map +0 -1
  92. package/dist/cli.js.map +0 -1
  93. package/dist/cliEmitter.d.ts +0 -50
  94. package/dist/cliEmitter.d.ts.map +0 -1
  95. package/dist/cliEmitter.js.map +0 -1
  96. package/dist/cliHistory.d.ts +0 -48
  97. package/dist/cliHistory.d.ts.map +0 -1
  98. package/dist/cliHistory.js.map +0 -1
  99. package/dist/clusters/export.d.ts +0 -2
  100. package/dist/clusters/export.d.ts.map +0 -1
  101. package/dist/clusters/export.js.map +0 -1
  102. package/dist/defaultConfigSchema.d.ts +0 -28
  103. package/dist/defaultConfigSchema.d.ts.map +0 -1
  104. package/dist/defaultConfigSchema.js.map +0 -1
  105. package/dist/deviceManager.d.ts +0 -128
  106. package/dist/deviceManager.d.ts.map +0 -1
  107. package/dist/deviceManager.js.map +0 -1
  108. package/dist/devices/airConditioner.d.ts +0 -98
  109. package/dist/devices/airConditioner.d.ts.map +0 -1
  110. package/dist/devices/airConditioner.js.map +0 -1
  111. package/dist/devices/batteryStorage.d.ts +0 -48
  112. package/dist/devices/batteryStorage.d.ts.map +0 -1
  113. package/dist/devices/batteryStorage.js.map +0 -1
  114. package/dist/devices/cooktop.d.ts +0 -60
  115. package/dist/devices/cooktop.d.ts.map +0 -1
  116. package/dist/devices/cooktop.js.map +0 -1
  117. package/dist/devices/dishwasher.d.ts +0 -71
  118. package/dist/devices/dishwasher.d.ts.map +0 -1
  119. package/dist/devices/dishwasher.js.map +0 -1
  120. package/dist/devices/evse.d.ts +0 -76
  121. package/dist/devices/evse.d.ts.map +0 -1
  122. package/dist/devices/evse.js.map +0 -1
  123. package/dist/devices/export.d.ts +0 -17
  124. package/dist/devices/export.d.ts.map +0 -1
  125. package/dist/devices/export.js.map +0 -1
  126. package/dist/devices/extractorHood.d.ts +0 -46
  127. package/dist/devices/extractorHood.d.ts.map +0 -1
  128. package/dist/devices/extractorHood.js.map +0 -1
  129. package/dist/devices/heatPump.d.ts +0 -47
  130. package/dist/devices/heatPump.d.ts.map +0 -1
  131. package/dist/devices/heatPump.js.map +0 -1
  132. package/dist/devices/laundryDryer.d.ts +0 -67
  133. package/dist/devices/laundryDryer.d.ts.map +0 -1
  134. package/dist/devices/laundryDryer.js.map +0 -1
  135. package/dist/devices/laundryWasher.d.ts +0 -81
  136. package/dist/devices/laundryWasher.d.ts.map +0 -1
  137. package/dist/devices/laundryWasher.js.map +0 -1
  138. package/dist/devices/microwaveOven.d.ts +0 -168
  139. package/dist/devices/microwaveOven.d.ts.map +0 -1
  140. package/dist/devices/microwaveOven.js.map +0 -1
  141. package/dist/devices/oven.d.ts +0 -105
  142. package/dist/devices/oven.d.ts.map +0 -1
  143. package/dist/devices/oven.js.map +0 -1
  144. package/dist/devices/refrigerator.d.ts +0 -118
  145. package/dist/devices/refrigerator.d.ts.map +0 -1
  146. package/dist/devices/refrigerator.js.map +0 -1
  147. package/dist/devices/roboticVacuumCleaner.d.ts +0 -112
  148. package/dist/devices/roboticVacuumCleaner.d.ts.map +0 -1
  149. package/dist/devices/roboticVacuumCleaner.js.map +0 -1
  150. package/dist/devices/solarPower.d.ts +0 -40
  151. package/dist/devices/solarPower.d.ts.map +0 -1
  152. package/dist/devices/solarPower.js.map +0 -1
  153. package/dist/devices/speaker.d.ts +0 -87
  154. package/dist/devices/speaker.d.ts.map +0 -1
  155. package/dist/devices/speaker.js.map +0 -1
  156. package/dist/devices/temperatureControl.d.ts +0 -166
  157. package/dist/devices/temperatureControl.d.ts.map +0 -1
  158. package/dist/devices/temperatureControl.js.map +0 -1
  159. package/dist/devices/waterHeater.d.ts +0 -111
  160. package/dist/devices/waterHeater.d.ts.map +0 -1
  161. package/dist/devices/waterHeater.js.map +0 -1
  162. package/dist/dgram/coap.d.ts +0 -205
  163. package/dist/dgram/coap.d.ts.map +0 -1
  164. package/dist/dgram/coap.js.map +0 -1
  165. package/dist/dgram/dgram.d.ts +0 -141
  166. package/dist/dgram/dgram.d.ts.map +0 -1
  167. package/dist/dgram/dgram.js.map +0 -1
  168. package/dist/dgram/mb_coap.d.ts +0 -24
  169. package/dist/dgram/mb_coap.d.ts.map +0 -1
  170. package/dist/dgram/mb_coap.js.map +0 -1
  171. package/dist/dgram/mb_mdns.d.ts +0 -24
  172. package/dist/dgram/mb_mdns.d.ts.map +0 -1
  173. package/dist/dgram/mb_mdns.js.map +0 -1
  174. package/dist/dgram/mdns.d.ts +0 -290
  175. package/dist/dgram/mdns.d.ts.map +0 -1
  176. package/dist/dgram/mdns.js.map +0 -1
  177. package/dist/dgram/multicast.d.ts +0 -67
  178. package/dist/dgram/multicast.d.ts.map +0 -1
  179. package/dist/dgram/multicast.js.map +0 -1
  180. package/dist/dgram/unicast.d.ts +0 -56
  181. package/dist/dgram/unicast.d.ts.map +0 -1
  182. package/dist/dgram/unicast.js.map +0 -1
  183. package/dist/frontend.d.ts +0 -238
  184. package/dist/frontend.d.ts.map +0 -1
  185. package/dist/frontend.js.map +0 -1
  186. package/dist/frontendTypes.d.ts +0 -529
  187. package/dist/frontendTypes.d.ts.map +0 -1
  188. package/dist/frontendTypes.js.map +0 -1
  189. package/dist/helpers.d.ts +0 -48
  190. package/dist/helpers.d.ts.map +0 -1
  191. package/dist/helpers.js.map +0 -1
  192. package/dist/index.d.ts +0 -33
  193. package/dist/index.d.ts.map +0 -1
  194. package/dist/index.js.map +0 -1
  195. package/dist/logger/export.d.ts +0 -2
  196. package/dist/logger/export.d.ts.map +0 -1
  197. package/dist/logger/export.js.map +0 -1
  198. package/dist/matter/behaviors.d.ts +0 -2
  199. package/dist/matter/behaviors.d.ts.map +0 -1
  200. package/dist/matter/behaviors.js.map +0 -1
  201. package/dist/matter/clusters.d.ts +0 -2
  202. package/dist/matter/clusters.d.ts.map +0 -1
  203. package/dist/matter/clusters.js.map +0 -1
  204. package/dist/matter/devices.d.ts +0 -2
  205. package/dist/matter/devices.d.ts.map +0 -1
  206. package/dist/matter/devices.js.map +0 -1
  207. package/dist/matter/endpoints.d.ts +0 -2
  208. package/dist/matter/endpoints.d.ts.map +0 -1
  209. package/dist/matter/endpoints.js.map +0 -1
  210. package/dist/matter/export.d.ts +0 -5
  211. package/dist/matter/export.d.ts.map +0 -1
  212. package/dist/matter/export.js.map +0 -1
  213. package/dist/matter/types.d.ts +0 -3
  214. package/dist/matter/types.d.ts.map +0 -1
  215. package/dist/matter/types.js.map +0 -1
  216. package/dist/matterbridge.d.ts +0 -478
  217. package/dist/matterbridge.d.ts.map +0 -1
  218. package/dist/matterbridge.js.map +0 -1
  219. package/dist/matterbridgeAccessoryPlatform.d.ts +0 -42
  220. package/dist/matterbridgeAccessoryPlatform.d.ts.map +0 -1
  221. package/dist/matterbridgeAccessoryPlatform.js.map +0 -1
  222. package/dist/matterbridgeBehaviors.d.ts +0 -2404
  223. package/dist/matterbridgeBehaviors.d.ts.map +0 -1
  224. package/dist/matterbridgeBehaviors.js.map +0 -1
  225. package/dist/matterbridgeDeviceTypes.d.ts +0 -770
  226. package/dist/matterbridgeDeviceTypes.d.ts.map +0 -1
  227. package/dist/matterbridgeDeviceTypes.js.map +0 -1
  228. package/dist/matterbridgeDynamicPlatform.d.ts +0 -42
  229. package/dist/matterbridgeDynamicPlatform.d.ts.map +0 -1
  230. package/dist/matterbridgeDynamicPlatform.js.map +0 -1
  231. package/dist/matterbridgeEndpoint.d.ts +0 -1556
  232. package/dist/matterbridgeEndpoint.d.ts.map +0 -1
  233. package/dist/matterbridgeEndpoint.js.map +0 -1
  234. package/dist/matterbridgeEndpointHelpers.d.ts +0 -758
  235. package/dist/matterbridgeEndpointHelpers.d.ts.map +0 -1
  236. package/dist/matterbridgeEndpointHelpers.js.map +0 -1
  237. package/dist/matterbridgePlatform.d.ts +0 -402
  238. package/dist/matterbridgePlatform.d.ts.map +0 -1
  239. package/dist/matterbridgePlatform.js.map +0 -1
  240. package/dist/matterbridgeTypes.d.ts +0 -239
  241. package/dist/matterbridgeTypes.d.ts.map +0 -1
  242. package/dist/matterbridgeTypes.js.map +0 -1
  243. package/dist/pluginManager.d.ts +0 -371
  244. package/dist/pluginManager.d.ts.map +0 -1
  245. package/dist/pluginManager.js.map +0 -1
  246. package/dist/shelly.d.ts +0 -174
  247. package/dist/shelly.d.ts.map +0 -1
  248. package/dist/shelly.js.map +0 -1
  249. package/dist/storage/export.d.ts +0 -2
  250. package/dist/storage/export.d.ts.map +0 -1
  251. package/dist/storage/export.js.map +0 -1
  252. package/dist/update.d.ts +0 -75
  253. package/dist/update.d.ts.map +0 -1
  254. package/dist/update.js.map +0 -1
  255. package/dist/utils/colorUtils.d.ts +0 -101
  256. package/dist/utils/colorUtils.d.ts.map +0 -1
  257. package/dist/utils/colorUtils.js.map +0 -1
  258. package/dist/utils/commandLine.d.ts +0 -66
  259. package/dist/utils/commandLine.d.ts.map +0 -1
  260. package/dist/utils/commandLine.js.map +0 -1
  261. package/dist/utils/copyDirectory.d.ts +0 -33
  262. package/dist/utils/copyDirectory.d.ts.map +0 -1
  263. package/dist/utils/copyDirectory.js.map +0 -1
  264. package/dist/utils/createDirectory.d.ts +0 -34
  265. package/dist/utils/createDirectory.d.ts.map +0 -1
  266. package/dist/utils/createDirectory.js.map +0 -1
  267. package/dist/utils/createZip.d.ts +0 -39
  268. package/dist/utils/createZip.d.ts.map +0 -1
  269. package/dist/utils/createZip.js.map +0 -1
  270. package/dist/utils/deepCopy.d.ts +0 -32
  271. package/dist/utils/deepCopy.d.ts.map +0 -1
  272. package/dist/utils/deepCopy.js.map +0 -1
  273. package/dist/utils/deepEqual.d.ts +0 -54
  274. package/dist/utils/deepEqual.d.ts.map +0 -1
  275. package/dist/utils/deepEqual.js.map +0 -1
  276. package/dist/utils/error.d.ts +0 -44
  277. package/dist/utils/error.d.ts.map +0 -1
  278. package/dist/utils/error.js.map +0 -1
  279. package/dist/utils/export.d.ts +0 -13
  280. package/dist/utils/export.d.ts.map +0 -1
  281. package/dist/utils/export.js.map +0 -1
  282. package/dist/utils/format.d.ts +0 -53
  283. package/dist/utils/format.d.ts.map +0 -1
  284. package/dist/utils/format.js.map +0 -1
  285. package/dist/utils/hex.d.ts +0 -89
  286. package/dist/utils/hex.d.ts.map +0 -1
  287. package/dist/utils/hex.js.map +0 -1
  288. package/dist/utils/inspector.d.ts +0 -87
  289. package/dist/utils/inspector.d.ts.map +0 -1
  290. package/dist/utils/inspector.js.map +0 -1
  291. package/dist/utils/isvalid.d.ts +0 -103
  292. package/dist/utils/isvalid.d.ts.map +0 -1
  293. package/dist/utils/isvalid.js.map +0 -1
  294. package/dist/utils/jestHelpers.d.ts +0 -139
  295. package/dist/utils/jestHelpers.d.ts.map +0 -1
  296. package/dist/utils/jestHelpers.js.map +0 -1
  297. package/dist/utils/network.d.ts +0 -101
  298. package/dist/utils/network.d.ts.map +0 -1
  299. package/dist/utils/network.js.map +0 -1
  300. package/dist/utils/spawn.d.ts +0 -35
  301. package/dist/utils/spawn.d.ts.map +0 -1
  302. package/dist/utils/spawn.js.map +0 -1
  303. package/dist/utils/tracker.d.ts +0 -108
  304. package/dist/utils/tracker.d.ts.map +0 -1
  305. package/dist/utils/tracker.js.map +0 -1
  306. package/dist/utils/wait.d.ts +0 -54
  307. package/dist/utils/wait.d.ts.map +0 -1
  308. package/dist/utils/wait.js.map +0 -1
@@ -0,0 +1,100 @@
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
+ const OUT_PATH = process.env.ZCL_OUT || 'chip/zcl.json';
15
+ // Single branch strategy from online only
16
+ const BRANCH = process.env.ZCL_BRANCH || 'v1.4-branch';
17
+ const ZCL_BASE = `https://raw.githubusercontent.com/project-chip/connectedhomeip/${BRANCH}/src/app/zap-templates/zcl/`;
18
+ const ZCL_JSON_URL = ZCL_BASE + 'zcl.json';
19
+ const XML_BASE = ZCL_BASE + 'data-model/chip/';
20
+ const MANUFACTURERS_URL = ZCL_BASE + 'data-model/manufacturers.xml';
21
+
22
+ function fetchUrl(url) {
23
+ return new Promise((resolve, reject) => {
24
+ https.get(url, (res) => {
25
+ if (res.statusCode && res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) {
26
+ // Follow redirect
27
+ return resolve(fetchUrl(res.headers.location));
28
+ }
29
+ if (res.statusCode !== 200) {
30
+ return reject(new Error(`Failed to fetch ${url}: ${res.statusCode}`));
31
+ }
32
+ const chunks = [];
33
+ res.on('data', (c) => chunks.push(c));
34
+ res.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
35
+ }).on('error', reject);
36
+ });
37
+ }
38
+
39
+ async function main() {
40
+ await mkdir(dirname(OUT_PATH), { recursive: true });
41
+ // Always fetch online from the specified branch
42
+ const data = await fetchUrl(ZCL_JSON_URL);
43
+
44
+ // Structural sanity check: this is a ZAP ZCL properties file, expected to include xml roots and files
45
+ let parsed;
46
+ try {
47
+ parsed = JSON.parse(data);
48
+ } catch (e) {
49
+ throw new Error(`Downloaded content is not valid JSON: ${e.message}`);
50
+ }
51
+ if (!parsed || typeof parsed !== 'object' || !Array.isArray(parsed.xmlFile)) {
52
+ process.stderr.write('Warning: zcl.json does not contain expected ZAP ZCL properties (xmlFile). Saving anyway for manual inspection.\n');
53
+ }
54
+
55
+ await writeFile(OUT_PATH, JSON.stringify(parsed, null, 2));
56
+ process.stderr.write(`Saved ${OUT_PATH}.\n`);
57
+
58
+ // Also fetch manufacturers.xml to chip/manufacturers.xml from the same branch
59
+ try {
60
+ const outManu = 'chip/manufacturers.xml';
61
+ const manuContent = await fetchUrl(MANUFACTURERS_URL);
62
+ await writeFile(outManu, manuContent);
63
+ process.stderr.write('Saved chip/manufacturers.xml.\n');
64
+ } catch (e) {
65
+ process.stderr.write(`Warning: failed to fetch manufacturers.xml (${e.message}).\n`);
66
+ }
67
+
68
+ // Always fetch XMLs referenced by zcl.json from the same branch under data-model/chip
69
+ const xmlFiles = Array.isArray(parsed.xmlFile) ? parsed.xmlFile : [];
70
+ if (xmlFiles.length === 0) {
71
+ process.stderr.write('No xmlFile entries found; skipping XML fetch.\n');
72
+ } else {
73
+ const outXmlBase = 'chip/xml';
74
+ await mkdir(outXmlBase, { recursive: true });
75
+ let ok = 0;
76
+ let fail = 0;
77
+ for (const fileName of xmlFiles) {
78
+ const relative = fileName.trim();
79
+ try {
80
+ const url = XML_BASE + relative;
81
+ const content = await fetchUrl(url);
82
+ const outPath = pathJoin(outXmlBase, relative.replaceAll('/', pathSep));
83
+ await mkdir(dirname(outPath), { recursive: true });
84
+ await writeFile(outPath, content);
85
+ ok++;
86
+ } catch (e) {
87
+ fail++;
88
+ process.stderr.write(`Failed XML: ${relative} (${e.message})\n`);
89
+ }
90
+ }
91
+ process.stderr.write(`Fetched XML files: ${ok} ok, ${fail} failed. Output under ${outXmlBase}. Branch=${BRANCH}\n`);
92
+ }
93
+ // Ensure success exit unless an unhandled error occurred
94
+ process.exit(0);
95
+ }
96
+
97
+ main().catch((err) => {
98
+ process.stderr.write(`Error: ${err.message}\n`);
99
+ process.exitCode = 1;
100
+ });
@@ -1,115 +0,0 @@
1
- /**
2
- * This file contains the BroadcastServer class.
3
- *
4
- * @file broadcastServer.ts
5
- * @author Luca Liguori
6
- * @created 2025-10-05
7
- * @version 1.0.2
8
- * @license Apache-2.0
9
- *
10
- * Copyright 2024, 2025, 2026 Luca Liguori.
11
- *
12
- * Licensed under the Apache License, Version 2.0 (the "License");
13
- * you may not use this file except in compliance with the License.
14
- * You may obtain a copy of the License at
15
- *
16
- * http://www.apache.org/licenses/LICENSE-2.0
17
- *
18
- * Unless required by applicable law or agreed to in writing, software
19
- * distributed under the License is distributed on an "AS IS" BASIS,
20
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
- * See the License for the specific language governing permissions and
22
- * limitations under the License.
23
- */
24
- import { EventEmitter } from 'node:events';
25
- import { type AnsiLogger } from 'node-ansi-logger';
26
- import type { WorkerMessage, WorkerMessageType, WorkerRequest, WorkerResponse, WorkerSrcType } from './broadcastServerTypes.js';
27
- interface BroadcastServerEvents {
28
- 'broadcast_message': [msg: WorkerMessage];
29
- }
30
- /**
31
- * BroadcastServer class to handle broadcast messages between workers with BroadcastChannel.
32
- */
33
- export declare class BroadcastServer extends EventEmitter<BroadcastServerEvents> {
34
- readonly name: WorkerSrcType;
35
- private readonly log;
36
- private readonly channel;
37
- private readonly broadcastChannel;
38
- private readonly debug;
39
- private readonly verbose;
40
- /**
41
- * Creates an instance of BroadcastServer.
42
- *
43
- * @param {string} name - The name of the broadcast server.
44
- * @param {AnsiLogger} log - The logger instance to use for logging.
45
- * @param {string} channel - The channel name for the broadcast. Default is 'broadcast-channel'.
46
- */
47
- constructor(name: WorkerSrcType, log: AnsiLogger, channel?: string);
48
- /**
49
- * Closes the broadcast channel.
50
- *
51
- * @returns {void}
52
- */
53
- close(): void;
54
- /**
55
- * Generates a unique ID with range 100000-999999.
56
- *
57
- * @returns {number} - A unique ID between 100000 and 999999
58
- */
59
- getUniqueId(): number;
60
- /**
61
- * Type guard to check if a message is a request of a specific type.
62
- *
63
- * @param {unknown} msg - The message to check.
64
- * @param {T} type - The type to check against.
65
- * @returns {msg is WorkerRequest<T>} True if the message is a request of the specified type.
66
- */
67
- isWorkerRequest<T extends WorkerMessageType>(msg: unknown, type: T): msg is WorkerRequest<T>;
68
- /**
69
- * Type guard to check if a message is a response of a specific type.
70
- *
71
- * @param {unknown} msg - The message to check.
72
- * @param {T} type - The type to check against.
73
- * @returns {msg is WorkerResponse<T>} True if the message is a response of the specified type.
74
- */
75
- isWorkerResponse<T extends WorkerMessageType>(msg: unknown, type: T): msg is WorkerResponse<T>;
76
- /**
77
- * Handles incoming broadcast messages.
78
- *
79
- * @param {MessageEvent} event - The message event containing the broadcast message.
80
- * @returns {void}
81
- */
82
- private broadcastMessageHandler;
83
- /**
84
- * Broadcast a message to all workers.
85
- *
86
- * @param {WorkerMessage} message - The message to broadcast.
87
- */
88
- broadcast(message: WorkerMessage): void;
89
- /**
90
- * Broadcast a request message to all workers.
91
- *
92
- * @param {WorkerRequest<T>} message - The typed request message to broadcast.
93
- * @returns {void}
94
- */
95
- request<M extends WorkerRequest<WorkerMessageType>>(message: M): void;
96
- /**
97
- * Broadcast a response message to all workers.
98
- *
99
- * @param {WorkerResponse<T>} message - The typed response message to broadcast.
100
- * @returns {void}
101
- */
102
- respond<M extends WorkerResponse<WorkerMessageType>>(message: M): void;
103
- /**
104
- * Fetch data from a worker.
105
- * It broadcasts a request message and waits for a response with the same id.
106
- *
107
- * @param {WorkerRequest<T>} message - The typed request message to broadcast.
108
- * @param {number} timeout - The timeout in milliseconds to wait for a response. Default is 100ms.
109
- * @returns {Promise<WorkerResponse<T>>} A promise that resolves with the response from the worker or rejects on timeout.
110
- * @throws {Error} If the fetch operation times out after 100ms.
111
- */
112
- fetch<M extends WorkerRequest<WorkerMessageType>>(message: M, timeout?: number): Promise<WorkerResponse<M['type']>>;
113
- }
114
- export {};
115
- //# sourceMappingURL=broadcastServer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"broadcastServer.d.ts","sourceRoot":"","sources":["../src/broadcastServer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,KAAK,UAAU,EAAkB,MAAM,kBAAkB,CAAC;AAEnE,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAGhI,UAAU,qBAAqB;IAC7B,mBAAmB,EAAE,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;CAC3C;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,YAAY,CAAC,qBAAqB,CAAC;IAapE,QAAQ,CAAC,IAAI,EAAE,aAAa;IAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAd1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoD;IAC1E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IAEnD;;;;;;OAMG;gBAEQ,IAAI,EAAE,aAAa,EACX,GAAG,EAAE,UAAU,EACf,OAAO,GAAE,MAA4B;IAOxD;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAMb;;;;OAIG;IACH,WAAW,IAAI,MAAM;IAIrB;;;;;;OAMG;IACH,eAAe,CAAC,CAAC,SAAS,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC;IAI5F;;;;;;OAMG;IACH,gBAAgB,CAAC,CAAC,SAAS,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC;IAI9F;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAM/B;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,aAAa;IAKhC;;;;;OAKG;IACH,OAAO,CAAC,CAAC,SAAS,aAAa,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI;IAerE;;;;;OAKG;IACH,OAAO,CAAC,CAAC,SAAS,cAAc,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI;IAYtE;;;;;;;;OAQG;IACG,KAAK,CAAC,CAAC,SAAS,aAAa,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAE,MAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;CA4B/H"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"broadcastServer.js","sourceRoot":"","sources":["../src/broadcastServer.ts"],"names":[],"mappings":"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"}