@matterbridge/thread 3.6.1-dev-20260311-8b3e31c → 3.6.1-dev-20260312-a699c0e
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.
- package/dist/threadsManager.d.ts +1 -0
- package/dist/threadsManager.js +17 -1
- package/dist/workerCheckUpdates.d.ts +3 -1
- package/dist/workerCheckUpdates.js +1 -1
- package/dist/workerGlobalPrefix.d.ts +3 -1
- package/dist/workerGlobalPrefix.js +1 -1
- package/dist/workerSpawnCommand.d.ts +3 -1
- package/dist/workerSpawnCommand.js +1 -1
- package/dist/workerSystemCheck.d.ts +3 -1
- package/dist/workerSystemCheck.js +1 -1
- package/dist/workerWrapper.d.ts +1 -0
- package/dist/workerWrapper.js +16 -4
- package/package.json +3 -3
package/dist/threadsManager.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export declare class ThreadsManager {
|
|
|
17
17
|
private msgHandler;
|
|
18
18
|
private intervalHandler;
|
|
19
19
|
runThread(name: string, workerData?: WorkerData, argv?: string[], env?: NodeJS.ProcessEnv, execArgv?: string[], pipedOutput?: boolean): Worker;
|
|
20
|
+
runInMainThread(name: string, workerData?: WorkerData | null): Promise<boolean>;
|
|
20
21
|
resolvePath(fileName: string): string;
|
|
21
22
|
createESMWorker(name: string, relativePath: string, workerData?: Record<string, boolean | number | string | object>, argv?: string[], env?: NodeJS.ProcessEnv, execArgv?: string[], pipedOutput?: boolean): Worker;
|
|
22
23
|
}
|
package/dist/threadsManager.js
CHANGED
|
@@ -69,7 +69,7 @@ export class ThreadsManager {
|
|
|
69
69
|
this.server.respond({ ...msg, result: { success: true } });
|
|
70
70
|
}
|
|
71
71
|
catch (err) {
|
|
72
|
-
this.log.
|
|
72
|
+
this.log.warn(`Failed to run thread ${CYAN}${msg.params.name}${db}: ${err.message}`);
|
|
73
73
|
this.server.respond({ ...msg, result: { success: false } });
|
|
74
74
|
}
|
|
75
75
|
break;
|
|
@@ -143,6 +143,22 @@ export class ThreadsManager {
|
|
|
143
143
|
this.log.debug(`Started thread ${threadInfo.name} from path ${path} type ${threadInfo.type} with thread id ${worker.threadId}`);
|
|
144
144
|
return threadInfo.worker;
|
|
145
145
|
}
|
|
146
|
+
async runInMainThread(name, workerData = null) {
|
|
147
|
+
const threadInfo = this.threads.find((t) => t.name === name);
|
|
148
|
+
if (!threadInfo) {
|
|
149
|
+
throw new Error(`Thread ${name} not found`);
|
|
150
|
+
}
|
|
151
|
+
this.log.debug(`Running thread ${threadInfo.name} in the main thread...`);
|
|
152
|
+
let success = false;
|
|
153
|
+
const workerWrapper = (await import(this.resolvePath(threadInfo.path))).default;
|
|
154
|
+
if (workerWrapper && typeof workerWrapper === 'object' && workerWrapper.name === name && workerWrapper.callback && typeof workerWrapper.callback === 'function') {
|
|
155
|
+
workerWrapper.workerData = workerData;
|
|
156
|
+
success = await workerWrapper.callback(workerWrapper);
|
|
157
|
+
workerWrapper.destroy(success);
|
|
158
|
+
}
|
|
159
|
+
this.log.debug(`Finished running thread ${threadInfo.name} in the main thread.`);
|
|
160
|
+
return success;
|
|
161
|
+
}
|
|
146
162
|
resolvePath(fileName) {
|
|
147
163
|
const currentModuleDirectory = path.dirname(fileURLToPath(import.meta.url));
|
|
148
164
|
const candidates = [
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { inspectError } from '@matterbridge/utils/error';
|
|
2
2
|
import { checkUpdates } from './checkUpdates.js';
|
|
3
3
|
import { WorkerWrapper } from './workerWrapper.js';
|
|
4
|
-
new WorkerWrapper('CheckUpdates', async (worker) => {
|
|
4
|
+
export default new WorkerWrapper('CheckUpdates', async (worker) => {
|
|
5
5
|
worker.logger("info", `Starting check updates...`);
|
|
6
6
|
let success = false;
|
|
7
7
|
try {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { inspectError } from '@matterbridge/utils/error';
|
|
2
2
|
import { getGlobalNodeModules } from '@matterbridge/utils/npm-prefix';
|
|
3
3
|
import { WorkerWrapper } from './workerWrapper.js';
|
|
4
|
-
new WorkerWrapper('GlobalPrefix', async (worker) => {
|
|
4
|
+
export default new WorkerWrapper('GlobalPrefix', async (worker) => {
|
|
5
5
|
let prefix;
|
|
6
6
|
worker.logger("info", `Starting global prefix check...`);
|
|
7
7
|
let success = false;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isSpawnWorkerData } from '@matterbridge/types';
|
|
2
2
|
import { spawnCommand } from './spawnCommand.js';
|
|
3
3
|
import { WorkerWrapper } from './workerWrapper.js';
|
|
4
|
-
new WorkerWrapper('SpawnCommand', async (worker) => {
|
|
4
|
+
export default new WorkerWrapper('SpawnCommand', async (worker) => {
|
|
5
5
|
if (!isSpawnWorkerData(worker.workerData)) {
|
|
6
6
|
worker.logger("error", `SpawnCommand invalid parameters`);
|
|
7
7
|
return false;
|
|
@@ -2,7 +2,7 @@ import os from 'node:os';
|
|
|
2
2
|
import { inspectError } from '@matterbridge/utils/error';
|
|
3
3
|
import { excludedInterfaceNamePattern } from '@matterbridge/utils/network';
|
|
4
4
|
import { WorkerWrapper } from './workerWrapper.js';
|
|
5
|
-
new WorkerWrapper('SystemCheck', async (worker) => {
|
|
5
|
+
export default new WorkerWrapper('SystemCheck', async (worker) => {
|
|
6
6
|
worker.logger("info", `Starting system check...`);
|
|
7
7
|
let success = false;
|
|
8
8
|
try {
|
package/dist/workerWrapper.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { AnsiLogger, LogLevel } from 'node-ansi-logger';
|
|
|
4
4
|
import { BroadcastServer } from './broadcastServer.js';
|
|
5
5
|
export declare class WorkerWrapper {
|
|
6
6
|
name: ThreadNames;
|
|
7
|
+
callback: (worker: WorkerWrapper) => Promise<boolean>;
|
|
7
8
|
debug: boolean;
|
|
8
9
|
verbose: boolean;
|
|
9
10
|
useTracker: boolean;
|
package/dist/workerWrapper.js
CHANGED
|
@@ -8,6 +8,7 @@ import { BroadcastServer } from './broadcastServer.js';
|
|
|
8
8
|
import { ThreadsManager } from './threadsManager.js';
|
|
9
9
|
export class WorkerWrapper {
|
|
10
10
|
name;
|
|
11
|
+
callback;
|
|
11
12
|
debug = hasParameter('debug') || hasParameter('verbose') || hasParameter('debug-threads') || hasParameter('verbose-threads');
|
|
12
13
|
verbose = hasParameter('verbose') || hasParameter('verbose-threads');
|
|
13
14
|
useTracker = hasParameter('tracker') || hasParameter('tracker-threads');
|
|
@@ -17,6 +18,7 @@ export class WorkerWrapper {
|
|
|
17
18
|
tracker;
|
|
18
19
|
constructor(name, callback) {
|
|
19
20
|
this.name = name;
|
|
21
|
+
this.callback = callback;
|
|
20
22
|
if (this.workerData) {
|
|
21
23
|
this.debug = this.workerData.debug || this.debug;
|
|
22
24
|
this.verbose = this.workerData.verbose || this.verbose;
|
|
@@ -65,12 +67,18 @@ export class WorkerWrapper {
|
|
|
65
67
|
if (this.debug)
|
|
66
68
|
this.parentLog(this.name, "info", `Worker ${this.name}:${threadId} initialized.`);
|
|
67
69
|
}
|
|
70
|
+
else {
|
|
71
|
+
if (this.debug)
|
|
72
|
+
this.log.debug(`Worker ${this.name}:${threadId} initialized in main thread.`);
|
|
73
|
+
}
|
|
68
74
|
if (this.verbose)
|
|
69
75
|
this.logWorkerInfo(this.log, false);
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
76
|
+
if (!isMainThread) {
|
|
77
|
+
setImmediate(async () => {
|
|
78
|
+
const success = await callback(this);
|
|
79
|
+
this.destroy(success);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
74
82
|
}
|
|
75
83
|
destroy(success) {
|
|
76
84
|
if (this.tracker)
|
|
@@ -82,6 +90,10 @@ export class WorkerWrapper {
|
|
|
82
90
|
this.parentPost({ type: 'exit', threadId, threadName: this.name, memoryUsage: process.memoryUsage(), success });
|
|
83
91
|
parentPort.close();
|
|
84
92
|
}
|
|
93
|
+
else {
|
|
94
|
+
if (this.debug)
|
|
95
|
+
this.log.debug(`Worker ${this.name}:${threadId} exiting with success in main thread: ${success}.`);
|
|
96
|
+
}
|
|
85
97
|
}
|
|
86
98
|
parentPost(message) {
|
|
87
99
|
if (!parentPort)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matterbridge/thread",
|
|
3
|
-
"version": "3.6.1-dev-
|
|
3
|
+
"version": "3.6.1-dev-20260312-a699c0e",
|
|
4
4
|
"description": "Matterbridge thread library",
|
|
5
5
|
"author": "https://github.com/Luligu",
|
|
6
6
|
"homepage": "https://matterbridge.io/",
|
|
@@ -69,8 +69,8 @@
|
|
|
69
69
|
"CHANGELOG.md"
|
|
70
70
|
],
|
|
71
71
|
"dependencies": {
|
|
72
|
-
"@matterbridge/types": "3.6.1-dev-
|
|
73
|
-
"@matterbridge/utils": "3.6.1-dev-
|
|
72
|
+
"@matterbridge/types": "3.6.1-dev-20260312-a699c0e",
|
|
73
|
+
"@matterbridge/utils": "3.6.1-dev-20260312-a699c0e",
|
|
74
74
|
"@zip.js/zip.js": "2.8.23",
|
|
75
75
|
"node-ansi-logger": "3.2.0"
|
|
76
76
|
}
|