@3fv/electron-utility-process-manager 1.0.1 → 1.0.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.
- package/README.md +39 -26
- package/examples/lib-examples/simple/simple-main.js +9 -2
- package/examples/lib-examples/simple/simple-main.js.map +1 -1
- package/examples/lib-examples/simple/simple-renderer.js +1 -1
- package/examples/lib-examples/simple/simple-renderer.js.map +1 -1
- package/lib/cjs/common/clients.d.ts +5 -1
- package/lib/cjs/common/clients.js +11 -11
- package/lib/cjs/common/clients.js.map +1 -1
- package/lib/cjs/common/guards.d.ts +1 -1
- package/lib/cjs/common/index.d.ts +3 -3
- package/lib/cjs/common/index.js +3 -3
- package/lib/cjs/common/index.js.map +1 -1
- package/lib/cjs/common/types.d.ts +23 -1
- package/lib/cjs/common/types.js.map +1 -1
- package/lib/cjs/index.d.ts +2 -2
- package/lib/cjs/index.js +2 -2
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/main/UPMMainService.d.ts +111 -29
- package/lib/cjs/main/UPMMainService.js +250 -136
- package/lib/cjs/main/UPMMainService.js.map +1 -1
- package/lib/cjs/main/UPMMainServiceManager.d.ts +4 -3
- package/lib/cjs/main/UPMMainServiceManager.js +6 -6
- package/lib/cjs/main/UPMMainServiceManager.js.map +1 -1
- package/lib/cjs/main/index.d.ts +2 -2
- package/lib/cjs/main/index.js +2 -2
- package/lib/cjs/main/index.js.map +1 -1
- package/lib/cjs/node/UPMNodeProcess.d.ts +4 -4
- package/lib/cjs/node/UPMNodeProcess.js +1 -1
- package/lib/cjs/node/UPMNodeProcess.js.map +1 -1
- package/lib/cjs/node/index.d.ts +2 -2
- package/lib/cjs/node/index.js +3 -3
- package/lib/cjs/node/index.js.map +1 -1
- package/lib/cjs/renderer/UPMRendererClientFactory.d.ts +1 -1
- package/lib/cjs/renderer/UPMRendererClientFactory.js +1 -1
- package/lib/cjs/renderer/UPMRendererClientFactory.js.map +1 -1
- package/lib/cjs/renderer/index.d.ts +2 -2
- package/lib/cjs/renderer/index.js +3 -3
- package/lib/cjs/renderer/index.js.map +1 -1
- package/lib/mjs/common/clients.d.ts +5 -1
- package/lib/mjs/common/clients.js +3 -3
- package/lib/mjs/common/clients.js.map +1 -1
- package/lib/mjs/common/guards.d.ts +1 -1
- package/lib/mjs/common/index.d.ts +3 -3
- package/lib/mjs/common/index.js +3 -3
- package/lib/mjs/common/index.js.map +1 -1
- package/lib/mjs/common/types.d.ts +23 -1
- package/lib/mjs/common/types.js.map +1 -1
- package/lib/mjs/index.d.ts +2 -2
- package/lib/mjs/index.js +2 -2
- package/lib/mjs/index.js.map +1 -1
- package/lib/mjs/main/UPMMainService.d.ts +111 -29
- package/lib/mjs/main/UPMMainService.js +252 -138
- package/lib/mjs/main/UPMMainService.js.map +1 -1
- package/lib/mjs/main/UPMMainServiceManager.d.ts +4 -3
- package/lib/mjs/main/UPMMainServiceManager.js +6 -6
- package/lib/mjs/main/UPMMainServiceManager.js.map +1 -1
- package/lib/mjs/main/index.d.ts +2 -2
- package/lib/mjs/main/index.js +2 -2
- package/lib/mjs/main/index.js.map +1 -1
- package/lib/mjs/node/UPMNodeProcess.d.ts +4 -4
- package/lib/mjs/node/UPMNodeProcess.js +1 -1
- package/lib/mjs/node/UPMNodeProcess.js.map +1 -1
- package/lib/mjs/node/index.d.ts +2 -2
- package/lib/mjs/node/index.js +2 -2
- package/lib/mjs/node/index.js.map +1 -1
- package/lib/mjs/renderer/UPMRendererClientFactory.d.ts +1 -1
- package/lib/mjs/renderer/UPMRendererClientFactory.js +1 -1
- package/lib/mjs/renderer/UPMRendererClientFactory.js.map +1 -1
- package/lib/mjs/renderer/index.d.ts +2 -2
- package/lib/mjs/renderer/index.js +2 -2
- package/lib/mjs/renderer/index.js.map +1 -1
- package/package.json +10 -3
|
@@ -1,68 +1,66 @@
|
|
|
1
1
|
import { app, MessageChannelMain, utilityProcess } from "electron";
|
|
2
|
-
import { assert, getValue, isString } from "@3fv/guard";
|
|
2
|
+
import { assert, getValue, isNumber, isString } from "@3fv/guard";
|
|
3
3
|
import Fsx from "fs-extra";
|
|
4
4
|
import { Deferred } from "@3fv/deferred";
|
|
5
|
-
import * as UPM from "../common";
|
|
6
|
-
import { isEmpty, negate } from "lodash";
|
|
5
|
+
import * as UPM from "../common/index.js";
|
|
6
|
+
import { defaults, isEmpty, negate } from "lodash";
|
|
7
7
|
import Tracer from "tracer";
|
|
8
|
+
import { asOption } from "@3fv/prelude-ts";
|
|
9
|
+
import { match } from "ts-pattern";
|
|
8
10
|
const log = Tracer.colorConsole();
|
|
9
11
|
const isNotEmpty = negate(isEmpty);
|
|
12
|
+
/**
|
|
13
|
+
* Contains & Manages a `Utility/Process`
|
|
14
|
+
* providing simplified messaging & event
|
|
15
|
+
* propagation.
|
|
16
|
+
*/
|
|
10
17
|
export class UPMMainService {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
this.childProcess_.off("exit", exitListener);
|
|
25
|
-
this.childProcess_.on("message", this.onMessage.bind(this));
|
|
26
|
-
deferred.resolve(this);
|
|
27
|
-
};
|
|
28
|
-
this.childProcess_ = utilityProcess
|
|
29
|
-
.fork(this.entryFile, [], {
|
|
30
|
-
serviceName: this.serviceName,
|
|
31
|
-
env: Object.assign(Object.assign({}, process.env), { IN_CHILD_PROCESS: "true", APP_NAME: app.name })
|
|
32
|
-
})
|
|
33
|
-
.on("spawn", spawnListener)
|
|
34
|
-
.on("exit", exitListener);
|
|
35
|
-
await deferred.promise;
|
|
36
|
-
}
|
|
37
|
-
catch (err) {
|
|
38
|
-
deferred.reject(err);
|
|
39
|
-
}
|
|
40
|
-
return deferred.promise;
|
|
18
|
+
/**
|
|
19
|
+
* Send an event as `fire-and-forget`
|
|
20
|
+
*
|
|
21
|
+
* @param data
|
|
22
|
+
* @param port
|
|
23
|
+
*/
|
|
24
|
+
sendEvent(data, port = this.childProcess_) {
|
|
25
|
+
const messageId = this.generateMessageId();
|
|
26
|
+
const payload = {
|
|
27
|
+
channel: UPM.IPCChannel.UPMServiceMessage,
|
|
28
|
+
payload: { messageId, eventData: data, kind: UPM.MessageKind.Event }
|
|
29
|
+
};
|
|
30
|
+
port.postMessage(payload);
|
|
41
31
|
}
|
|
42
|
-
|
|
43
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Send request
|
|
34
|
+
*
|
|
35
|
+
* @param type
|
|
36
|
+
* @param args
|
|
37
|
+
*/
|
|
38
|
+
async executeRequest(type, ...args) {
|
|
39
|
+
assert(!!this.childProcess_, "The process is not running");
|
|
40
|
+
const messageId = this.generateMessageId(), pending = {
|
|
41
|
+
deferred: new Deferred(),
|
|
42
|
+
messageId,
|
|
43
|
+
timeoutId: setTimeout(() => this.removePendingMessage(messageId), UPM.Defaults.RequestTimeout)
|
|
44
|
+
};
|
|
45
|
+
this.pendingMessages_.set(messageId, pending);
|
|
46
|
+
const payload = {
|
|
47
|
+
channel: UPM.IPCChannel.UPMServiceMessage,
|
|
48
|
+
payload: { type, messageId, args, kind: UPM.MessageKind.Request }
|
|
49
|
+
};
|
|
50
|
+
this.childProcess_.postMessage(payload);
|
|
44
51
|
try {
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
if (pending.deferred.isSettled()) {
|
|
51
|
-
log.error(`Already settled record ${messageId}`);
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
this.removePendingMessage(messageId);
|
|
55
|
-
if (!!error) {
|
|
56
|
-
log.error(error);
|
|
57
|
-
pending.deferred.reject(new Error(error));
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
pending.deferred.resolve(result);
|
|
52
|
+
const result = await pending.deferred.promise;
|
|
53
|
+
log.debug(`Completed utility request (messageId=${messageId})`);
|
|
54
|
+
return result;
|
|
61
55
|
}
|
|
62
56
|
catch (err) {
|
|
63
|
-
log.error(`Failed
|
|
57
|
+
log.error(`Failed utility request (messageId=${messageId})`, err);
|
|
58
|
+
throw err;
|
|
64
59
|
}
|
|
65
60
|
}
|
|
61
|
+
close() {
|
|
62
|
+
log.warn("Close has no effect when called via the main process");
|
|
63
|
+
}
|
|
66
64
|
/**
|
|
67
65
|
* Resolves when ready
|
|
68
66
|
*
|
|
@@ -86,6 +84,22 @@ export class UPMMainService {
|
|
|
86
84
|
}
|
|
87
85
|
});
|
|
88
86
|
}
|
|
87
|
+
onServiceExit(code) {
|
|
88
|
+
log.warn(`Service Exit (code=${code})`);
|
|
89
|
+
let deferred = this.killDeferred_;
|
|
90
|
+
if (deferred) {
|
|
91
|
+
if (!deferred.isSettled()) {
|
|
92
|
+
deferred.resolve(code);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
log.warn(`kill deferred is already settled (code=${code})`);
|
|
96
|
+
}
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
this.killDeferred_ = Deferred.resolve(code);
|
|
100
|
+
this.cancelAllPendingMessages();
|
|
101
|
+
this.removeAllMessageChannels();
|
|
102
|
+
}
|
|
89
103
|
/**
|
|
90
104
|
* Returned client side port (for Renderer)
|
|
91
105
|
* @param clientId
|
|
@@ -98,8 +112,7 @@ export class UPMMainService {
|
|
|
98
112
|
try {
|
|
99
113
|
this.childProcess_.postMessage({
|
|
100
114
|
message: {
|
|
101
|
-
channel: UPM.IPCChannel.UPMServiceNewClient,
|
|
102
|
-
payload: { clientId }
|
|
115
|
+
channel: UPM.IPCChannel.UPMServiceNewClient, payload: { clientId }
|
|
103
116
|
}
|
|
104
117
|
}, [port1]);
|
|
105
118
|
}
|
|
@@ -115,97 +128,162 @@ export class UPMMainService {
|
|
|
115
128
|
* (useful to avoid congestion on default child_process channel)
|
|
116
129
|
*
|
|
117
130
|
* @param {string} clientId
|
|
118
|
-
* @returns {UPM.MessagePortClient
|
|
131
|
+
* @returns {UPM.MessagePortClient}
|
|
119
132
|
*/
|
|
120
133
|
createMainClient(clientId) {
|
|
121
134
|
return new UPM.MessagePortClient(clientId, this.createMessageChannel(clientId));
|
|
122
135
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
136
|
+
/**
|
|
137
|
+
* Service is still in a healthy/running/runnable state
|
|
138
|
+
*/
|
|
139
|
+
get isRunning() {
|
|
140
|
+
return !this.killDeferred_;
|
|
126
141
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
;
|
|
132
|
-
[channel.port1, channel.port2].forEach(p => getValue(() => p.close()));
|
|
142
|
+
/**
|
|
143
|
+
* Stop the service (kill)
|
|
144
|
+
*/
|
|
145
|
+
async stop() {
|
|
146
|
+
await this.kill();
|
|
133
147
|
}
|
|
134
|
-
|
|
135
|
-
|
|
148
|
+
/**
|
|
149
|
+
* Resource management & cleanup
|
|
150
|
+
*/
|
|
151
|
+
async [Symbol.asyncDispose]() {
|
|
152
|
+
await this.stop();
|
|
136
153
|
}
|
|
137
154
|
/**
|
|
138
|
-
*
|
|
155
|
+
* Initialize the service
|
|
139
156
|
*
|
|
140
|
-
* @
|
|
141
|
-
* @param port
|
|
157
|
+
* @private
|
|
142
158
|
*/
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
159
|
+
async init() {
|
|
160
|
+
let deferred = this.readyDeferred_;
|
|
161
|
+
if (deferred) {
|
|
162
|
+
return deferred.promise;
|
|
163
|
+
}
|
|
164
|
+
deferred = this.readyDeferred_ = new Deferred();
|
|
165
|
+
try {
|
|
166
|
+
const exitListener = (code) => {
|
|
167
|
+
if (code !== 0) {
|
|
168
|
+
deferred.reject(new Error(`process exited with code ${code} upon starting`));
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
const spawnListener = async () => {
|
|
172
|
+
this.childProcess_.off("exit", exitListener);
|
|
173
|
+
this.childProcess_.on("exit", this.onServiceExit.bind(this));
|
|
174
|
+
this.childProcess_.on("message", this.onMessage.bind(this));
|
|
175
|
+
deferred.resolve(this);
|
|
176
|
+
};
|
|
177
|
+
// BUILD ADDITIONAL FORK OPTIONS
|
|
178
|
+
const childProcessOptions = asOption(this.config_.inspect)
|
|
179
|
+
.filter(it => it !== false)
|
|
180
|
+
.map(it => ({
|
|
181
|
+
execArgv: [
|
|
182
|
+
match(it)
|
|
183
|
+
.when(isNumber, port => `--inspect=${port}`)
|
|
184
|
+
.otherwise(({ port, break: shouldBreak }) => {
|
|
185
|
+
const ext = shouldBreak ? "-brk" : "";
|
|
186
|
+
return `--inspect${ext}=${port}`;
|
|
187
|
+
})
|
|
188
|
+
]
|
|
189
|
+
}))
|
|
190
|
+
.getOrElse({});
|
|
191
|
+
// FORK
|
|
192
|
+
this.childProcess_ = utilityProcess
|
|
193
|
+
.fork(this.entryFile, [], Object.assign(Object.assign({}, childProcessOptions), { serviceName: this.serviceName, env: Object.assign(Object.assign({}, process.env), { IN_CHILD_PROCESS: "true", APP_NAME: app.name }) }))
|
|
194
|
+
.on("spawn", spawnListener)
|
|
195
|
+
.on("exit", exitListener);
|
|
196
|
+
await deferred.promise;
|
|
197
|
+
}
|
|
198
|
+
catch (err) {
|
|
199
|
+
deferred.reject(err);
|
|
200
|
+
}
|
|
201
|
+
return deferred.promise;
|
|
150
202
|
}
|
|
151
203
|
/**
|
|
152
|
-
*
|
|
204
|
+
* OnMessage really only handles `results` from
|
|
205
|
+
* `executeRequest(...)`; this may be expanded in
|
|
206
|
+
* the future
|
|
153
207
|
*
|
|
154
|
-
* @param
|
|
155
|
-
* @
|
|
208
|
+
* @param payload
|
|
209
|
+
* @private
|
|
156
210
|
*/
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
const messageId = this.generateMessageId(), pending = {
|
|
160
|
-
deferred: new Deferred(),
|
|
161
|
-
messageId,
|
|
162
|
-
timeoutId: setTimeout(() => this.removePendingMessage(messageId), UPM.Defaults.RequestTimeout)
|
|
163
|
-
};
|
|
164
|
-
this.pendingMessages_.set(messageId, pending);
|
|
165
|
-
const payload = {
|
|
166
|
-
channel: UPM.IPCChannel.UPMServiceMessage,
|
|
167
|
-
payload: { type, messageId, args, kind: UPM.MessageKind.Request }
|
|
168
|
-
};
|
|
169
|
-
this.childProcess_.postMessage(payload);
|
|
211
|
+
onMessage(payload) {
|
|
212
|
+
const { messageId, result, error } = payload;
|
|
170
213
|
try {
|
|
171
|
-
const
|
|
172
|
-
|
|
173
|
-
|
|
214
|
+
const pending = this.pendingMessages_.get(messageId);
|
|
215
|
+
if (!pending) {
|
|
216
|
+
log.info(`Unable to find pending record ${messageId}`);
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
if (pending.deferred.isSettled()) {
|
|
220
|
+
log.error(`Already settled record ${messageId}`);
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
this.removePendingMessage(messageId);
|
|
224
|
+
if (!!error) {
|
|
225
|
+
log.error(error);
|
|
226
|
+
pending.deferred.reject(new Error(error));
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
pending.deferred.resolve(result);
|
|
174
230
|
}
|
|
175
231
|
catch (err) {
|
|
176
|
-
log.error(`Failed
|
|
177
|
-
throw err;
|
|
232
|
+
log.error(`Failed to handle message`, err);
|
|
178
233
|
}
|
|
179
234
|
}
|
|
180
|
-
|
|
181
|
-
|
|
235
|
+
/**
|
|
236
|
+
* This handler is currently unused, but
|
|
237
|
+
* could be attached to a `MessagePort.on('close')`
|
|
238
|
+
* event
|
|
239
|
+
*
|
|
240
|
+
* @param id
|
|
241
|
+
* @param channel
|
|
242
|
+
* @private
|
|
243
|
+
*/
|
|
244
|
+
// noinspection JSUnusedLocalSymbols
|
|
245
|
+
onPortClose(id, channel) {
|
|
246
|
+
log.info(`main side of message channel(id=${id}) closed`);
|
|
247
|
+
this.closeMessageChannel(id, channel);
|
|
182
248
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
249
|
+
/**
|
|
250
|
+
* Close a message channel
|
|
251
|
+
*
|
|
252
|
+
* @param id
|
|
253
|
+
* @param channel
|
|
254
|
+
* @private
|
|
255
|
+
*/
|
|
256
|
+
closeMessageChannel(id, channel) {
|
|
257
|
+
if (this.messageChannels_.has(id)) {
|
|
258
|
+
this.messageChannels_.delete(id);
|
|
190
259
|
}
|
|
191
|
-
|
|
192
|
-
|
|
260
|
+
Array(channel.port1, channel.port2)
|
|
261
|
+
.forEach(p => {
|
|
262
|
+
getValue(() => p.close());
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Kill the service
|
|
267
|
+
*
|
|
268
|
+
* @private
|
|
269
|
+
*/
|
|
270
|
+
async kill() {
|
|
271
|
+
var _a, _b;
|
|
272
|
+
if (!this.readyDeferred_ ||
|
|
273
|
+
!this.readyDeferred_.isSettled() ||
|
|
274
|
+
!this.childProcess_ ||
|
|
275
|
+
this.killDeferred_) {
|
|
276
|
+
log.error("Service is not ready OR the process is not running");
|
|
277
|
+
// noinspection ES6MissingAwait
|
|
278
|
+
return (_b = (_a = this.killDeferred_) === null || _a === void 0 ? void 0 : _a.promise) !== null && _b !== void 0 ? _b : Promise.resolve(0);
|
|
193
279
|
}
|
|
280
|
+
let killDeferred = this.killDeferred_ = new Deferred();
|
|
281
|
+
// GET THE PROCESS
|
|
194
282
|
const process = this.childProcess_;
|
|
195
|
-
|
|
196
|
-
log.error("The process is not running");
|
|
197
|
-
return 0;
|
|
198
|
-
}
|
|
283
|
+
// CANCEL ALL PENDING MESSAGES & REMOVE ALL CHANNELS
|
|
199
284
|
this.cancelAllPendingMessages();
|
|
200
285
|
this.removeAllMessageChannels();
|
|
201
|
-
killDeferred = this.killDeferred_ = new Deferred();
|
|
202
286
|
try {
|
|
203
|
-
process.once("exit", (code) => {
|
|
204
|
-
if (code !== 0) {
|
|
205
|
-
log.error(`Process exited with code ${code} upon stopping`);
|
|
206
|
-
}
|
|
207
|
-
killDeferred.resolve(code);
|
|
208
|
-
});
|
|
209
287
|
process.kill();
|
|
210
288
|
}
|
|
211
289
|
catch (err) {
|
|
@@ -214,32 +292,33 @@ export class UPMMainService {
|
|
|
214
292
|
}
|
|
215
293
|
return await killDeferred.promise;
|
|
216
294
|
}
|
|
295
|
+
/**
|
|
296
|
+
* Close all message channels
|
|
297
|
+
*
|
|
298
|
+
* @private
|
|
299
|
+
*/
|
|
217
300
|
removeAllMessageChannels() {
|
|
218
301
|
for (const [id, channel] of [...this.messageChannels_.entries()]) {
|
|
219
302
|
this.closeMessageChannel(id, channel);
|
|
220
303
|
}
|
|
221
304
|
}
|
|
305
|
+
/**
|
|
306
|
+
* Remove all pending messages
|
|
307
|
+
*
|
|
308
|
+
* @private
|
|
309
|
+
*/
|
|
222
310
|
cancelAllPendingMessages() {
|
|
223
311
|
for (const key of [...this.pendingMessages_.keys()]) {
|
|
224
312
|
this.removePendingMessage(key);
|
|
225
313
|
}
|
|
226
314
|
}
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
this.pendingMessages_ = new Map();
|
|
235
|
-
this.messageChannels_ = new Map();
|
|
236
|
-
//super()
|
|
237
|
-
assert(isString(entryFile) && isNotEmpty(entryFile) && Fsx.existsSync(entryFile), `entry file must be provided (${entryFile})`);
|
|
238
|
-
this.config_ = Object.assign({}, options);
|
|
239
|
-
this.init().catch(err => {
|
|
240
|
-
log.error(`Failed to init utility process`, err);
|
|
241
|
-
});
|
|
242
|
-
}
|
|
315
|
+
/**
|
|
316
|
+
* Remove a pending message from the queue,
|
|
317
|
+
* whether settled or not
|
|
318
|
+
*
|
|
319
|
+
* @param messageId
|
|
320
|
+
* @private
|
|
321
|
+
*/
|
|
243
322
|
removePendingMessage(messageId) {
|
|
244
323
|
const pending = this.pendingMessages_.get(messageId);
|
|
245
324
|
if (!pending) {
|
|
@@ -251,11 +330,46 @@ export class UPMMainService {
|
|
|
251
330
|
}
|
|
252
331
|
this.pendingMessages_.delete(messageId);
|
|
253
332
|
}
|
|
333
|
+
/**
|
|
334
|
+
* Generate next message id
|
|
335
|
+
*
|
|
336
|
+
* @private
|
|
337
|
+
*/
|
|
254
338
|
generateMessageId() {
|
|
255
|
-
return this.
|
|
339
|
+
return this.messageIdSeq_++;
|
|
256
340
|
}
|
|
257
|
-
|
|
258
|
-
|
|
341
|
+
/**
|
|
342
|
+
* Construct a new service
|
|
343
|
+
*
|
|
344
|
+
* @param serviceName
|
|
345
|
+
* @param entryFile
|
|
346
|
+
* @param options
|
|
347
|
+
*/
|
|
348
|
+
constructor(serviceName, entryFile, options = {}) {
|
|
349
|
+
this.serviceName = serviceName;
|
|
350
|
+
this.entryFile = entryFile;
|
|
351
|
+
/**
|
|
352
|
+
* As this container/wrapper implements
|
|
353
|
+
* `IMessageClient`, it needs to provide
|
|
354
|
+
* a `clientId`, which is constant in the
|
|
355
|
+
* main process
|
|
356
|
+
*/
|
|
357
|
+
this.clientId = "main";
|
|
358
|
+
this.readyDeferred_ = null;
|
|
359
|
+
this.killDeferred_ = null;
|
|
360
|
+
this.messageIdSeq_ = 0;
|
|
361
|
+
this.childProcess_ = null;
|
|
362
|
+
this.pendingMessages_ = new Map();
|
|
363
|
+
this.messageChannels_ = new Map();
|
|
364
|
+
assert(isString(entryFile) &&
|
|
365
|
+
isNotEmpty(entryFile) &&
|
|
366
|
+
Fsx.existsSync(entryFile), `entry file must be provided (${entryFile})`);
|
|
367
|
+
this.config_ = defaults(Object.assign({}, options), {
|
|
368
|
+
serviceName, inspect: false
|
|
369
|
+
});
|
|
370
|
+
this.init().catch(err => {
|
|
371
|
+
log.error(`Failed to init utility process`, err);
|
|
372
|
+
});
|
|
259
373
|
}
|
|
260
374
|
}
|
|
261
375
|
export default UPMMainService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UPMMainService.js","sourceRoot":"","sources":["../../../src/main/UPMMainService.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"UPMMainService.js","sourceRoot":"","sources":["../../../src/main/UPMMainService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as UPM from "../common";
|
|
2
|
-
import UPMMainService from "./UPMMainService";
|
|
1
|
+
import * as UPM from "../common/index.js";
|
|
2
|
+
import UPMMainService from "./UPMMainService.js";
|
|
3
3
|
export declare class UPMMainServiceManager {
|
|
4
4
|
private services_;
|
|
5
5
|
/**
|
|
@@ -30,8 +30,9 @@ export declare class UPMMainServiceManager {
|
|
|
30
30
|
*
|
|
31
31
|
* @param serviceName
|
|
32
32
|
* @param entryFile
|
|
33
|
+
* @param options
|
|
33
34
|
*/
|
|
34
|
-
createService<ReqMap extends UPM.MessageRequestMap, Type extends UPM.MessageRequestNames<ReqMap> = UPM.MessageRequestNames<ReqMap>>(serviceName: string, entryFile: string): Promise<UPMMainService<ReqMap, Type>>;
|
|
35
|
+
createService<ReqMap extends UPM.MessageRequestMap, Type extends UPM.MessageRequestNames<ReqMap> = UPM.MessageRequestNames<ReqMap>>(serviceName: string, entryFile: string, options?: UPM.CreateServiceOptions): Promise<UPMMainService<ReqMap, Type>>;
|
|
35
36
|
/**
|
|
36
37
|
* Destroy a specific service
|
|
37
38
|
*
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ipcMain } from "electron";
|
|
2
2
|
import { assert, isString } from "@3fv/guard";
|
|
3
|
-
import * as UPM from "../common";
|
|
4
|
-
import UPMMainService from "./UPMMainService";
|
|
3
|
+
import * as UPM from "../common/index.js";
|
|
4
|
+
import UPMMainService from "./UPMMainService.js";
|
|
5
5
|
import Tracer from "tracer";
|
|
6
6
|
const log = Tracer.colorConsole();
|
|
7
7
|
export class UPMMainServiceManager {
|
|
@@ -79,12 +79,12 @@ export class UPMMainServiceManager {
|
|
|
79
79
|
*
|
|
80
80
|
* @param serviceName
|
|
81
81
|
* @param entryFile
|
|
82
|
+
* @param options
|
|
82
83
|
*/
|
|
83
|
-
async createService(serviceName, entryFile) {
|
|
84
|
+
async createService(serviceName, entryFile, options = {}) {
|
|
85
|
+
var _a;
|
|
84
86
|
assert(!this.services_.has(serviceName), `utility process with id (${serviceName}) is already registered`);
|
|
85
|
-
const proc = new UPMMainService(serviceName, entryFile, {
|
|
86
|
-
serviceName
|
|
87
|
-
});
|
|
87
|
+
const proc = new UPMMainService(serviceName, entryFile, Object.assign(Object.assign({}, options), { serviceName: (_a = options.serviceName) !== null && _a !== void 0 ? _a : serviceName }));
|
|
88
88
|
this.services_.set(serviceName, proc);
|
|
89
89
|
try {
|
|
90
90
|
await proc.whenReady();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UPMMainServiceManager.js","sourceRoot":"","sources":["../../../src/main/UPMMainServiceManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE7C,OAAO,KAAK,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"UPMMainServiceManager.js","sourceRoot":"","sources":["../../../src/main/UPMMainServiceManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE7C,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAA;AACzC,OAAO,cAAc,MAAM,qBAAqB,CAAA;AAEhD,OAAO,MAAM,MAAM,QAAQ,CAAA;AAE3B,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,EAAE,CAAA;AAIjC,MAAM,OAAO,qBAAqB;IAGhC;;;;;;;OAOG;IACK,WAAW,CAAC,EAAyB,EAAE,WAAmB,EAAE,QAAgB;QAClF,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAA;QACxB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,GAAG,CAAC,KAAK,CAAC,6CAA6C,EAAE,EAAE,CAAC,CAAA;YAC5D,OAAM;QACR,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;QACzC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,GAAG,CAAC,KAAK,CAAC,qBAAqB,WAAW,EAAE,EAAE,EAAE,CAAC,CAAA;YACjD,OAAM;QACR,CAAC;QACD,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAA;YACtD,GAAG,CAAC,IAAI,CAAC,qCAAqC,WAAW,aAAa,QAAQ,GAAG,CAAC,CAAA;YAClF,MAAM,CAAC,WAAW,CACd,GAAG,CAAC,UAAU,CAAC,mBAAmB,EAClC,EAAC,WAAW,EAAE,QAAQ,EAAC,EACvB,CAAC,UAAU,CAAC,CACf,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAA;QACjD,CAAC;IACH,CAAC;IAED,iBAAiB,CAKhB,aAAmD,EAAE,QAAgB;QACpE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAa,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAA;YAEpG,MAAM,UAAU,GAAG,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAA;YACzD,GAAG,CAAC,IAAI,CAAC,qCAAqC,OAAO,CAAC,WAAW,aAAa,QAAQ,GAAG,CAAC,CAAA;YAC1F,OAAO,UAAU,CAAA;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAA;YAC/C,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC;IAED,gBAAgB,CAGd,WAAmB,EAAE,QAAgB;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAe,WAAW,CAAC,CAAA;QAC1D,MAAM,CAAC,CAAC,CAAC,OAAO,EAAC,qBAAqB,WAAW,EAAE,CAAC,CAAA;QAEpD,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAA;YAC/C,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,OAAO;QACnB,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,UAAU,CAGR,WAAmB;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACjF,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,aAAa,CAGjB,WAAmB,EAAE,SAAiB,EAAE,UAAoC,EAAE;;QAC9E,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,4BAA4B,WAAW,yBAAyB,CAAC,CAAA;QAC1G,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,WAAW,EAAE,SAAS,kCACjD,OAAO,KACV,WAAW,EAAE,MAAA,OAAO,CAAC,WAAW,mCAAI,WAAW,IAC/C,CAAA;QAEF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;QAErC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;YACtB,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;YACtC,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,WAAmB;QACtC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;YAAE,OAAM;QAE5C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAC5C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAClC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;IACnB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;IACtB,CAAC;IAED;QA3IQ,cAAS,GAAG,IAAI,GAAG,EAAmC,CAAA;QA4I5D,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,mBAAmB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7E,CAAC;IASD;;OAEG;IACH,MAAM,CAAC,GAAG;QACR,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG,IAAI,qBAAqB,EAAE,CAAA;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;;AAhBD;;;;GAIG;AACY,gCAAU,GAA0B,IAAI,AAA9B,CAA8B;AAczD,MAAM,CAAC,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,GAAG,EAAE,CAAA;AAEhE,eAAe,qBAAqB,CAAA"}
|
package/lib/mjs/main/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from "./UPMMainServiceManager";
|
|
2
|
-
export * from "./UPMMainService";
|
|
1
|
+
export * from "./UPMMainServiceManager.js";
|
|
2
|
+
export * from "./UPMMainService.js";
|
package/lib/mjs/main/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from "./UPMMainServiceManager";
|
|
2
|
-
export * from "./UPMMainService";
|
|
1
|
+
export * from "./UPMMainServiceManager.js";
|
|
2
|
+
export * from "./UPMMainService.js";
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/main/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/main/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA"}
|