@lakutata/core 1.0.28 → 1.0.29
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/README.md +4 -0
- package/build/Application.d.ts +3 -0
- package/build/Application.js +16 -0
- package/build/Application.js.map +1 -1
- package/build/ApplicationManagement.js +5 -0
- package/build/ApplicationManagement.js.map +1 -1
- package/build/base/process/Process.d.ts +1 -1
- package/build/base/process/Process.js +2 -2
- package/build/base/process/Process.js.map +1 -1
- package/build/base/process/ProcessManager.d.ts +1 -1
- package/build/base/process/ProcessManager.js +2 -2
- package/build/base/process/ProcessManager.js.map +1 -1
- package/build/base/thread/Thread.d.ts +1 -1
- package/build/base/thread/Thread.js +2 -2
- package/build/base/thread/Thread.js.map +1 -1
- package/build/base/thread/ThreadManager.d.ts +1 -1
- package/build/base/thread/ThreadManager.js +2 -2
- package/build/base/thread/ThreadManager.js.map +1 -1
- package/build/interfaces/IApplicationConfig.d.ts +1 -0
- package/build/lib/multipleRunner/constants/Channel.d.ts +5 -0
- package/build/lib/multipleRunner/constants/Channel.js +9 -0
- package/build/lib/multipleRunner/constants/Channel.js.map +1 -0
- package/build/lib/multipleRunner/constants/MetadataKey.d.ts +2 -0
- package/build/lib/multipleRunner/constants/MetadataKey.js +6 -0
- package/build/lib/multipleRunner/constants/MetadataKey.js.map +1 -0
- package/build/lib/multipleRunner/containers/ContainerVolume.d.ts +4 -0
- package/build/lib/multipleRunner/containers/ContainerVolume.js +85 -0
- package/build/lib/multipleRunner/containers/ContainerVolume.js.map +1 -0
- package/build/lib/multipleRunner/definitions/interfaces/ClassConstructor.d.ts +3 -0
- package/build/lib/multipleRunner/definitions/interfaces/ClassConstructor.js +3 -0
- package/build/lib/multipleRunner/definitions/interfaces/ClassConstructor.js.map +1 -0
- package/build/lib/multipleRunner/definitions/interfaces/MultipleRunnerBaseClassConstructor.d.ts +4 -0
- package/build/lib/multipleRunner/definitions/interfaces/MultipleRunnerBaseClassConstructor.js +3 -0
- package/build/lib/multipleRunner/definitions/interfaces/MultipleRunnerBaseClassConstructor.js.map +1 -0
- package/build/lib/multipleRunner/definitions/interfaces/ProcessClassConstructor.d.ts +7 -0
- package/build/lib/multipleRunner/definitions/interfaces/ProcessClassConstructor.js +3 -0
- package/build/lib/multipleRunner/definitions/interfaces/ProcessClassConstructor.js.map +1 -0
- package/build/lib/multipleRunner/definitions/interfaces/ProxyClass.d.ts +3 -0
- package/build/lib/multipleRunner/definitions/interfaces/ProxyClass.js +3 -0
- package/build/lib/multipleRunner/definitions/interfaces/ProxyClass.js.map +1 -0
- package/build/lib/multipleRunner/definitions/interfaces/ThreadClassConstructor.d.ts +7 -0
- package/build/lib/multipleRunner/definitions/interfaces/ThreadClassConstructor.js +3 -0
- package/build/lib/multipleRunner/definitions/interfaces/ThreadClassConstructor.js.map +1 -0
- package/build/lib/multipleRunner/lib/Process.d.ts +5 -0
- package/build/lib/multipleRunner/lib/Process.js +44 -0
- package/build/lib/multipleRunner/lib/Process.js.map +1 -0
- package/build/lib/multipleRunner/lib/Thread.d.ts +5 -0
- package/build/lib/multipleRunner/lib/Thread.js +52 -0
- package/build/lib/multipleRunner/lib/Thread.js.map +1 -0
- package/build/lib/multipleRunner/lib/bridges/BaseBridge.d.ts +32 -0
- package/build/lib/multipleRunner/lib/bridges/BaseBridge.js +104 -0
- package/build/lib/multipleRunner/lib/bridges/BaseBridge.js.map +1 -0
- package/build/lib/multipleRunner/lib/bridges/ProcessBridge.d.ts +5 -0
- package/build/lib/multipleRunner/lib/bridges/ProcessBridge.js +20 -0
- package/build/lib/multipleRunner/lib/bridges/ProcessBridge.js.map +1 -0
- package/build/lib/multipleRunner/lib/bridges/ThreadBridge.d.ts +5 -0
- package/build/lib/multipleRunner/lib/bridges/ThreadBridge.js +17 -0
- package/build/lib/multipleRunner/lib/bridges/ThreadBridge.js.map +1 -0
- package/build/lib/multipleRunner/lib/cores/GenerateExecArgv.d.ts +2 -0
- package/build/lib/multipleRunner/lib/cores/GenerateExecArgv.js +35 -0
- package/build/lib/multipleRunner/lib/cores/GenerateExecArgv.js.map +1 -0
- package/build/lib/multipleRunner/lib/cores/IsElectron.d.ts +1 -0
- package/build/lib/multipleRunner/lib/cores/IsElectron.js +9 -0
- package/build/lib/multipleRunner/lib/cores/IsElectron.js.map +1 -0
- package/build/lib/multipleRunner/lib/cores/ProcessClass.d.ts +5 -0
- package/build/lib/multipleRunner/lib/cores/ProcessClass.js +12 -0
- package/build/lib/multipleRunner/lib/cores/ProcessClass.js.map +1 -0
- package/build/lib/multipleRunner/lib/cores/ThreadClass.d.ts +5 -0
- package/build/lib/multipleRunner/lib/cores/ThreadClass.js +12 -0
- package/build/lib/multipleRunner/lib/cores/ThreadClass.js.map +1 -0
- package/build/lib/multipleRunner/lib/cores/UniParentBridgeHandler.d.ts +2 -0
- package/build/lib/multipleRunner/lib/cores/UniParentBridgeHandler.js +104 -0
- package/build/lib/multipleRunner/lib/cores/UniParentBridgeHandler.js.map +1 -0
- package/build/lib/multipleRunner/lib/prototypes/MultipleRunnerBaseClass.d.ts +17 -0
- package/build/lib/multipleRunner/lib/prototypes/MultipleRunnerBaseClass.js +53 -0
- package/build/lib/multipleRunner/lib/prototypes/MultipleRunnerBaseClass.js.map +1 -0
- package/build/plugins/Formatter.d.ts +1 -0
- package/build/plugins/Formatter.js +8 -5
- package/build/plugins/Formatter.js.map +1 -1
- package/build/plugins/Logger.js +1 -1
- package/build/plugins/Logger.js.map +1 -1
- package/package.json +4 -3
- package/src/Application.ts +29 -0
- package/src/ApplicationManagement.ts +3 -0
- package/src/base/process/Process.ts +1 -1
- package/src/base/process/ProcessManager.ts +2 -2
- package/src/base/thread/Thread.ts +1 -1
- package/src/base/thread/ThreadManager.ts +2 -2
- package/src/interfaces/IApplicationConfig.ts +1 -0
- package/src/lib/multipleRunner/constants/Channel.ts +5 -0
- package/src/lib/multipleRunner/constants/MetadataKey.ts +2 -0
- package/src/lib/multipleRunner/containers/ContainerVolume.ts +83 -0
- package/src/lib/multipleRunner/definitions/interfaces/ClassConstructor.ts +3 -0
- package/src/lib/multipleRunner/definitions/interfaces/MultipleRunnerBaseClassConstructor.ts +5 -0
- package/src/lib/multipleRunner/definitions/interfaces/ProcessClassConstructor.ts +10 -0
- package/src/lib/multipleRunner/definitions/interfaces/ProxyClass.ts +3 -0
- package/src/lib/multipleRunner/definitions/interfaces/ThreadClassConstructor.ts +10 -0
- package/src/lib/multipleRunner/lib/Process.ts +44 -0
- package/src/lib/multipleRunner/lib/Thread.ts +52 -0
- package/src/lib/multipleRunner/lib/bridges/BaseBridge.ts +115 -0
- package/src/lib/multipleRunner/lib/bridges/ProcessBridge.ts +18 -0
- package/src/lib/multipleRunner/lib/bridges/ThreadBridge.ts +15 -0
- package/src/lib/multipleRunner/lib/cores/GenerateExecArgv.ts +28 -0
- package/src/lib/multipleRunner/lib/cores/IsElectron.ts +3 -0
- package/src/lib/multipleRunner/lib/cores/ProcessClass.ts +8 -0
- package/src/lib/multipleRunner/lib/cores/ThreadClass.ts +8 -0
- package/src/lib/multipleRunner/lib/cores/UniParentBridgeHandler.ts +97 -0
- package/src/lib/multipleRunner/lib/prototypes/MultipleRunnerBaseClass.ts +66 -0
- package/src/plugins/Formatter.ts +10 -5
- package/src/plugins/Logger.ts +1 -1
- package/src/tests/Main.spec.ts +6 -2
- package/src/tests/threads/TestThread.ts +3 -1
package/README.md
CHANGED
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
[](https://snyk.io/test/npm/@lakutata/core)
|
|
8
8
|
[](https://npmjs.org/package/@lakutata/core)
|
|
9
9
|
|
|
10
|
+
## TODO
|
|
11
|
+
|
|
12
|
+
- Write document for Lakutata
|
|
13
|
+
|
|
10
14
|
## Features
|
|
11
15
|
|
|
12
16
|
- TODO
|
package/build/Application.d.ts
CHANGED
|
@@ -23,7 +23,10 @@ export declare class Application extends Module {
|
|
|
23
23
|
protected readonly processes: TProcessesConfig;
|
|
24
24
|
protected readonly threads: TThreadsConfig;
|
|
25
25
|
protected readonly workflows: TWorkflowsConfig;
|
|
26
|
+
protected tz: string;
|
|
26
27
|
protected initialize(): Promise<void>;
|
|
28
|
+
getTimezone(): string;
|
|
29
|
+
setTimezone(tz: string): void;
|
|
27
30
|
getID(): string;
|
|
28
31
|
getName(): string;
|
|
29
32
|
}
|
package/build/Application.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.Application = void 0;
|
|
4
7
|
const Module_1 = require("./base/abstracts/Module");
|
|
@@ -10,6 +13,7 @@ const MessagePack_1 = require("./plugins/MessagePack");
|
|
|
10
13
|
const JSON_1 = require("./plugins/JSON");
|
|
11
14
|
const Logger_1 = require("./plugins/Logger");
|
|
12
15
|
const winston_1 = require("winston");
|
|
16
|
+
const moment_timezone_1 = __importDefault(require("moment-timezone"));
|
|
13
17
|
class Application extends Module_1.Module {
|
|
14
18
|
constructor() {
|
|
15
19
|
super(...arguments);
|
|
@@ -57,6 +61,12 @@ class Application extends Module_1.Module {
|
|
|
57
61
|
this.processes = [];
|
|
58
62
|
this.threads = [];
|
|
59
63
|
this.workflows = [];
|
|
64
|
+
this.tz = (() => {
|
|
65
|
+
if (!process.env.TZ) {
|
|
66
|
+
process.env.TZ = moment_timezone_1.default.tz.guess();
|
|
67
|
+
}
|
|
68
|
+
return process.env.TZ;
|
|
69
|
+
})();
|
|
60
70
|
}
|
|
61
71
|
async initialize() {
|
|
62
72
|
this.setProperty('id', process.env.appId);
|
|
@@ -64,6 +74,12 @@ class Application extends Module_1.Module {
|
|
|
64
74
|
await this.container.initialize();
|
|
65
75
|
});
|
|
66
76
|
}
|
|
77
|
+
getTimezone() {
|
|
78
|
+
return this.tz;
|
|
79
|
+
}
|
|
80
|
+
setTimezone(tz) {
|
|
81
|
+
this.tz = tz;
|
|
82
|
+
}
|
|
67
83
|
getID() {
|
|
68
84
|
return process.env.appId;
|
|
69
85
|
}
|
package/build/Application.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Application.js","sourceRoot":"","sources":["../src/Application.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Application.js","sourceRoot":"","sources":["../src/Application.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA8C;AAI9C,iDAA2C;AAC3C,6CAAuC;AACvC,uDAAiD;AACjD,mDAA6C;AAC7C,uDAAiD;AACjD,yCAAmC;AAEnC,6CAAuC;AACvC,qCAA8B;AAG9B,sEAA4C;AAE5C,MAAa,WAAY,SAAQ,eAAM;IAAvC;;QAgCoB,YAAO,GAAmB;YAC5C;gBACC,KAAK,EAAE,mBAAQ;gBACf,SAAS,EAAE,CAAC;aACZ;YACD;gBACC,KAAK,EAAE,eAAM;gBACb,IAAI,EAAE,GAAG;aACT;YACD;gBACC,KAAK,EAAE,yBAAW;aAClB;YACD;gBACC,KAAK,EAAE,yBAAW;aAClB;YACD;gBACC,KAAK,EAAE,WAAI;aACX;YACD;gBACC,KAAK,EAAE,qBAAS;gBAChB,UAAU,EAAE,qBAAqB;aACjC;YACD;gBACC,KAAK,EAAE,eAAM;gBACb,KAAK,EAAE,WAAW;gBAClB,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE;oBACL,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK;oBACxB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO;iBAC5B;gBACD,OAAO,EAAE;oBACR,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,gBAAM,CAAC,OAAO,CACrB,gBAAM,CAAC,SAAS,CAAC,EAAC,MAAM,EAAE,qBAAqB,EAAC,CAAC,EACjD,gBAAM,CAAC,QAAQ,EAAE,EACjB,gBAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;wBACtB,OAAO,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,OAAO,EAAE,CAAA;oBAChE,CAAC,CAAC,CACF;iBACD;gBACD,UAAU,EAAE,EAAE;aACd;SACD,CAAA;QAOkB,eAAU,GAAsB,EAAE,CAAA;QAOlC,YAAO,GAAmB,EAAE,CAAA;QAO5B,cAAS,GAAqB,EAAE,CAAA;QAOhC,YAAO,GAAmB,EAAE,CAAA;QAO5B,cAAS,GAAqB,EAAE,CAAA;QAOzC,OAAE,GAAW,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE;gBACpB,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,yBAAc,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;aAC1C;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;QACtB,CAAC,CAAC,EAAE,CAAA;IA6CL,CAAC;IAtCU,KAAK,CAAC,UAAU;QACzB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC3B,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAA;QAClC,CAAC,CAAC,CAAA;IACH,CAAC;IAMM,WAAW;QACjB,OAAO,IAAI,CAAC,EAAE,CAAA;IACf,CAAC;IAMM,WAAW,CAAC,EAAU;QAC5B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACb,CAAC;IAMM,KAAK;QACX,OAAO,OAAO,CAAC,GAAG,CAAC,KAAe,CAAA;IACnC,CAAC;IAMM,OAAO;QACb,OAAO,OAAO,CAAC,GAAG,CAAC,OAAiB,CAAA;IACrC,CAAC;CACD;AAtKD,kCAsKC"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.getApp = exports.createApp = void 0;
|
|
7
|
+
const moment_timezone_1 = __importDefault(require("moment-timezone"));
|
|
4
8
|
require('events').captureRejections = true;
|
|
5
9
|
const Application_1 = require("./Application");
|
|
6
10
|
const FatalException_1 = require("./exceptions/FatalException");
|
|
@@ -15,6 +19,7 @@ async function createApp(config) {
|
|
|
15
19
|
process.title = config.id;
|
|
16
20
|
process.env.appId = config.id;
|
|
17
21
|
process.env.appName = config.name;
|
|
22
|
+
process.env.TZ = config.timezone ? config.timezone : moment_timezone_1.default.tz.guess();
|
|
18
23
|
await coreContainer.initialize();
|
|
19
24
|
return coreContainer.getModule(Application_1.Application);
|
|
20
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplicationManagement.js","sourceRoot":"","sources":["../src/ApplicationManagement.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ApplicationManagement.js","sourceRoot":"","sources":["../src/ApplicationManagement.ts"],"names":[],"mappings":";;;;;;AAAA,sEAA4C;AAE5C,OAAO,CAAC,QAAQ,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAA;AAE1C,+CAAyC;AACzC,gEAA0D;AAC1D,gDAA0C;AAC1C,2DAA0D;AAE1D,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gCAAiB,EAAE,OAAO,CAAC;IAAE,OAAO,CAAC,cAAc,CAAC,gCAAiB,EAAE,IAAI,qBAAS,EAAE,EAAE,OAAO,CAAC,CAAA;AAOlH,KAAK,UAAU,SAAS,CAAC,MAA0B;IACzD,IAAI;QACH,MAAM,aAAa,GAAc,OAAO,CAAC,WAAW,CAAC,gCAAiB,EAAE,OAAO,CAAC,CAAA;QAChF,aAAa,CAAC,UAAU,CAAC,yBAAW,EAAE,MAAM,CAAC,CAAA;QAC7C,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,CAAA;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,CAAA;QAC7B,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,yBAAc,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;QAC9E,MAAM,aAAa,CAAC,UAAU,EAAE,CAAA;QAChC,OAAO,aAAa,CAAC,SAAS,CAAC,yBAAW,CAAC,CAAA;KAC3C;IAAC,OAAO,CAAC,EAAE;QACX,MAAO,IAAI,+BAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;KACpC;AACF,CAAC;AAbD,8BAaC;AAMD,SAAgB,MAAM;IACrB,IAAI;QACH,MAAM,aAAa,GAAc,OAAO,CAAC,WAAW,CAAC,gCAAiB,EAAE,OAAO,CAAC,CAAA;QAChF,OAAO,aAAa,CAAC,SAAS,CAAC,yBAAW,CAAC,CAAA;KAC3C;IAAC,OAAO,CAAC,EAAE;QACX,MAAM,IAAI,+BAAc,CAAC,6BAA6B,CAAC,CAAA;KACvD;AACF,CAAC;AAPD,wBAOC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
|
-
import { ProcessClass } from '
|
|
2
|
+
import { ProcessClass } from '../../lib/multipleRunner/lib/cores/ProcessClass';
|
|
3
3
|
export declare class Process extends ProcessClass {
|
|
4
4
|
protected initialize(): Promise<void> | void;
|
|
5
5
|
protected setup(): Promise<void>;
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Process = void 0;
|
|
4
4
|
require("reflect-metadata");
|
|
5
|
-
const
|
|
6
|
-
class Process extends
|
|
5
|
+
const ProcessClass_1 = require("../../lib/multipleRunner/lib/cores/ProcessClass");
|
|
6
|
+
class Process extends ProcessClass_1.ProcessClass {
|
|
7
7
|
initialize() {
|
|
8
8
|
}
|
|
9
9
|
async setup() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Process.js","sourceRoot":"","sources":["../../../src/base/process/Process.ts"],"names":[],"mappings":";;;AAAA,4BAAyB;AACzB,
|
|
1
|
+
{"version":3,"file":"Process.js","sourceRoot":"","sources":["../../../src/base/process/Process.ts"],"names":[],"mappings":";;;AAAA,4BAAyB;AACzB,kFAA4E;AAE5E,MAAa,OAAQ,SAAQ,2BAAY;IAM9B,UAAU;IAEpB,CAAC;IAOS,KAAK,CAAC,KAAK;QACpB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;QACrC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;IACxB,CAAC;CACD;AAnBD,0BAmBC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Process } from './Process';
|
|
2
|
-
import { ProxyClass } from 'ergate';
|
|
3
2
|
import { IProcessConstructor } from '../../interfaces/IProcessConstructor';
|
|
3
|
+
import { ProxyClass } from '../../lib/multipleRunner/definitions/interfaces/ProxyClass';
|
|
4
4
|
export declare class ProcessManager<TProcess extends Process = Process> {
|
|
5
5
|
protected readonly processMap: Map<IProcessConstructor<TProcess>, TProcess & ProxyClass>;
|
|
6
6
|
createProcess(processConstructor: IProcessConstructor<TProcess>): Promise<boolean>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ProcessManager = void 0;
|
|
4
|
-
const ergate_1 = require("ergate");
|
|
5
4
|
const ProcessException_1 = require("../../exceptions/ProcessException");
|
|
5
|
+
const Process_1 = require("../../lib/multipleRunner/lib/Process");
|
|
6
6
|
class ProcessManager {
|
|
7
7
|
constructor() {
|
|
8
8
|
this.processMap = new Map();
|
|
@@ -10,7 +10,7 @@ class ProcessManager {
|
|
|
10
10
|
async createProcess(processConstructor) {
|
|
11
11
|
if (this.processMap.has(processConstructor))
|
|
12
12
|
return false;
|
|
13
|
-
const processProxy = await
|
|
13
|
+
const processProxy = await Process_1.Process(processConstructor);
|
|
14
14
|
this.processMap.set(processConstructor, processProxy);
|
|
15
15
|
return true;
|
|
16
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProcessManager.js","sourceRoot":"","sources":["../../../src/base/process/ProcessManager.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ProcessManager.js","sourceRoot":"","sources":["../../../src/base/process/ProcessManager.ts"],"names":[],"mappings":";;;AAEA,wEAAkE;AAElE,kEAA6E;AAE7E,MAAa,cAAc;IAA3B;QACoB,eAAU,GAA8D,IAAI,GAAG,EAAE,CAAA;IA8CrG,CAAC;IAvCO,KAAK,CAAC,aAAa,CAAC,kBAAiD;QAC3E,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC;YAAE,OAAO,KAAK,CAAA;QACzD,MAAM,YAAY,GAAG,MAAM,iBAAa,CAAC,kBAAkB,CAAC,CAAA;QAC5D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAA;QACrD,OAAO,IAAI,CAAA;IACZ,CAAC;IAOM,GAAG,CAAC,kBAAiD;QAC3D,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;IAC/C,CAAC;IAOM,GAAG,CAAC,kBAAiD;QAC3D,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE;YAC5C,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAa,CAAA;SAC1D;QACD,MAAM,IAAI,mCAAgB,CAAC,YAAY,kBAAkB,CAAC,IAAI,gBAAgB,CAAC,CAAA;IAChF,CAAC;IAOM,KAAK,CAAC,OAAO,CAAC,kBAAiD;;QACrE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE;YAC5C,MAAM,CAAA,MAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC,0CAAE,SAAS,EAAE,CAAA,CAAA;YAC1D,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;SAC1C;IACF,CAAC;CACD;AA/CD,wCA+CC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
|
-
import { ThreadClass } from '
|
|
2
|
+
import { ThreadClass } from '../../lib/multipleRunner/lib/cores/ThreadClass';
|
|
3
3
|
export declare class Thread extends ThreadClass {
|
|
4
4
|
protected initialize(): Promise<void> | void;
|
|
5
5
|
protected setup(): Promise<void>;
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Thread = void 0;
|
|
4
4
|
require("reflect-metadata");
|
|
5
|
-
const
|
|
6
|
-
class Thread extends
|
|
5
|
+
const ThreadClass_1 = require("../../lib/multipleRunner/lib/cores/ThreadClass");
|
|
6
|
+
class Thread extends ThreadClass_1.ThreadClass {
|
|
7
7
|
initialize() {
|
|
8
8
|
}
|
|
9
9
|
async setup() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Thread.js","sourceRoot":"","sources":["../../../src/base/thread/Thread.ts"],"names":[],"mappings":";;;AAAA,4BAAyB;AACzB,
|
|
1
|
+
{"version":3,"file":"Thread.js","sourceRoot":"","sources":["../../../src/base/thread/Thread.ts"],"names":[],"mappings":";;;AAAA,4BAAyB;AACzB,gFAA0E;AAE1E,MAAa,MAAO,SAAQ,yBAAW;IAO5B,UAAU;IAEpB,CAAC;IAOS,KAAK,CAAC,KAAK;QACpB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;IACxB,CAAC;CACD;AAnBD,wBAmBC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Thread } from './Thread';
|
|
2
2
|
import { IThreadConstructor } from '../../interfaces/IThreadConstructor';
|
|
3
|
-
import { ProxyClass } from '
|
|
3
|
+
import { ProxyClass } from '../../lib/multipleRunner/definitions/interfaces/ProxyClass';
|
|
4
4
|
export declare class ThreadManager<TThread extends Thread = Thread> {
|
|
5
5
|
protected readonly threadMap: Map<IThreadConstructor<TThread>, TThread & ProxyClass>;
|
|
6
6
|
createThread(threadConstructor: IThreadConstructor<TThread>): Promise<boolean>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ThreadManager = void 0;
|
|
4
|
-
const ergate_1 = require("ergate");
|
|
5
4
|
const ThreadException_1 = require("../../exceptions/ThreadException");
|
|
5
|
+
const Thread_1 = require("../../lib/multipleRunner/lib/Thread");
|
|
6
6
|
class ThreadManager {
|
|
7
7
|
constructor() {
|
|
8
8
|
this.threadMap = new Map();
|
|
@@ -10,7 +10,7 @@ class ThreadManager {
|
|
|
10
10
|
async createThread(threadConstructor) {
|
|
11
11
|
if (this.threadMap.has(threadConstructor))
|
|
12
12
|
return false;
|
|
13
|
-
const threadProxy = await
|
|
13
|
+
const threadProxy = await Thread_1.Thread(threadConstructor);
|
|
14
14
|
this.threadMap.set(threadConstructor, threadProxy);
|
|
15
15
|
return true;
|
|
16
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadManager.js","sourceRoot":"","sources":["../../../src/base/thread/ThreadManager.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"ThreadManager.js","sourceRoot":"","sources":["../../../src/base/thread/ThreadManager.ts"],"names":[],"mappings":";;;AAEA,sEAAgE;AAEhE,gEAA0E;AAE1E,MAAa,aAAa;IAA1B;QACoB,cAAS,GAA2D,IAAI,GAAG,EAAE,CAAA;IA8CjG,CAAC;IAvCO,KAAK,CAAC,YAAY,CAAC,iBAA8C;QACvE,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC;YAAE,OAAO,KAAK,CAAA;QACvD,MAAM,WAAW,GAAG,MAAM,eAAY,CAAC,iBAAiB,CAAC,CAAA;QACzD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAA;QAClD,OAAO,IAAI,CAAA;IACZ,CAAC;IAOM,GAAG,CAAC,iBAA8C;QACxD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IAC7C,CAAC;IAOM,GAAG,CAAC,iBAA8C;QACxD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;YAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAY,CAAA;SACvD;QACD,MAAM,IAAI,iCAAe,CAAC,WAAW,iBAAiB,CAAC,IAAI,gBAAgB,CAAC,CAAA;IAC7E,CAAC;IAOM,KAAK,CAAC,OAAO,CAAC,iBAA8C;;QAClE,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;YAC1C,MAAM,CAAA,MAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,0CAAE,SAAS,EAAE,CAAA,CAAA;YACxD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;SACxC;IACF,CAAC;CACD;AA/CD,sCA+CC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PROPERTY_CHANGE = exports.SET_PROPERTY = exports.INVOKE = exports.SETUP_ERROR = exports.READY = void 0;
|
|
4
|
+
exports.READY = '_____%$ready$%_____';
|
|
5
|
+
exports.SETUP_ERROR = '_____%$setup_error$%_____';
|
|
6
|
+
exports.INVOKE = '__%$invoke$%__';
|
|
7
|
+
exports.SET_PROPERTY = '_____%$set_property$%_____';
|
|
8
|
+
exports.PROPERTY_CHANGE = '_____%$property_change$%_____';
|
|
9
|
+
//# sourceMappingURL=Channel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Channel.js","sourceRoot":"","sources":["../../../../src/lib/multipleRunner/constants/Channel.ts"],"names":[],"mappings":";;;AAAa,QAAA,KAAK,GAAW,qBAAqB,CAAA;AACrC,QAAA,WAAW,GAAW,2BAA2B,CAAA;AACjD,QAAA,MAAM,GAAW,gBAAgB,CAAA;AACjC,QAAA,YAAY,GAAW,4BAA4B,CAAA;AACnD,QAAA,eAAe,GAAW,+BAA+B,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MULTIPLE_RUNNER__CLASS_PATH = exports.MULTIPLE_RUNNER_CLASS_NAME = void 0;
|
|
4
|
+
exports.MULTIPLE_RUNNER_CLASS_NAME = 'multipleRunner::class_name';
|
|
5
|
+
exports.MULTIPLE_RUNNER__CLASS_PATH = 'multipleRunner::class_path';
|
|
6
|
+
//# sourceMappingURL=MetadataKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetadataKey.js","sourceRoot":"","sources":["../../../../src/lib/multipleRunner/constants/MetadataKey.ts"],"names":[],"mappings":";;;AAAa,QAAA,0BAA0B,GAAW,4BAA4B,CAAA;AACjE,QAAA,2BAA2B,GAAW,4BAA4B,CAAA"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ContainerVolume = exports.THREAD_RUNTIME_CONTAINER_FILE = exports.PROCESS_RUNTIME_CONTAINER_FILE = exports.BASE_RUNTIME_CONTAINER_FILE = void 0;
|
|
4
|
+
const memfs_1 = require("memfs");
|
|
5
|
+
exports.BASE_RUNTIME_CONTAINER_FILE = '/multipleRunner/container/base/BaseRuntimeContainer.js';
|
|
6
|
+
exports.PROCESS_RUNTIME_CONTAINER_FILE = '/multipleRunner/container/ProcessRuntimeContainer.js';
|
|
7
|
+
exports.THREAD_RUNTIME_CONTAINER_FILE = '/multipleRunner/container/ThreadRuntimeContainer.js';
|
|
8
|
+
exports.ContainerVolume = memfs_1.Volume.fromJSON({
|
|
9
|
+
[exports.BASE_RUNTIME_CONTAINER_FILE]: `
|
|
10
|
+
module.exports.BaseRuntimeContainer = function (bridge) {
|
|
11
|
+
bridge.on('create', (name, path) => {
|
|
12
|
+
const module = require(path)[name]
|
|
13
|
+
const moduleInstance = new module(bridge)
|
|
14
|
+
moduleInstance.setup().then(() => {
|
|
15
|
+
const properties = {}
|
|
16
|
+
const moduleInstancePropertiesObject = {}
|
|
17
|
+
for (const propertyName of Object.keys(moduleInstance)) {
|
|
18
|
+
properties[propertyName] = typeof moduleInstance[propertyName]
|
|
19
|
+
if (propertyName !== '__bridge__')
|
|
20
|
+
moduleInstancePropertiesObject[propertyName] = moduleInstance[propertyName]
|
|
21
|
+
}
|
|
22
|
+
const moduleInstanceProxy = new Proxy(moduleInstance, {
|
|
23
|
+
set(target, p, value) {
|
|
24
|
+
moduleInstance[p] = value
|
|
25
|
+
bridge.propertyChange(p.toString(), value)
|
|
26
|
+
return true
|
|
27
|
+
}
|
|
28
|
+
})
|
|
29
|
+
bridge.onSet((property, value) => {
|
|
30
|
+
moduleInstanceProxy[property] = value
|
|
31
|
+
})
|
|
32
|
+
bridge.ready(properties, JSON.parse(JSON.stringify(moduleInstancePropertiesObject)))
|
|
33
|
+
bridge.onInvoke(async (method, args) => {
|
|
34
|
+
const _args = []
|
|
35
|
+
const callbackSignature = /^__________%\\$CALLBACK\\[\\d+]\\$%__________$/
|
|
36
|
+
for (const arg of args) {
|
|
37
|
+
if (typeof arg === 'string' && callbackSignature.test(arg)) {
|
|
38
|
+
_args.push((...args) => {
|
|
39
|
+
bridge.onCallback(arg, args)
|
|
40
|
+
})
|
|
41
|
+
} else {
|
|
42
|
+
_args.push(arg)
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return await moduleInstanceProxy[method].apply(moduleInstanceProxy, _args)
|
|
46
|
+
})
|
|
47
|
+
}).catch(setupError => {
|
|
48
|
+
bridge.setupError(setupError)
|
|
49
|
+
process.exit(1)
|
|
50
|
+
})
|
|
51
|
+
})
|
|
52
|
+
}
|
|
53
|
+
`,
|
|
54
|
+
[exports.PROCESS_RUNTIME_CONTAINER_FILE]: `
|
|
55
|
+
const reversedArgvs = process.argv.reverse()
|
|
56
|
+
require(reversedArgvs[0])
|
|
57
|
+
const {ProcessBridge} = require(reversedArgvs[0])
|
|
58
|
+
const {BaseRuntimeContainer} = require(reversedArgvs[1])
|
|
59
|
+
BaseRuntimeContainer(new ProcessBridge(process))
|
|
60
|
+
`,
|
|
61
|
+
[exports.THREAD_RUNTIME_CONTAINER_FILE]: `
|
|
62
|
+
const reversedArgvs = process.argv.reverse()
|
|
63
|
+
if(reversedArgvs[3]!=='undefined'){
|
|
64
|
+
try{require(reversedArgvs[3])}catch(e){}
|
|
65
|
+
}
|
|
66
|
+
const {parentPort} = require('worker_threads')
|
|
67
|
+
let _ThreadBridge
|
|
68
|
+
try{
|
|
69
|
+
const {ThreadBridge} = require(reversedArgvs[0])
|
|
70
|
+
_ThreadBridge = ThreadBridge
|
|
71
|
+
}catch(e){
|
|
72
|
+
const tsNodeRegExp=new RegExp("ts-node")
|
|
73
|
+
for(const reversedArgv of reversedArgvs){
|
|
74
|
+
if(tsNodeRegExp.test(reversedArgv)){
|
|
75
|
+
require(reversedArgv)
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const {ThreadBridge} = require(reversedArgvs[0])
|
|
79
|
+
_ThreadBridge = ThreadBridge
|
|
80
|
+
}
|
|
81
|
+
const {BaseRuntimeContainer} = require(reversedArgvs[1])
|
|
82
|
+
BaseRuntimeContainer(new _ThreadBridge(parentPort))
|
|
83
|
+
`
|
|
84
|
+
});
|
|
85
|
+
//# sourceMappingURL=ContainerVolume.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContainerVolume.js","sourceRoot":"","sources":["../../../../src/lib/multipleRunner/containers/ContainerVolume.ts"],"names":[],"mappings":";;;AAAA,iCAA4B;AAEf,QAAA,2BAA2B,GAAW,wDAAwD,CAAA;AAC9F,QAAA,8BAA8B,GAAW,sDAAsD,CAAA;AAC/F,QAAA,6BAA6B,GAAW,qDAAqD,CAAA;AAE7F,QAAA,eAAe,GAAG,cAAM,CAAC,QAAQ,CAAC;IAC9C,CAAC,mCAA2B,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4C3B;IACJ,CAAC,sCAA8B,CAAC,EAAE;;;;;;KAM9B;IACJ,CAAC,qCAA6B,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;KAsB7B;CACJ,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassConstructor.js","sourceRoot":"","sources":["../../../../../src/lib/multipleRunner/definitions/interfaces/ClassConstructor.ts"],"names":[],"mappings":""}
|
package/build/lib/multipleRunner/definitions/interfaces/MultipleRunnerBaseClassConstructor.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultipleRunnerBaseClassConstructor.js","sourceRoot":"","sources":["../../../../../src/lib/multipleRunner/definitions/interfaces/MultipleRunnerBaseClassConstructor.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ProcessClass } from '../../lib/cores/ProcessClass';
|
|
2
|
+
import { ClassConstructor } from './ClassConstructor';
|
|
3
|
+
export interface ProcessClassConstructor<T extends ProcessClass> extends ClassConstructor<T> {
|
|
4
|
+
new (...args: any[]): T;
|
|
5
|
+
CLASS_PATH: string;
|
|
6
|
+
CLASS_NAME: string;
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProcessClassConstructor.js","sourceRoot":"","sources":["../../../../../src/lib/multipleRunner/definitions/interfaces/ProcessClassConstructor.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProxyClass.js","sourceRoot":"","sources":["../../../../../src/lib/multipleRunner/definitions/interfaces/ProxyClass.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ThreadClass } from '../../lib/cores/ThreadClass';
|
|
2
|
+
import { ClassConstructor } from './ClassConstructor';
|
|
3
|
+
export interface ThreadClassConstructor<T extends ThreadClass> extends ClassConstructor<T> {
|
|
4
|
+
new (...args: any[]): T;
|
|
5
|
+
CLASS_PATH: string;
|
|
6
|
+
CLASS_NAME: string;
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThreadClassConstructor.js","sourceRoot":"","sources":["../../../../../src/lib/multipleRunner/definitions/interfaces/ThreadClassConstructor.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { ProcessClassConstructor } from '../definitions/interfaces/ProcessClassConstructor';
|
|
3
|
+
import { ProcessClass } from './cores/ProcessClass';
|
|
4
|
+
import { ProxyClass } from '../definitions/interfaces/ProxyClass';
|
|
5
|
+
export declare function Process<T extends ProcessClass>(processClassConstructor: ProcessClassConstructor<T>): Promise<T & ProxyClass>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Process = void 0;
|
|
7
|
+
require("reflect-metadata");
|
|
8
|
+
const child_process_1 = require("child_process");
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const GenerateExecArgv_1 = require("./cores/GenerateExecArgv");
|
|
11
|
+
const ProcessBridge_1 = require("./bridges/ProcessBridge");
|
|
12
|
+
const UniParentBridgeHandler_1 = require("./cores/UniParentBridgeHandler");
|
|
13
|
+
const ContainerVolume_1 = require("../containers/ContainerVolume");
|
|
14
|
+
const fs_1 = __importDefault(require("fs"));
|
|
15
|
+
const os_1 = __importDefault(require("os"));
|
|
16
|
+
async function Process(processClassConstructor) {
|
|
17
|
+
return new Promise((resolve, reject) => {
|
|
18
|
+
ProcessProxy(processClassConstructor, (setupError, instance) => {
|
|
19
|
+
if (setupError) {
|
|
20
|
+
reject(setupError);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
resolve(instance);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
exports.Process = Process;
|
|
29
|
+
function ProcessProxy(processClassConstructor, callback) {
|
|
30
|
+
const className = processClassConstructor.CLASS_NAME;
|
|
31
|
+
const classPath = processClassConstructor.CLASS_PATH;
|
|
32
|
+
const tmpProcessRuntimeContainerFilename = path_1.default.resolve(os_1.default.tmpdir(), `./PRC_TMP_${Date.now()}.tmp`);
|
|
33
|
+
const tmpBaseRuntimeContainerFilename = path_1.default.resolve(os_1.default.tmpdir(), `./PBRC_TMP_${Date.now()}.tmp`);
|
|
34
|
+
fs_1.default.writeFileSync(tmpBaseRuntimeContainerFilename, ContainerVolume_1.ContainerVolume.readFileSync(ContainerVolume_1.BASE_RUNTIME_CONTAINER_FILE).toString());
|
|
35
|
+
fs_1.default.writeFileSync(tmpProcessRuntimeContainerFilename, ContainerVolume_1.ContainerVolume.readFileSync(ContainerVolume_1.PROCESS_RUNTIME_CONTAINER_FILE).toString());
|
|
36
|
+
const childProcess = child_process_1.fork(tmpProcessRuntimeContainerFilename, [
|
|
37
|
+
tmpBaseRuntimeContainerFilename,
|
|
38
|
+
require.resolve(path_1.default.resolve(__dirname, './bridges/ProcessBridge'))
|
|
39
|
+
], {
|
|
40
|
+
execArgv: GenerateExecArgv_1.GenerateExecArgv(classPath)
|
|
41
|
+
});
|
|
42
|
+
UniParentBridgeHandler_1.UniParentBridgeHandler(new ProcessBridge_1.ProcessBridge(childProcess), className, classPath, processClassConstructor, callback);
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=Process.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Process.js","sourceRoot":"","sources":["../../../../src/lib/multipleRunner/lib/Process.ts"],"names":[],"mappings":";;;;;;AAAA,4BAAyB;AAEzB,iDAAgD;AAChD,gDAAuB;AACvB,+DAAyD;AACzD,2DAAqD;AAErD,2EAAqE;AAErE,mEAIsC;AACtC,4CAAmB;AACnB,4CAAmB;AAEZ,KAAK,UAAU,OAAO,CAAyB,uBAAmD;IACrG,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,YAAY,CAAC,uBAAuB,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE;YAC3D,IAAI,UAAU,EAAE;gBACZ,MAAM,CAAC,UAAU,CAAC,CAAA;aACrB;iBAAM;gBACH,OAAO,CAAiB,QAAQ,CAAC,CAAA;aACpC;QACL,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC;AAVD,0BAUC;AAED,SAAS,YAAY,CAAyB,uBAAmD,EAAE,QAAkD;IACjJ,MAAM,SAAS,GAAW,uBAAuB,CAAC,UAAU,CAAA;IAC5D,MAAM,SAAS,GAAW,uBAAuB,CAAC,UAAU,CAAA;IAC5D,MAAM,kCAAkC,GAAW,cAAI,CAAC,OAAO,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,aAAa,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAC3G,MAAM,+BAA+B,GAAW,cAAI,CAAC,OAAO,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,cAAc,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IACzG,YAAE,CAAC,aAAa,CAAC,+BAA+B,EAAE,iCAAe,CAAC,YAAY,CAAC,6CAA2B,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;IACvH,YAAE,CAAC,aAAa,CAAC,kCAAkC,EAAE,iCAAe,CAAC,YAAY,CAAC,gDAA8B,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC7H,MAAM,YAAY,GAAiB,oBAAI,CAAC,kCAAkC,EAAE;QACxE,+BAA+B;QAC/B,OAAO,CAAC,OAAO,CAAC,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;KACtE,EAAE;QACC,QAAQ,EAAE,mCAAgB,CAAC,SAAS,CAAC;KACxC,CAAC,CAAA;IACF,+CAAsB,CAAC,IAAI,6BAAa,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,uBAAuB,EAAE,QAAQ,CAAC,CAAA;AACpH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { ThreadClassConstructor } from '../definitions/interfaces/ThreadClassConstructor';
|
|
3
|
+
import { ThreadClass } from './cores/ThreadClass';
|
|
4
|
+
import { ProxyClass } from '../definitions/interfaces/ProxyClass';
|
|
5
|
+
export declare function Thread<T extends ThreadClass>(threadClassConstructor: ThreadClassConstructor<T>): Promise<T & ProxyClass>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Thread = void 0;
|
|
7
|
+
require("reflect-metadata");
|
|
8
|
+
const worker_threads_1 = require("worker_threads");
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const ThreadBridge_1 = require("./bridges/ThreadBridge");
|
|
11
|
+
const GenerateExecArgv_1 = require("./cores/GenerateExecArgv");
|
|
12
|
+
const UniParentBridgeHandler_1 = require("./cores/UniParentBridgeHandler");
|
|
13
|
+
const os_1 = __importDefault(require("os"));
|
|
14
|
+
const fs_1 = __importDefault(require("fs"));
|
|
15
|
+
const ContainerVolume_1 = require("../containers/ContainerVolume");
|
|
16
|
+
const Process_1 = require("./Process");
|
|
17
|
+
const IsElectron_1 = require("./cores/IsElectron");
|
|
18
|
+
async function Thread(threadClassConstructor) {
|
|
19
|
+
if (IsElectron_1.isElectron()) {
|
|
20
|
+
return await Process_1.Process(threadClassConstructor);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
return new Promise((resolve, reject) => {
|
|
24
|
+
ThreadProxy(threadClassConstructor, (setupError, instance) => {
|
|
25
|
+
if (setupError) {
|
|
26
|
+
reject(setupError);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
resolve(instance);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.Thread = Thread;
|
|
36
|
+
function ThreadProxy(threadClassConstructor, callback) {
|
|
37
|
+
const className = threadClassConstructor.CLASS_NAME;
|
|
38
|
+
const classPath = threadClassConstructor.CLASS_PATH;
|
|
39
|
+
const tmpBaseRuntimeContainerFilename = path_1.default.resolve(os_1.default.tmpdir(), `./TBRC_TMP_${Date.now()}.tmp`);
|
|
40
|
+
fs_1.default.writeFileSync(tmpBaseRuntimeContainerFilename, ContainerVolume_1.ContainerVolume.readFileSync(ContainerVolume_1.BASE_RUNTIME_CONTAINER_FILE).toString());
|
|
41
|
+
const exeArgv = GenerateExecArgv_1.GenerateExecArgv(classPath).reverse();
|
|
42
|
+
const worker = new worker_threads_1.Worker(ContainerVolume_1.ContainerVolume.readFileSync(ContainerVolume_1.THREAD_RUNTIME_CONTAINER_FILE).toString(), {
|
|
43
|
+
eval: true,
|
|
44
|
+
argv: [
|
|
45
|
+
exeArgv.length > 0 ? exeArgv[0] : 'undefined',
|
|
46
|
+
tmpBaseRuntimeContainerFilename,
|
|
47
|
+
require.resolve(path_1.default.resolve(__dirname, './bridges/ThreadBridge'))
|
|
48
|
+
]
|
|
49
|
+
});
|
|
50
|
+
UniParentBridgeHandler_1.UniParentBridgeHandler(new ThreadBridge_1.ThreadBridge(worker), className, classPath, threadClassConstructor, callback);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=Thread.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Thread.js","sourceRoot":"","sources":["../../../../src/lib/multipleRunner/lib/Thread.ts"],"names":[],"mappings":";;;;;;AAAA,4BAAyB;AAGzB,mDAAqC;AACrC,gDAAuB;AACvB,yDAAmD;AACnD,+DAAyD;AACzD,2EAAqE;AAErE,4CAAmB;AACnB,4CAAmB;AACnB,mEAIsC;AACtC,uCAAiC;AACjC,mDAA6C;AAEtC,KAAK,UAAU,MAAM,CAAwB,sBAAiD;IACpG,IAAI,uBAAU,EAAE,EAAE;QACjB,OAAO,MAAM,iBAAO,CAAC,sBAA6B,CAAQ,CAAA;KAC1D;SAAM;QACN,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtC,WAAW,CAAC,sBAAsB,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE;gBAC5D,IAAI,UAAU,EAAE;oBACf,MAAM,CAAC,UAAU,CAAC,CAAA;iBAClB;qBAAM;oBACN,OAAO,CAAiB,QAAQ,CAAC,CAAA;iBACjC;YACF,CAAC,CAAC,CAAA;QACH,CAAC,CAAC,CAAA;KACF;AACF,CAAC;AAdD,wBAcC;AAED,SAAS,WAAW,CAAwB,sBAAiD,EAAE,QAAkD;IAChJ,MAAM,SAAS,GAAW,sBAAsB,CAAC,UAAU,CAAA;IAC3D,MAAM,SAAS,GAAW,sBAAsB,CAAC,UAAU,CAAA;IAC3D,MAAM,+BAA+B,GAAW,cAAI,CAAC,OAAO,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,cAAc,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IACzG,YAAE,CAAC,aAAa,CAAC,+BAA+B,EAAE,iCAAe,CAAC,YAAY,CAAC,6CAA2B,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;IACvH,MAAM,OAAO,GAAG,mCAAgB,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAA;IACrD,MAAM,MAAM,GAAW,IAAI,uBAAM,CAAC,iCAAe,CAAC,YAAY,CAAC,+CAA6B,CAAC,CAAC,QAAQ,EAAE,EAAE;QACzG,IAAI,EAAE,IAAI;QACV,IAAI,EAAE;YACL,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW;YAC7C,+BAA+B;YAC/B,OAAO,CAAC,OAAO,CAAC,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;SAClE;KACD,CAAC,CAAA;IAEF,+CAAsB,CAAC,IAAI,2BAAY,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,sBAAsB,EAAE,QAAQ,CAAC,CAAA;AACzG,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { EventEmitter } from 'events';
|
|
3
|
+
export declare class BaseBridge {
|
|
4
|
+
protected readonly eventEmitter: EventEmitter;
|
|
5
|
+
protected readonly bridge: any;
|
|
6
|
+
constructor(bridgeObject: any);
|
|
7
|
+
off(channel: string): this;
|
|
8
|
+
on(channel: string, listener: (...args: any[]) => void): this;
|
|
9
|
+
once(channel: string, listener: (...args: any[]) => void): this;
|
|
10
|
+
send(channel: string, ...args: any[]): void;
|
|
11
|
+
ready(properties: {
|
|
12
|
+
[key: string]: any;
|
|
13
|
+
}, propertyValues: {
|
|
14
|
+
[key: string]: any;
|
|
15
|
+
}): this;
|
|
16
|
+
onReady(callback: (properties: {
|
|
17
|
+
[key: string]: any;
|
|
18
|
+
}, propertyValues: {
|
|
19
|
+
[key: string]: any;
|
|
20
|
+
}) => void): this;
|
|
21
|
+
error(error: Error): void;
|
|
22
|
+
setupError(error: Error): void;
|
|
23
|
+
invoke(method: string, args: Array<any>): Promise<unknown>;
|
|
24
|
+
onInvoke(handler: (method: string, args: Array<any>) => Promise<any>): void;
|
|
25
|
+
set(property: string, value: any): this;
|
|
26
|
+
onSet(handler: (property: string, value: any) => void): this;
|
|
27
|
+
propertyChange(property: string, value: any): this;
|
|
28
|
+
onPropertyChanged(handler: (property: string, value: any) => void): this;
|
|
29
|
+
callbackHandler(thisArg: any, handler: (...args: any[]) => any): string;
|
|
30
|
+
onCallback(callbackEvtName: string, args: any[]): this;
|
|
31
|
+
terminate(): Promise<void>;
|
|
32
|
+
}
|