@matterbridge/core 3.5.3

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 (295) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +22 -0
  3. package/dist/cli.d.ts +29 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +268 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/cliEmitter.d.ts +50 -0
  8. package/dist/cliEmitter.d.ts.map +1 -0
  9. package/dist/cliEmitter.js +49 -0
  10. package/dist/cliEmitter.js.map +1 -0
  11. package/dist/cliHistory.d.ts +48 -0
  12. package/dist/cliHistory.d.ts.map +1 -0
  13. package/dist/cliHistory.js +826 -0
  14. package/dist/cliHistory.js.map +1 -0
  15. package/dist/clusters/export.d.ts +2 -0
  16. package/dist/clusters/export.d.ts.map +1 -0
  17. package/dist/clusters/export.js +3 -0
  18. package/dist/clusters/export.js.map +1 -0
  19. package/dist/crypto/attestationDecoder.d.ts +180 -0
  20. package/dist/crypto/attestationDecoder.d.ts.map +1 -0
  21. package/dist/crypto/attestationDecoder.js +176 -0
  22. package/dist/crypto/attestationDecoder.js.map +1 -0
  23. package/dist/crypto/declarationDecoder.d.ts +72 -0
  24. package/dist/crypto/declarationDecoder.d.ts.map +1 -0
  25. package/dist/crypto/declarationDecoder.js +241 -0
  26. package/dist/crypto/declarationDecoder.js.map +1 -0
  27. package/dist/crypto/extract/342/200/220cert/342/200/220extensions.d.ts +9 -0
  28. package/dist/crypto/extract/342/200/220cert/342/200/220extensions.d.ts.map +1 -0
  29. package/dist/crypto/extract/342/200/220cert/342/200/220extensions.js +120 -0
  30. package/dist/crypto/extract/342/200/220cert/342/200/220extensions.js.map +1 -0
  31. package/dist/crypto/read-extensions.d.ts +2 -0
  32. package/dist/crypto/read-extensions.d.ts.map +1 -0
  33. package/dist/crypto/read-extensions.js +81 -0
  34. package/dist/crypto/read-extensions.js.map +1 -0
  35. package/dist/crypto/testData.d.ts +31 -0
  36. package/dist/crypto/testData.d.ts.map +1 -0
  37. package/dist/crypto/testData.js +131 -0
  38. package/dist/crypto/testData.js.map +1 -0
  39. package/dist/crypto/walk-der.d.ts +2 -0
  40. package/dist/crypto/walk-der.d.ts.map +1 -0
  41. package/dist/crypto/walk-der.js +165 -0
  42. package/dist/crypto/walk-der.js.map +1 -0
  43. package/dist/deviceManager.d.ts +135 -0
  44. package/dist/deviceManager.d.ts.map +1 -0
  45. package/dist/deviceManager.js +270 -0
  46. package/dist/deviceManager.js.map +1 -0
  47. package/dist/devices/airConditioner.d.ts +98 -0
  48. package/dist/devices/airConditioner.d.ts.map +1 -0
  49. package/dist/devices/airConditioner.js +74 -0
  50. package/dist/devices/airConditioner.js.map +1 -0
  51. package/dist/devices/basicVideoPlayer.d.ts +88 -0
  52. package/dist/devices/basicVideoPlayer.d.ts.map +1 -0
  53. package/dist/devices/basicVideoPlayer.js +155 -0
  54. package/dist/devices/basicVideoPlayer.js.map +1 -0
  55. package/dist/devices/batteryStorage.d.ts +48 -0
  56. package/dist/devices/batteryStorage.d.ts.map +1 -0
  57. package/dist/devices/batteryStorage.js +75 -0
  58. package/dist/devices/batteryStorage.js.map +1 -0
  59. package/dist/devices/castingVideoPlayer.d.ts +79 -0
  60. package/dist/devices/castingVideoPlayer.d.ts.map +1 -0
  61. package/dist/devices/castingVideoPlayer.js +101 -0
  62. package/dist/devices/castingVideoPlayer.js.map +1 -0
  63. package/dist/devices/cooktop.d.ts +61 -0
  64. package/dist/devices/cooktop.d.ts.map +1 -0
  65. package/dist/devices/cooktop.js +77 -0
  66. package/dist/devices/cooktop.js.map +1 -0
  67. package/dist/devices/dishwasher.d.ts +71 -0
  68. package/dist/devices/dishwasher.d.ts.map +1 -0
  69. package/dist/devices/dishwasher.js +130 -0
  70. package/dist/devices/dishwasher.js.map +1 -0
  71. package/dist/devices/evse.d.ts +76 -0
  72. package/dist/devices/evse.d.ts.map +1 -0
  73. package/dist/devices/evse.js +156 -0
  74. package/dist/devices/evse.js.map +1 -0
  75. package/dist/devices/export.d.ts +19 -0
  76. package/dist/devices/export.d.ts.map +1 -0
  77. package/dist/devices/export.js +23 -0
  78. package/dist/devices/export.js.map +1 -0
  79. package/dist/devices/extractorHood.d.ts +46 -0
  80. package/dist/devices/extractorHood.d.ts.map +1 -0
  81. package/dist/devices/extractorHood.js +78 -0
  82. package/dist/devices/extractorHood.js.map +1 -0
  83. package/dist/devices/heatPump.d.ts +47 -0
  84. package/dist/devices/heatPump.d.ts.map +1 -0
  85. package/dist/devices/heatPump.js +84 -0
  86. package/dist/devices/heatPump.js.map +1 -0
  87. package/dist/devices/laundryDryer.d.ts +67 -0
  88. package/dist/devices/laundryDryer.d.ts.map +1 -0
  89. package/dist/devices/laundryDryer.js +106 -0
  90. package/dist/devices/laundryDryer.js.map +1 -0
  91. package/dist/devices/laundryWasher.d.ts +81 -0
  92. package/dist/devices/laundryWasher.d.ts.map +1 -0
  93. package/dist/devices/laundryWasher.js +147 -0
  94. package/dist/devices/laundryWasher.js.map +1 -0
  95. package/dist/devices/microwaveOven.d.ts +168 -0
  96. package/dist/devices/microwaveOven.d.ts.map +1 -0
  97. package/dist/devices/microwaveOven.js +179 -0
  98. package/dist/devices/microwaveOven.js.map +1 -0
  99. package/dist/devices/oven.d.ts +105 -0
  100. package/dist/devices/oven.d.ts.map +1 -0
  101. package/dist/devices/oven.js +190 -0
  102. package/dist/devices/oven.js.map +1 -0
  103. package/dist/devices/refrigerator.d.ts +118 -0
  104. package/dist/devices/refrigerator.d.ts.map +1 -0
  105. package/dist/devices/refrigerator.js +186 -0
  106. package/dist/devices/refrigerator.js.map +1 -0
  107. package/dist/devices/roboticVacuumCleaner.d.ts +112 -0
  108. package/dist/devices/roboticVacuumCleaner.d.ts.map +1 -0
  109. package/dist/devices/roboticVacuumCleaner.js +268 -0
  110. package/dist/devices/roboticVacuumCleaner.js.map +1 -0
  111. package/dist/devices/solarPower.d.ts +40 -0
  112. package/dist/devices/solarPower.d.ts.map +1 -0
  113. package/dist/devices/solarPower.js +59 -0
  114. package/dist/devices/solarPower.js.map +1 -0
  115. package/dist/devices/speaker.d.ts +87 -0
  116. package/dist/devices/speaker.d.ts.map +1 -0
  117. package/dist/devices/speaker.js +120 -0
  118. package/dist/devices/speaker.js.map +1 -0
  119. package/dist/devices/temperatureControl.d.ts +166 -0
  120. package/dist/devices/temperatureControl.d.ts.map +1 -0
  121. package/dist/devices/temperatureControl.js +78 -0
  122. package/dist/devices/temperatureControl.js.map +1 -0
  123. package/dist/devices/waterHeater.d.ts +111 -0
  124. package/dist/devices/waterHeater.d.ts.map +1 -0
  125. package/dist/devices/waterHeater.js +166 -0
  126. package/dist/devices/waterHeater.js.map +1 -0
  127. package/dist/dgram/export.d.ts +2 -0
  128. package/dist/dgram/export.d.ts.map +1 -0
  129. package/dist/dgram/export.js +2 -0
  130. package/dist/dgram/export.js.map +1 -0
  131. package/dist/export.d.ts +32 -0
  132. package/dist/export.d.ts.map +1 -0
  133. package/dist/export.js +39 -0
  134. package/dist/export.js.map +1 -0
  135. package/dist/frontend.d.ts +248 -0
  136. package/dist/frontend.d.ts.map +1 -0
  137. package/dist/frontend.js +2605 -0
  138. package/dist/frontend.js.map +1 -0
  139. package/dist/helpers.d.ts +48 -0
  140. package/dist/helpers.d.ts.map +1 -0
  141. package/dist/helpers.js +161 -0
  142. package/dist/helpers.js.map +1 -0
  143. package/dist/jestutils/export.d.ts +2 -0
  144. package/dist/jestutils/export.d.ts.map +1 -0
  145. package/dist/jestutils/export.js +2 -0
  146. package/dist/jestutils/export.js.map +1 -0
  147. package/dist/jestutils/jestHelpers.d.ts +349 -0
  148. package/dist/jestutils/jestHelpers.d.ts.map +1 -0
  149. package/dist/jestutils/jestHelpers.js +980 -0
  150. package/dist/jestutils/jestHelpers.js.map +1 -0
  151. package/dist/matter/behaviors.d.ts +2 -0
  152. package/dist/matter/behaviors.d.ts.map +1 -0
  153. package/dist/matter/behaviors.js +3 -0
  154. package/dist/matter/behaviors.js.map +1 -0
  155. package/dist/matter/clusters.d.ts +2 -0
  156. package/dist/matter/clusters.d.ts.map +1 -0
  157. package/dist/matter/clusters.js +3 -0
  158. package/dist/matter/clusters.js.map +1 -0
  159. package/dist/matter/devices.d.ts +2 -0
  160. package/dist/matter/devices.d.ts.map +1 -0
  161. package/dist/matter/devices.js +3 -0
  162. package/dist/matter/devices.js.map +1 -0
  163. package/dist/matter/endpoints.d.ts +2 -0
  164. package/dist/matter/endpoints.d.ts.map +1 -0
  165. package/dist/matter/endpoints.js +3 -0
  166. package/dist/matter/endpoints.js.map +1 -0
  167. package/dist/matter/export.d.ts +4 -0
  168. package/dist/matter/export.d.ts.map +1 -0
  169. package/dist/matter/export.js +5 -0
  170. package/dist/matter/export.js.map +1 -0
  171. package/dist/matter/types.d.ts +2 -0
  172. package/dist/matter/types.d.ts.map +1 -0
  173. package/dist/matter/types.js +3 -0
  174. package/dist/matter/types.js.map +1 -0
  175. package/dist/matterNode.d.ts +341 -0
  176. package/dist/matterNode.d.ts.map +1 -0
  177. package/dist/matterNode.js +1329 -0
  178. package/dist/matterNode.js.map +1 -0
  179. package/dist/matterbridge.d.ts +544 -0
  180. package/dist/matterbridge.d.ts.map +1 -0
  181. package/dist/matterbridge.js +2880 -0
  182. package/dist/matterbridge.js.map +1 -0
  183. package/dist/matterbridgeAccessoryPlatform.d.ts +49 -0
  184. package/dist/matterbridgeAccessoryPlatform.d.ts.map +1 -0
  185. package/dist/matterbridgeAccessoryPlatform.js +80 -0
  186. package/dist/matterbridgeAccessoryPlatform.js.map +1 -0
  187. package/dist/matterbridgeBehaviors.d.ts +2428 -0
  188. package/dist/matterbridgeBehaviors.d.ts.map +1 -0
  189. package/dist/matterbridgeBehaviors.js +620 -0
  190. package/dist/matterbridgeBehaviors.js.map +1 -0
  191. package/dist/matterbridgeDeviceTypes.d.ts +744 -0
  192. package/dist/matterbridgeDeviceTypes.d.ts.map +1 -0
  193. package/dist/matterbridgeDeviceTypes.js +1312 -0
  194. package/dist/matterbridgeDeviceTypes.js.map +1 -0
  195. package/dist/matterbridgeDynamicPlatform.d.ts +49 -0
  196. package/dist/matterbridgeDynamicPlatform.d.ts.map +1 -0
  197. package/dist/matterbridgeDynamicPlatform.js +80 -0
  198. package/dist/matterbridgeDynamicPlatform.js.map +1 -0
  199. package/dist/matterbridgeEndpoint.d.ts +1548 -0
  200. package/dist/matterbridgeEndpoint.d.ts.map +1 -0
  201. package/dist/matterbridgeEndpoint.js +2883 -0
  202. package/dist/matterbridgeEndpoint.js.map +1 -0
  203. package/dist/matterbridgeEndpointHelpers.d.ts +1855 -0
  204. package/dist/matterbridgeEndpointHelpers.d.ts.map +1 -0
  205. package/dist/matterbridgeEndpointHelpers.js +1270 -0
  206. package/dist/matterbridgeEndpointHelpers.js.map +1 -0
  207. package/dist/matterbridgeEndpointTypes.d.ts +172 -0
  208. package/dist/matterbridgeEndpointTypes.d.ts.map +1 -0
  209. package/dist/matterbridgeEndpointTypes.js +28 -0
  210. package/dist/matterbridgeEndpointTypes.js.map +1 -0
  211. package/dist/matterbridgePlatform.d.ts +520 -0
  212. package/dist/matterbridgePlatform.d.ts.map +1 -0
  213. package/dist/matterbridgePlatform.js +921 -0
  214. package/dist/matterbridgePlatform.js.map +1 -0
  215. package/dist/mb_coap.d.ts +24 -0
  216. package/dist/mb_coap.d.ts.map +1 -0
  217. package/dist/mb_coap.js +89 -0
  218. package/dist/mb_coap.js.map +1 -0
  219. package/dist/mb_health.d.ts +77 -0
  220. package/dist/mb_health.d.ts.map +1 -0
  221. package/dist/mb_health.js +147 -0
  222. package/dist/mb_health.js.map +1 -0
  223. package/dist/mb_mdns.d.ts +24 -0
  224. package/dist/mb_mdns.d.ts.map +1 -0
  225. package/dist/mb_mdns.js +285 -0
  226. package/dist/mb_mdns.js.map +1 -0
  227. package/dist/pluginManager.d.ts +388 -0
  228. package/dist/pluginManager.d.ts.map +1 -0
  229. package/dist/pluginManager.js +1574 -0
  230. package/dist/pluginManager.js.map +1 -0
  231. package/dist/spawn.d.ts +33 -0
  232. package/dist/spawn.d.ts.map +1 -0
  233. package/dist/spawn.js +165 -0
  234. package/dist/spawn.js.map +1 -0
  235. package/dist/utils/export.d.ts +2 -0
  236. package/dist/utils/export.d.ts.map +1 -0
  237. package/dist/utils/export.js +2 -0
  238. package/dist/utils/export.js.map +1 -0
  239. package/dist/workers/brand.d.ts +25 -0
  240. package/dist/workers/brand.d.ts.map +1 -0
  241. package/dist/workers/brand.extend.d.ts +10 -0
  242. package/dist/workers/brand.extend.d.ts.map +1 -0
  243. package/dist/workers/brand.extend.js +15 -0
  244. package/dist/workers/brand.extend.js.map +1 -0
  245. package/dist/workers/brand.invalid.d.ts +9 -0
  246. package/dist/workers/brand.invalid.d.ts.map +1 -0
  247. package/dist/workers/brand.invalid.js +19 -0
  248. package/dist/workers/brand.invalid.js.map +1 -0
  249. package/dist/workers/brand.js +67 -0
  250. package/dist/workers/brand.js.map +1 -0
  251. package/dist/workers/clusterTypes.d.ts +47 -0
  252. package/dist/workers/clusterTypes.d.ts.map +1 -0
  253. package/dist/workers/clusterTypes.js +57 -0
  254. package/dist/workers/clusterTypes.js.map +1 -0
  255. package/dist/workers/frontendWorker.d.ts +2 -0
  256. package/dist/workers/frontendWorker.d.ts.map +1 -0
  257. package/dist/workers/frontendWorker.js +90 -0
  258. package/dist/workers/frontendWorker.js.map +1 -0
  259. package/dist/workers/helloWorld.d.ts +2 -0
  260. package/dist/workers/helloWorld.d.ts.map +1 -0
  261. package/dist/workers/helloWorld.js +135 -0
  262. package/dist/workers/helloWorld.js.map +1 -0
  263. package/dist/workers/matterWorker.d.ts +2 -0
  264. package/dist/workers/matterWorker.d.ts.map +1 -0
  265. package/dist/workers/matterWorker.js +104 -0
  266. package/dist/workers/matterWorker.js.map +1 -0
  267. package/dist/workers/matterbridgeWorker.d.ts +2 -0
  268. package/dist/workers/matterbridgeWorker.d.ts.map +1 -0
  269. package/dist/workers/matterbridgeWorker.js +75 -0
  270. package/dist/workers/matterbridgeWorker.js.map +1 -0
  271. package/dist/workers/messageLab.d.ts +134 -0
  272. package/dist/workers/messageLab.d.ts.map +1 -0
  273. package/dist/workers/messageLab.js +129 -0
  274. package/dist/workers/messageLab.js.map +1 -0
  275. package/dist/workers/testWorker.d.ts +2 -0
  276. package/dist/workers/testWorker.d.ts.map +1 -0
  277. package/dist/workers/testWorker.js +45 -0
  278. package/dist/workers/testWorker.js.map +1 -0
  279. package/dist/workers/usage.d.ts +19 -0
  280. package/dist/workers/usage.d.ts.map +1 -0
  281. package/dist/workers/usage.js +140 -0
  282. package/dist/workers/usage.js.map +1 -0
  283. package/dist/workers/workerManager.d.ts +115 -0
  284. package/dist/workers/workerManager.d.ts.map +1 -0
  285. package/dist/workers/workerManager.js +464 -0
  286. package/dist/workers/workerManager.js.map +1 -0
  287. package/dist/workers/workerServer.d.ts +126 -0
  288. package/dist/workers/workerServer.d.ts.map +1 -0
  289. package/dist/workers/workerServer.js +340 -0
  290. package/dist/workers/workerServer.js.map +1 -0
  291. package/dist/workers/workerTypes.d.ts +23 -0
  292. package/dist/workers/workerTypes.d.ts.map +1 -0
  293. package/dist/workers/workerTypes.js +3 -0
  294. package/dist/workers/workerTypes.js.map +1 -0
  295. package/package.json +120 -0
