@lakutata/core 1.0.38 → 1.0.41
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/build/lib/multipleRunner/lib/bridges/BaseBridge.js +4 -1
- package/build/lib/multipleRunner/lib/bridges/BaseBridge.js.map +1 -1
- package/build/lib/multipleRunner/lib/bridges/ProcessBridge.js +7 -4
- package/build/lib/multipleRunner/lib/bridges/ProcessBridge.js.map +1 -1
- package/build/lib/multipleRunner/lib/bridges/ThreadBridge.js +9 -4
- package/build/lib/multipleRunner/lib/bridges/ThreadBridge.js.map +1 -1
- package/package.json +1 -1
- package/src/lib/multipleRunner/lib/bridges/BaseBridge.ts +112 -109
- package/src/lib/multipleRunner/lib/bridges/ProcessBridge.ts +16 -12
- package/src/lib/multipleRunner/lib/bridges/ThreadBridge.ts +14 -9
- package/src/tests/processes/TestProcess.ts +1 -1
|
@@ -11,8 +11,11 @@ class BaseBridge {
|
|
|
11
11
|
constructor(bridgeObject) {
|
|
12
12
|
this.eventEmitter = new events_1.EventEmitter();
|
|
13
13
|
this.bridge = bridgeObject;
|
|
14
|
-
this.bridge
|
|
14
|
+
this.bridge
|
|
15
|
+
.on('message', data => {
|
|
15
16
|
this.eventEmitter.emit.apply(this.eventEmitter, [data.channel].concat(data.args));
|
|
17
|
+
})
|
|
18
|
+
.on('error', bridgeError => {
|
|
16
19
|
});
|
|
17
20
|
}
|
|
18
21
|
off(channel) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseBridge.js","sourceRoot":"","sources":["../../../../../src/lib/multipleRunner/lib/bridges/BaseBridge.ts"],"names":[],"mappings":";;;;;;AAAA,mCAAmC;AACnC,oDAA2B;AAC3B,qDAAiG;AAEjG,MAAa,UAAU;
|
|
1
|
+
{"version":3,"file":"BaseBridge.js","sourceRoot":"","sources":["../../../../../src/lib/multipleRunner/lib/bridges/BaseBridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,10 +4,13 @@ exports.ProcessBridge = void 0;
|
|
|
4
4
|
const BaseBridge_1 = require("./BaseBridge");
|
|
5
5
|
class ProcessBridge extends BaseBridge_1.BaseBridge {
|
|
6
6
|
send(channel, ...args) {
|
|
7
|
-
this.bridge
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
const childProcessBridge = this.bridge;
|
|
8
|
+
if (childProcessBridge.connected) {
|
|
9
|
+
childProcessBridge.send({
|
|
10
|
+
channel: channel,
|
|
11
|
+
args: args
|
|
12
|
+
});
|
|
13
|
+
}
|
|
11
14
|
}
|
|
12
15
|
async terminate() {
|
|
13
16
|
return new Promise(resolve => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProcessBridge.js","sourceRoot":"","sources":["../../../../../src/lib/multipleRunner/lib/bridges/ProcessBridge.ts"],"names":[],"mappings":";;;AAAA,6CAAuC;
|
|
1
|
+
{"version":3,"file":"ProcessBridge.js","sourceRoot":"","sources":["../../../../../src/lib/multipleRunner/lib/bridges/ProcessBridge.ts"],"names":[],"mappings":";;;AAAA,6CAAuC;AAGvC,MAAa,aAAc,SAAQ,uBAAU;IAErC,IAAI,CAAC,OAAe,EAAE,GAAG,IAAW;QAC1C,MAAM,kBAAkB,GAAiB,IAAI,CAAC,MAAM,CAAA;QACpD,IAAI,kBAAkB,CAAC,SAAS,EAAE;YACjC,kBAAkB,CAAC,IAAI,CAAC;gBACvB,OAAO,EAAE,OAAO;gBAChB,IAAI,EAAE,IAAI;aACV,CAAC,CAAA;SACF;IACF,CAAC;IAEM,KAAK,CAAC,SAAS;QACrB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAClC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QACnB,CAAC,CAAC,CAAA;IACH,CAAC;CACD;AAlBD,sCAkBC"}
|
|
@@ -4,10 +4,15 @@ exports.ThreadBridge = void 0;
|
|
|
4
4
|
const BaseBridge_1 = require("./BaseBridge");
|
|
5
5
|
class ThreadBridge extends BaseBridge_1.BaseBridge {
|
|
6
6
|
send(channel, ...args) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
try {
|
|
8
|
+
const workerThreadBridge = this.bridge;
|
|
9
|
+
workerThreadBridge.postMessage({
|
|
10
|
+
channel: channel,
|
|
11
|
+
args: args
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
catch (e) {
|
|
15
|
+
}
|
|
11
16
|
}
|
|
12
17
|
async terminate() {
|
|
13
18
|
await this.bridge.terminate();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadBridge.js","sourceRoot":"","sources":["../../../../../src/lib/multipleRunner/lib/bridges/ThreadBridge.ts"],"names":[],"mappings":";;;AAAA,6CAAuC;
|
|
1
|
+
{"version":3,"file":"ThreadBridge.js","sourceRoot":"","sources":["../../../../../src/lib/multipleRunner/lib/bridges/ThreadBridge.ts"],"names":[],"mappings":";;;AAAA,6CAAuC;AAGvC,MAAa,YAAa,SAAQ,uBAAU;IAEpC,IAAI,CAAC,OAAe,EAAE,GAAG,IAAW;QAC1C,IAAI;YACH,MAAM,kBAAkB,GAAW,IAAI,CAAC,MAAM,CAAA;YAC9C,kBAAkB,CAAC,WAAW,CAAC;gBAC9B,OAAO,EAAE,OAAO;gBAChB,IAAI,EAAE,IAAI;aACV,CAAC,CAAA;SACF;QAAC,OAAO,CAAC,EAAE;SACX;IACF,CAAC;IAEM,KAAK,CAAC,SAAS;QACrB,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAA;IAC9B,CAAC;CACD;AAhBD,oCAgBC"}
|
package/package.json
CHANGED
|
@@ -3,113 +3,116 @@ import random from 'random'
|
|
|
3
3
|
import {INVOKE, PROPERTY_CHANGE, READY, SET_PROPERTY, SETUP_ERROR} from '../../constants/Channel'
|
|
4
4
|
|
|
5
5
|
export class BaseBridge {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
6
|
+
protected readonly eventEmitter: EventEmitter = new EventEmitter()
|
|
7
|
+
protected readonly bridge: any
|
|
8
|
+
|
|
9
|
+
constructor(bridgeObject: any) {
|
|
10
|
+
this.bridge = bridgeObject
|
|
11
|
+
this.bridge
|
|
12
|
+
.on('message', data => {
|
|
13
|
+
this.eventEmitter.emit.apply(this.eventEmitter, [data.channel].concat(data.args) as any)
|
|
14
|
+
})
|
|
15
|
+
.on('error', bridgeError => {
|
|
16
|
+
})
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public off(channel: string) {
|
|
20
|
+
this.eventEmitter.removeAllListeners(channel)
|
|
21
|
+
return this
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
public on(channel: string, listener: (...args: any[]) => void) {
|
|
25
|
+
this.eventEmitter.on.apply(this.eventEmitter, [channel, listener])
|
|
26
|
+
return this
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
public once(channel: string, listener: (...args: any[]) => void) {
|
|
30
|
+
this.eventEmitter.once.apply(this.eventEmitter, [channel, listener])
|
|
31
|
+
return this
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
public send(channel: string, ...args: any[]) {
|
|
35
|
+
throw new Error('Method did not implemented')
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
public ready(properties: { [key: string]: any }, propertyValues: { [key: string]: any }) {
|
|
39
|
+
this.send(READY, properties, propertyValues)
|
|
40
|
+
return this
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
public onReady(callback: (properties: { [key: string]: any }, propertyValues: { [key: string]: any }) => void) {
|
|
44
|
+
this.once(READY, callback)
|
|
45
|
+
return this
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
public error(error: Error) {
|
|
49
|
+
this.send('error', error.message)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
public setupError(error: Error) {
|
|
53
|
+
this.send(SETUP_ERROR, error.message)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
public async invoke(method: string, args: Array<any>) {
|
|
57
|
+
return new Promise((resolve, reject) => {
|
|
58
|
+
const invokeId: string = `ts_${Date.now()}_rnd_${random.int(100, 999999)}`
|
|
59
|
+
const responseChannelName: string = `__%$invoke_res_${invokeId}$%__`
|
|
60
|
+
this.once(responseChannelName, (errMsg: string, result: any) => {
|
|
61
|
+
if (errMsg) {
|
|
62
|
+
reject(new Error(errMsg))
|
|
63
|
+
} else {
|
|
64
|
+
resolve(result)
|
|
65
|
+
}
|
|
66
|
+
})
|
|
67
|
+
this.send(INVOKE, method, args, responseChannelName)
|
|
68
|
+
})
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
public onInvoke(handler: (method: string, args: Array<any>) => Promise<any>): void {
|
|
72
|
+
this.on(INVOKE, (method: string, args: Array<any>, responseChannelName: string) => {
|
|
73
|
+
handler(method, args).then(result => {
|
|
74
|
+
this.send(responseChannelName, null, result)
|
|
75
|
+
}).catch(invokeError => {
|
|
76
|
+
this.send(responseChannelName, invokeError.message, undefined)
|
|
77
|
+
})
|
|
78
|
+
})
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
public set(property: string, value: any) {
|
|
82
|
+
this.send(SET_PROPERTY, property, value)
|
|
83
|
+
return this
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
public onSet(handler: (property: string, value: any) => void) {
|
|
87
|
+
this.on(SET_PROPERTY, handler)
|
|
88
|
+
return this
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
public propertyChange(property: string, value: any) {
|
|
92
|
+
this.send(PROPERTY_CHANGE, property, value)
|
|
93
|
+
this.send('property-changed', property, value)
|
|
94
|
+
return this
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
public onPropertyChanged(handler: (property: string, value: any) => void) {
|
|
98
|
+
this.on(PROPERTY_CHANGE, handler)
|
|
99
|
+
return this
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
public callbackHandler(thisArg: any, handler: (...args: any[]) => any): string {
|
|
103
|
+
const callbackEvtName: string = `__________%$CALLBACK[${Date.now()}]$%__________`
|
|
104
|
+
this.once(callbackEvtName, (...args: any[]) => {
|
|
105
|
+
handler.apply(thisArg, args)
|
|
106
|
+
})
|
|
107
|
+
return callbackEvtName
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
public onCallback(callbackEvtName: string, args: any[]) {
|
|
111
|
+
this.send.apply(this, [callbackEvtName].concat(args) as any)
|
|
112
|
+
return this
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
public async terminate(): Promise<void> {
|
|
116
|
+
throw new Error('Method did not implemented')
|
|
117
|
+
}
|
|
115
118
|
}
|
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
import {BaseBridge} from './BaseBridge'
|
|
2
|
+
import {ChildProcess} from 'child_process'
|
|
2
3
|
|
|
3
4
|
export class ProcessBridge extends BaseBridge {
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
public send(channel: string, ...args: any[]) {
|
|
7
|
+
const childProcessBridge: ChildProcess = this.bridge
|
|
8
|
+
if (childProcessBridge.connected) {
|
|
9
|
+
childProcessBridge.send({
|
|
10
|
+
channel: channel,
|
|
11
|
+
args: args
|
|
12
|
+
})
|
|
13
|
+
}
|
|
14
|
+
}
|
|
11
15
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
public async terminate(): Promise<void> {
|
|
17
|
+
return new Promise(resolve => {
|
|
18
|
+
this.bridge.once('close', resolve)
|
|
19
|
+
this.bridge.kill()
|
|
20
|
+
})
|
|
21
|
+
}
|
|
18
22
|
}
|
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
import {BaseBridge} from './BaseBridge'
|
|
2
|
+
import {Worker} from 'worker_threads'
|
|
2
3
|
|
|
3
4
|
export class ThreadBridge extends BaseBridge {
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
public send(channel: string, ...args: any[]): void {
|
|
7
|
+
try {
|
|
8
|
+
const workerThreadBridge: Worker = this.bridge
|
|
9
|
+
workerThreadBridge.postMessage({
|
|
10
|
+
channel: channel,
|
|
11
|
+
args: args
|
|
12
|
+
})
|
|
13
|
+
} catch (e) {
|
|
14
|
+
}
|
|
15
|
+
}
|
|
11
16
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
17
|
+
public async terminate(): Promise<void> {
|
|
18
|
+
await this.bridge.terminate()
|
|
19
|
+
}
|
|
15
20
|
}
|