@@ -0,0 +1,134 @@
1
+ /** Types of worker source */
2
+ export type WorkerSrcType = 'manager' | 'matterbridge' | 'plugins' | 'devices' | 'frontend' | 'matter' | 'platform' | 'spawn' | 'updates';
3
+ /** Types of worker destination */
4
+ export type WorkerDstType = 'manager' | 'matterbridge' | 'plugins' | 'devices' | 'frontend' | 'matter' | 'platform' | 'spawn' | 'updates' | 'all';
5
+ /** Normalized message request structure */
6
+ type NormalizeRequest<T> = T extends {
7
+ params: infer P;
8
+ } ? ([P] extends [undefined] ? {
9
+ params?: undefined;
10
+ } : {
11
+ params: P;
12
+ }) : Record<never, never>;
13
+ /** Normalized message response structure that guarantees a successful result */
14
+ type NormalizeResponseSuccess<T> = T & {
15
+ error?: never;
16
+ };
17
+ /** Normalized message response structure that contains an error */
18
+ type NormalizeResponseError<T> = {
19
+ error: string;
20
+ } & {
21
+ [K in keyof T]?: never;
22
+ };
23
+ /** Normalized message response structure */
24
+ type NormalizeResponse<T> = NormalizeResponseSuccess<T> | NormalizeResponseError<T>;
25
+ /** Message request structure with id, timestamp, src and dst */
26
+ type WorkerMessageRequestMap = {
27
+ [K in keyof WorkerMessageTypes]: {
28
+ type: K;
29
+ id?: number;
30
+ timestamp?: number;
31
+ src: WorkerSrcType;
32
+ dst: WorkerDstType;
33
+ } & NormalizeRequest<WorkerMessageTypes[K]['request']>;
34
+ };
35
+ /** Message request structure with id, timestamp, src and dst */
36
+ export type WorkerMessageRequest<K extends keyof WorkerMessageTypes = keyof WorkerMessageTypes> = WorkerMessageRequestMap[K];
37
+ /** Message response structure with id, timestamp, elapsed, src and dst */
38
+ type WorkerMessageResponseMap = {
39
+ [K in keyof WorkerMessageTypes]: {
40
+ type: K;
41
+ id?: number;
42
+ timestamp?: number;
43
+ elapsed?: number;
44
+ src: WorkerSrcType;
45
+ dst: WorkerDstType;
46
+ } & NormalizeResponse<WorkerMessageTypes[K]['response']>;
47
+ };
48
+ /** Message response structure with id, timestamp, elapsed, src and dst */
49
+ export type WorkerMessageResponse<K extends keyof WorkerMessageTypes = keyof WorkerMessageTypes> = WorkerMessageResponseMap[K];
50
+ /** Message response success structure that guarantees a successful result */
51
+ type WorkerMessageResponseSuccessMap = {
52
+ [K in keyof WorkerMessageTypes]: {
53
+ type: K;
54
+ id?: number;
55
+ timestamp?: number;
56
+ elapsed?: number;
57
+ src: WorkerSrcType;
58
+ dst: WorkerDstType;
59
+ } & NormalizeResponseSuccess<WorkerMessageTypes[K]['response']>;
60
+ };
61
+ /** Message response success structure with id, timestamp, elapsed, src and dst */
62
+ export type WorkerMessageResponseSuccess<K extends keyof WorkerMessageTypes = keyof WorkerMessageTypes> = WorkerMessageResponseSuccessMap[K];
63
+ /** Union type for WorkerMessageRequest and WorkerMessageResponse */
64
+ export type WorkerMessage<K extends keyof WorkerMessageTypes = keyof WorkerMessageTypes> = WorkerMessageRequest<K> | WorkerMessageResponse<K>;
65
+ /** Map of all worker message types with their request and response structures */
66
+ export type WorkerMessageTypes = {
67
+ jest: {
68
+ request: {
69
+ params: {
70
+ userId: number;
71
+ };
72
+ };
73
+ response: {
74
+ result: {
75
+ name: string;
76
+ age: number;
77
+ };
78
+ };
79
+ };
80
+ jest_simple: {
81
+ request: {
82
+ params: undefined;
83
+ };
84
+ response: {
85
+ result: {
86
+ success: true;
87
+ };
88
+ };
89
+ };
90
+ };
91
+ /**
92
+ * Generate a pseudo-random identifier between 1,000,000 and 9,999,999.
93
+ *
94
+ * @returns {number} A seven-digit identifier.
95
+ */
96
+ export declare function getUniqueId(): number;
97
+ /**
98
+ * Send a request message from the worker implementation.
99
+ *
100
+ * @template K
101
+ * @param {WorkerMessageRequest<K>} msg The request message to send.
102
+ * @returns {void}
103
+ */
104
+ export declare function request<K extends keyof WorkerMessageTypes>(msg: WorkerMessageRequest<K>): void;
105
+ /**
106
+ * Send a response message from the worker implementation.
107
+ *
108
+ * @template K
109
+ * @param {WorkerMessageResponse<K>} msg The response message to send.
110
+ * @returns {void}
111
+ */
112
+ export declare function respond<K extends keyof WorkerMessageTypes>(msg: WorkerMessageResponse<K>): void;
113
+ /**
114
+ * Type guard to verify a value matches the WorkerMessageRequest structure.
115
+ *
116
+ * @param {unknown} value Value to test.
117
+ * @returns {value is WorkerMessageRequest} True when the value looks like a request message.
118
+ */
119
+ export declare function isWorkerRequest(value: unknown): value is WorkerMessageRequest;
120
+ /**
121
+ * Type guard to verify a value matches the WorkerMessageResponse structure.
122
+ *
123
+ * @param {unknown} value Value to test.
124
+ * @returns {value is WorkerMessageResponse} True when the value looks like a response message.
125
+ */
126
+ export declare function isWorkerResponse(value: unknown): value is WorkerMessageResponse;
127
+ /**
128
+ * Example handler function demonstrating type guards.
129
+ *
130
+ * @param {WorkerMessage} msg The incoming worker message.
131
+ */
132
+ export declare function handler(msg: WorkerMessage): void;
133
+ export {};
134
+ //# sourceMappingURL=messageLab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageLab.d.ts","sourceRoot":"","sources":["../../src/workers/messageLab.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Generate a pseudo-random identifier between 1,000,000 and 9,999,999.
3
+ *
4
+ * @returns {number} A seven-digit identifier.
5
+ */
6
+ export function getUniqueId() {
7
+ return Math.floor(Math.random() * 900000000) + 100000000;
8
+ }
9
+ /**
10
+ * Send a request message from the worker implementation.
11
+ *
12
+ * @template K
13
+ * @param {WorkerMessageRequest<K>} msg The request message to send.
14
+ * @returns {void}
15
+ */
16
+ export function request(msg) {
17
+ if (msg.id === undefined) {
18
+ msg.id = getUniqueId();
19
+ }
20
+ if (msg.timestamp === undefined) {
21
+ msg.timestamp = Date.now();
22
+ }
23
+ // to complete
24
+ }
25
+ /**
26
+ * Send a response message from the worker implementation.
27
+ *
28
+ * @template K
29
+ * @param {WorkerMessageResponse<K>} msg The response message to send.
30
+ * @returns {void}
31
+ */
32
+ export function respond(msg) {
33
+ if (msg.timestamp) {
34
+ msg.elapsed = Date.now() - msg.timestamp;
35
+ }
36
+ msg.timestamp = Date.now();
37
+ // to complete
38
+ }
39
+ /**
40
+ * Type guard to verify a value matches the WorkerMessageRequest structure.
41
+ *
42
+ * @param {unknown} value Value to test.
43
+ * @returns {value is WorkerMessageRequest} True when the value looks like a request message.
44
+ */
45
+ export function isWorkerRequest(value) {
46
+ if (typeof value !== 'object' || value === null) {
47
+ return false;
48
+ }
49
+ const message = value;
50
+ return (typeof message.type === 'string' &&
51
+ typeof message.src === 'string' &&
52
+ typeof message.dst === 'string' &&
53
+ typeof message.id === 'number' &&
54
+ typeof message.timestamp === 'number');
55
+ }
56
+ /**
57
+ * Type guard to verify a value matches the WorkerMessageResponse structure.
58
+ *
59
+ * @param {unknown} value Value to test.
60
+ * @returns {value is WorkerMessageResponse} True when the value looks like a response message.
61
+ */
62
+ export function isWorkerResponse(value) {
63
+ if (typeof value !== 'object' || value === null) {
64
+ return false;
65
+ }
66
+ const message = value;
67
+ if (typeof message.type !== 'string' ||
68
+ typeof message.src !== 'string' ||
69
+ typeof message.dst !== 'string' ||
70
+ typeof message.id !== 'number' ||
71
+ typeof message.timestamp !== 'number') {
72
+ return false;
73
+ }
74
+ const hasError = typeof message.error === 'string';
75
+ const hasResult = message.result !== undefined;
76
+ return hasError !== hasResult;
77
+ }
78
+ /**
79
+ * Example handler function demonstrating type guards.
80
+ *
81
+ * @param {WorkerMessage} msg The incoming worker message.
82
+ */
83
+ export function handler(msg) {
84
+ if (isWorkerRequest(msg)) {
85
+ switch (msg.type) {
86
+ case 'jest':
87
+ // msg.params is inferred as '{ userId: number }' here
88
+ if (msg.params.userId === 1) {
89
+ respond({ type: 'jest', src: msg.src, dst: msg.dst, id: msg.id, timestamp: msg.timestamp, result: { name: 'Alice', age: 30 } });
90
+ }
91
+ else {
92
+ respond({ type: 'jest', src: msg.src, dst: msg.dst, id: msg.id, timestamp: msg.timestamp, error: 'User not found' });
93
+ }
94
+ respond({ type: 'jest', src: msg.src, dst: msg.dst, id: msg.id, timestamp: msg.timestamp, result: { name: 'Test', age: 42 } });
95
+ break;
96
+ }
97
+ }
98
+ }
99
+ // Correct request example usage
100
+ request({ type: 'jest', src: 'frontend', dst: 'manager', params: { userId: 1 } });
101
+ request({ type: 'jest_simple', src: 'frontend', dst: 'manager' });
102
+ // Negative request type assertions
103
+ // @ts-expect-error unknown message type value
104
+ request({ type: 'unknown', src: 'frontend', dst: 'manager' });
105
+ // @ts-expect-error missing required params for jest request
106
+ request({ type: 'jest', src: 'frontend', dst: 'manager' });
107
+ // @ts-expect-error params.userId must be a number
108
+ request({ type: 'jest', src: 'frontend', dst: 'manager', params: { userId: '1' } });
109
+ // @ts-expect-error params must be undefined for jest_simple request
110
+ request({ type: 'jest_simple', src: 'frontend', dst: 'manager', params: {} });
111
+ // Correct response example usage
112
+ respond({ type: 'jest', src: 'manager', dst: 'frontend', result: { name: 'Test', age: 42 } });
113
+ respond({ type: 'jest', src: 'manager', dst: 'frontend', error: 'Not found' });
114
+ respond({ type: 'jest_simple', src: 'manager', dst: 'frontend', result: { success: true } });
115
+ respond({ type: 'jest_simple', src: 'manager', dst: 'frontend', error: 'Failed' });
116
+ // Negative response type assertions
117
+ // @ts-expect-error response.result.logLevel has wrong type
118
+ respond({ type: 'unknown', src: 'manager', dst: 'frontend', result: { logLevel: 'info' } });
119
+ // @ts-expect-error response.error must be a string when provided
120
+ respond({ type: 'jest', src: 'manager', dst: 'frontend', error: 42 });
121
+ // @ts-expect-error response.result.age must be a number
122
+ respond({ type: 'jest', src: 'manager', dst: 'frontend', result: { name: 'Test', age: '42' } });
123
+ // @ts-expect-error response.result.name must be a string
124
+ respond({ type: 'jest', src: 'manager', dst: 'frontend', result: { name: 123, age: 42 } });
125
+ // @ts-expect-error response.error must be a string when provided
126
+ respond({ type: 'jest', src: 'manager', dst: 'frontend', error: 42 });
127
+ // @ts-expect-error result with error is not allowed
128
+ respond({ type: 'jest', src: 'manager', dst: 'frontend', result: { name: 'Test', age: 42 }, error: 'Not found' });
129
+ //# sourceMappingURL=messageLab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageLab.js","sourceRoot":"","sources":["../../src/workers/messageLab.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=testWorker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testWorker.d.ts","sourceRoot":"","sources":["../../src/workers/testWorker.ts"],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
1
+ // testWorker.ts
2
+ // Worker entry for test logic
3
+ import { parentPort, workerData } from 'node:worker_threads';
4
+ // Third-party modules
5
+ import { debugStringify } from 'node-ansi-logger';
6
+ import { WorkerServer } from './workerServer.js';
7
+ const server = new WorkerServer('TestWorker', parentPort, workerData);
8
+ server.on('control_message', async (msg) => {
9
+ // Handle control messages from manager if needed
10
+ if (msg.type !== 'ping')
11
+ server.log.debug(`${server.name} received control message: ${debugStringify(msg)}`);
12
+ switch (msg.type) {
13
+ case 'init':
14
+ // Initialization logic if needed
15
+ server.parentPost({ ...msg, success: true });
16
+ break;
17
+ case 'ping':
18
+ // Ping handled in WorkerServer
19
+ break;
20
+ case 'exit':
21
+ // Cleanup logic if needed
22
+ server.parentPost({ ...msg, success: true });
23
+ server.exit(0);
24
+ break;
25
+ }
26
+ });
27
+ server.on('manager_message', async (msg) => {
28
+ // Handle direct messages from manager if needed
29
+ server.log.debug(`${server.name} received manager message: ${debugStringify(msg)}`);
30
+ switch (msg.type) {
31
+ default:
32
+ // Handle unknown message types
33
+ break;
34
+ }
35
+ });
36
+ server.on('broadcast_message', (msg) => {
37
+ // Handle broadcast messages from other workers if needed
38
+ server.log.debug(`${server.name} received broadcast message: ${debugStringify(msg)}`);
39
+ switch (msg.type) {
40
+ default:
41
+ // Handle unknown message types
42
+ break;
43
+ }
44
+ });
45
+ //# sourceMappingURL=testWorker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testWorker.js","sourceRoot":"","sources":["../../src/workers/testWorker.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,8BAA8B;AAE9B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,sBAAsB;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAEtE,MAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IACzC,iDAAiD;IACjD,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;QAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,8BAA8B,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7G,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,MAAM;YACT,iCAAiC;YACjC,MAAM,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,MAAM;QACR,KAAK,MAAM;YACT,+BAA+B;YAC/B,MAAM;QACR,KAAK,MAAM;YACT,0BAA0B;YAC1B,MAAM,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACf,MAAM;IACV,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IACzC,gDAAgD;IAChD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,8BAA8B,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpF,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB;YACE,+BAA+B;YAC/B,MAAM;IACV,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,EAAE;IACrC,yDAAyD;IACzD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,gCAAgC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtF,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB;YACE,+BAA+B;YAC/B,MAAM;IACV,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Memory Stress Test (malloc/free simulation).
3
+ *
4
+ * The allocated buffer stays in the rss space (not in the heap).
5
+ * As such, it is not tracked by V8's heap statistics.
6
+ * A call to global.gc() is needed to trigger garbage collection and free the memory.
7
+ * This requires Node.js to be started with the --expose-gc flag.
8
+ * If not started manually, the memory will be freed when the gc is called.
9
+ */
10
+ export declare function mallocStressTest(): void;
11
+ /**
12
+ * Read/Write Stress Test with readFileSync and writeFileSync
13
+ */
14
+ export declare function readWriteStressTest(): Promise<void>;
15
+ /**
16
+ * CPU Stress Test (simulated work)
17
+ */
18
+ export declare function cpuStressTest(): void;
19
+ //# sourceMappingURL=usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/workers/usage.ts"],"names":[],"mappings":"AAwCA;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,SAe/B;AAED;;GAEG;AACH,wBAAsB,mBAAmB,kBAmCxC;AAED;;GAEG;AACH,wBAAgB,aAAa,SAgC5B"}
@@ -0,0 +1,140 @@
1
+ /* eslint-disable no-console */
2
+ // Use: node --inspect=0.0.0.0:9229 --trace-gc --expose-gc dist/workers/usage --debug --trace --loader --verbose
3
+ if (process.argv.includes('--loader') || process.argv.includes('-loader'))
4
+ console.log('\u001B[32mUsage loaded.\u001B[40;0m');
5
+ // import { Logger, LogLevel as MatterLogLevel, LogFormat as MatterLogFormat } from '@matter/general';
6
+ // import { BridgedDeviceBasicInformation } from '@matter/types/clusters/bridged-device-basic-information';
7
+ // import { PowerSource } from '@matter/types/clusters/power-source';
8
+ // import { FabricAction } from '@matter/protocol';
9
+ import { Tracker, Inspector } from '@matterbridge/utils';
10
+ // Logger.format = MatterLogFormat.ANSI;
11
+ // Logger.level = MatterLogLevel.INFO;
12
+ // Logger.get('UsageWorker').info('Usage worker started.');
13
+ // Logger.get('UsageWorker').info('Usage worker started.', BridgedDeviceBasicInformation.Cluster.id, PowerSource.Cluster.id);
14
+ const tracker = new Tracker('Tracker', true, true);
15
+ tracker.start();
16
+ const inspector = new Inspector('Inspector', true, true);
17
+ await inspector.start();
18
+ setTimeout(() => {
19
+ tracker.resetPeaks();
20
+ }, 30000); // Reset peaks after 30 seconds
21
+ setTimeout(() => {
22
+ // cpuStressTest();
23
+ // mallocStressTest();
24
+ // readWriteStressTest();
25
+ }, 60000); // After 1 minute
26
+ setInterval(() => {
27
+ // cpuStressTest();
28
+ // mallocStressTest();
29
+ // readWriteStressTest();
30
+ }, 60000); // Each minute
31
+ /**
32
+ * Memory Stress Test (malloc/free simulation).
33
+ *
34
+ * The allocated buffer stays in the rss space (not in the heap).
35
+ * As such, it is not tracked by V8's heap statistics.
36
+ * A call to global.gc() is needed to trigger garbage collection and free the memory.
37
+ * This requires Node.js to be started with the --expose-gc flag.
38
+ * If not started manually, the memory will be freed when the gc is called.
39
+ */
40
+ export function mallocStressTest() {
41
+ const allocations = [];
42
+ for (let i = 0; i < 50; i++) {
43
+ // Allocate 10MB chunks
44
+ const buffer = Buffer.alloc(10 * 1024 * 1024, 'a');
45
+ allocations.push(buffer);
46
+ console.log(`Allocated ${(i + 1) * 10} MB`);
47
+ }
48
+ // Free memory after some time
49
+ setTimeout(() => {
50
+ allocations.length = 0; // Clear references
51
+ console.log('Freed allocated memory');
52
+ tracker.runGarbageCollector('minor');
53
+ tracker.runGarbageCollector('major');
54
+ }, 30000); // Free after 30 seconds
55
+ }
56
+ /**
57
+ * Read/Write Stress Test with readFileSync and writeFileSync
58
+ */
59
+ export async function readWriteStressTest() {
60
+ const fs = await import('node:fs');
61
+ const path = await import('node:path');
62
+ const os = await import('node:os');
63
+ const filePath = path.join(os.tmpdir(), 'tempfile.dat');
64
+ const fd = fs.openSync(filePath, 'w');
65
+ const chunk = 'x'.repeat(64 * 1024); // small string stays in heap
66
+ const iterations = Math.ceil((50 * 1024 * 1024) / chunk.length);
67
+ for (let i = 0; i < iterations; i++) {
68
+ fs.writeSync(fd, chunk);
69
+ }
70
+ fs.closeSync(fd);
71
+ console.log('Wrote 50 MB');
72
+ const readFd = fs.openSync(filePath, 'r');
73
+ const buf = new Uint8Array(chunk.length); // Node accepts any ArrayBufferView
74
+ let total = 0;
75
+ while (true) {
76
+ const bytes = fs.readSync(readFd, buf);
77
+ if (bytes === 0)
78
+ break;
79
+ total += bytes;
80
+ // optionally process buf here
81
+ }
82
+ fs.closeSync(readFd);
83
+ console.log(`Read ${total / (1024 * 1024)} MB`);
84
+ fs.unlinkSync(filePath);
85
+ // Free memory after some time
86
+ setTimeout(() => {
87
+ tracker.runGarbageCollector('minor');
88
+ tracker.runGarbageCollector('major');
89
+ }, 30000); // Free after 30 seconds
90
+ }
91
+ /**
92
+ * CPU Stress Test (simulated work)
93
+ */
94
+ export function cpuStressTest() {
95
+ // CPU-intensive work: prime number calculation
96
+ const startTime = Date.now();
97
+ let _primeCount = 0;
98
+ // Calculate primes up to 10000 (CPU intensive)
99
+ for (let num = 2; num <= 10000; num++) {
100
+ let isPrime = true;
101
+ for (let i = 2; i <= Math.sqrt(num); i++) {
102
+ if (num % i === 0) {
103
+ isPrime = false;
104
+ break;
105
+ }
106
+ }
107
+ if (isPrime)
108
+ _primeCount++;
109
+ }
110
+ // More CPU work: array sorting
111
+ const largeArray = Array.from({ length: 5000 }, () => Math.random() * 1000000);
112
+ largeArray.sort((a, b) => b - a); // Reverse sort
113
+ // Hash calculation simulation
114
+ let hash = 0;
115
+ const str = JSON.stringify(largeArray.slice(0, 100));
116
+ for (let i = 0; i < str.length; i++) {
117
+ const char = str.charCodeAt(i);
118
+ hash = (hash << 5) - hash + char;
119
+ hash = hash & hash; // Convert to 32bit integer
120
+ }
121
+ const _duration = Date.now() - startTime;
122
+ console.log(`CPU work completed: Found ${_primeCount} primes, sorted ${largeArray.length} numbers, hash: ${hash}, duration: ${_duration}ms`);
123
+ }
124
+ /**
125
+ * Graceful shutdown
126
+ */
127
+ async function shutdown() {
128
+ console.log('Stopping inspector...');
129
+ await inspector.stop();
130
+ console.log('Inspector stopped.');
131
+ console.log('Stopping tracker...');
132
+ tracker.stop();
133
+ console.log('Tracker stopped.');
134
+ console.log('Usage worker exiting.');
135
+ // eslint-disable-next-line n/no-process-exit
136
+ process.exit(0);
137
+ }
138
+ process.on('SIGINT', shutdown);
139
+ process.on('SIGTERM', shutdown);
140
+ //# sourceMappingURL=usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/workers/usage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ import { Worker } from 'node:worker_threads';
2
+ import { AnsiLogger } from 'node-ansi-logger';
3
+ import { WorkerMessage } from '@matterbridge/types';
4
+ import { ControlMessage } from './workerTypes.js';
5
+ /**
6
+ * Generates a unique ID with range 100000-999999.
7
+ *
8
+ * @returns {number} - A unique ID between 100000 and 999999
9
+ */
10
+ export declare function getUniqueId(): number;
11
+ export declare class WorkerManager {
12
+ readonly log: AnsiLogger;
13
+ private readonly matterbridgeWorker;
14
+ private readonly frontendWorker;
15
+ private readonly matterWorker;
16
+ private readonly testWorker;
17
+ private readonly broadcastChannel;
18
+ private readonly matterbridgeChannel;
19
+ private readonly frontendChannel;
20
+ private readonly matterChannel;
21
+ private readonly testChannel;
22
+ private readonly pingIntervalTimeout;
23
+ private readonly pingIntervalMs;
24
+ private matterbridgePongTimeout;
25
+ private frontendPongTimeout;
26
+ private matterPongTimeout;
27
+ private testPongTimeout;
28
+ private readonly tracker;
29
+ /**
30
+ * Creates an instance of WorkerManager, initializing and managing multiple workers.
31
+ *
32
+ * @remarks
33
+ * The manager sets up communication channels between itself and the workers:
34
+ * - parentPort: manager <-> worker (control with ControlMessage)
35
+ * - port1: manager -> worker (direct communication for messages from manager to worker)
36
+ * - port2: manager <- worker (direct communication for messages from worker to manager)
37
+ * - broadcastChannel: broadcast messages to manager and all workers
38
+ */
39
+ constructor();
40
+ /**
41
+ * Sends a control message to a specific worker.
42
+ *
43
+ * @param {Worker} worker - The worker to send the message to.
44
+ * @param {ControlMessage} msg - The message to send.
45
+ */
46
+ postControlMessage(worker: Worker, msg: ControlMessage): void;
47
+ /**
48
+ * Sends a control message to all workers.
49
+ *
50
+ * @param {ControlMessage} msg - The message to send.
51
+ */
52
+ postControlMessageToAll(msg: ControlMessage): void;
53
+ /**
54
+ * Initializes all workers.
55
+ */
56
+ initializeAllWorkers(): void;
57
+ /**
58
+ * Shuts down all workers gracefully.
59
+ */
60
+ shutdownAllWorkers(): void;
61
+ /**
62
+ * Sends a message to the Matterbridge worker via the port 1 of the established MessageChannel.
63
+ *
64
+ * @param {MatterbridgeWorkerMessage} message - The message to be posted to the Matterbridge worker.
65
+ */
66
+ postToMatterbridgeWorker(message: WorkerMessage): void;
67
+ /**
68
+ * Sends a message to the Frontend worker via the port 1 of the established MessageChannel.
69
+ *
70
+ * @param {FrontendWorkerMessage} message - The message to be posted to the Frontend worker.
71
+ */
72
+ postToFrontendWorker(message: WorkerMessage): void;
73
+ /**
74
+ * Sends a message to the Plugin worker via the port 1 of the established MessageChannel.
75
+ *
76
+ * @param {PluginWorkerMessage} message - The message to be posted to the Plugin worker.
77
+ */
78
+ postToMatterWorker(message: WorkerMessage): void;
79
+ /**
80
+ * Handle messages from matterbridgeWorker.
81
+ * It uses the port 2 of the matterbridge MessageChannel for direct communication.
82
+ *
83
+ * @param {MatterbridgeWorkerMessage} msg The message from the matterbridgeWorker
84
+ */
85
+ matterbridgeMessageHandler(msg: WorkerMessage): void;
86
+ /**
87
+ * Handle messages from frontendWorker.
88
+ * It uses the port 2 of the frontend MessageChannel for direct communication.
89
+ *
90
+ * @param {FrontendWorkerMessage} msg The message from the frontendWorker
91
+ */
92
+ frontendMessageHandler(msg: WorkerMessage): void;
93
+ /**
94
+ * Handle messages from matterWorker.
95
+ * It uses the port 2 of the matter MessageChannel for direct communication.
96
+ *
97
+ * @param {MatterWorkerMessage} msg The message from the matterWorker
98
+ */
99
+ matterMessageHandler(msg: WorkerMessage): void;
100
+ /**
101
+ * Handle messages from testWorker.
102
+ * It uses the port 2 of the test MessageChannel for direct communication.
103
+ *
104
+ * @param {TestWorkerMessage} msg The message from the testWorker
105
+ */
106
+ testMessageHandler(msg: WorkerMessage): void;
107
+ /**
108
+ * Handle broadcast messages from other workers.
109
+ * It uses the BroadcastChannel for communication.
110
+ *
111
+ * @param {MessageEvent} event The message event containing the broadcast message
112
+ */
113
+ broadcastMessageHandler(event: MessageEvent): void;
114
+ }
115
+ //# sourceMappingURL=workerManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workerManager.d.ts","sourceRoot":"","sources":["../../src/workers/workerManager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAoC,MAAM,EAAiB,MAAM,qBAAqB,CAAC;AAM9F,OAAO,EAAE,UAAU,EAAiD,MAAM,kBAAkB,CAAC;AAE7F,OAAO,EAAsB,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIxE,OAAO,EAAc,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA2D9D;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAiCD,qBAAa,aAAa;IACxB,QAAQ,CAAC,GAAG,aAIT;IAEH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IAEpD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAiB;IACrD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiB;IAE7C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAiB;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,uBAAuB,CAAyC;IACxE,OAAO,CAAC,mBAAmB,CAAyC;IACpE,OAAO,CAAC,iBAAiB,CAAyC;IAClE,OAAO,CAAC,eAAe,CAAyC;IAEhE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6C;IAErE;;;;;;;;;OASG;;IAqKH;;;;;OAKG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc;IAItD;;;;OAIG;IACH,uBAAuB,CAAC,GAAG,EAAE,cAAc;IAO3C;;OAEG;IACH,oBAAoB;IAIpB;;OAEG;IACH,kBAAkB;IAUlB;;;;OAIG;IACH,wBAAwB,CAAC,OAAO,EAAE,aAAa;IAI/C;;;;OAIG;IACH,oBAAoB,CAAC,OAAO,EAAE,aAAa;IAI3C;;;;OAIG;IACH,kBAAkB,CAAC,OAAO,EAAE,aAAa;IAIzC;;;;;OAKG;IACH,0BAA0B,CAAC,GAAG,EAAE,aAAa;IAc7C;;;;;OAKG;IACH,sBAAsB,CAAC,GAAG,EAAE,aAAa;IAczC;;;;;OAKG;IACH,oBAAoB,CAAC,GAAG,EAAE,aAAa;IAcvC;;;;;OAKG;IACH,kBAAkB,CAAC,GAAG,EAAE,aAAa;IAQrC;;;;;OAKG;IACH,uBAAuB,CAAC,KAAK,EAAE,YAAY;CAI5C"}