@3fv/electron-utility-process-manager 1.0.2 → 1.0.4
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/types.d.ts +24 -2
- package/lib/cjs/common/types.js.map +1 -1
- package/lib/cjs/main/UPMMainService.d.ts +109 -28
- package/lib/cjs/main/UPMMainService.js +249 -136
- package/lib/cjs/main/UPMMainService.js.map +1 -1
- package/lib/cjs/main/UPMMainServiceManager.d.ts +2 -1
- package/lib/cjs/main/UPMMainServiceManager.js +4 -4
- package/lib/cjs/main/UPMMainServiceManager.js.map +1 -1
- package/lib/mjs/common/types.d.ts +24 -2
- package/lib/mjs/common/types.js.map +1 -1
- package/lib/mjs/main/UPMMainService.d.ts +109 -28
- package/lib/mjs/main/UPMMainService.js +251 -138
- package/lib/mjs/main/UPMMainService.js.map +1 -1
- package/lib/mjs/main/UPMMainServiceManager.d.ts +2 -1
- package/lib/mjs/main/UPMMainServiceManager.js +4 -4
- package/lib/mjs/main/UPMMainServiceManager.js.map +1 -1
- package/package.json +4 -4
|
@@ -34,64 +34,62 @@ const deferred_1 = require("@3fv/deferred");
|
|
|
34
34
|
const UPM = __importStar(require("../common/index.js"));
|
|
35
35
|
const lodash_1 = require("lodash");
|
|
36
36
|
const tracer_1 = __importDefault(require("tracer"));
|
|
37
|
+
const prelude_ts_1 = require("@3fv/prelude-ts");
|
|
38
|
+
const ts_pattern_1 = require("ts-pattern");
|
|
37
39
|
const log = tracer_1.default.colorConsole();
|
|
38
40
|
const isNotEmpty = (0, lodash_1.negate)(lodash_1.isEmpty);
|
|
41
|
+
/**
|
|
42
|
+
* Contains & Manages a `Utility/Process`
|
|
43
|
+
* providing simplified messaging & event
|
|
44
|
+
* propagation.
|
|
45
|
+
*/
|
|
39
46
|
class UPMMainService {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
this.childProcess_.off("exit", exitListener);
|
|
54
|
-
this.childProcess_.on("message", this.onMessage.bind(this));
|
|
55
|
-
deferred.resolve(this);
|
|
56
|
-
};
|
|
57
|
-
this.childProcess_ = electron_1.utilityProcess
|
|
58
|
-
.fork(this.entryFile, [], {
|
|
59
|
-
serviceName: this.serviceName,
|
|
60
|
-
env: Object.assign(Object.assign({}, process.env), { IN_CHILD_PROCESS: "true", APP_NAME: electron_1.app.name })
|
|
61
|
-
})
|
|
62
|
-
.on("spawn", spawnListener)
|
|
63
|
-
.on("exit", exitListener);
|
|
64
|
-
await deferred.promise;
|
|
65
|
-
}
|
|
66
|
-
catch (err) {
|
|
67
|
-
deferred.reject(err);
|
|
68
|
-
}
|
|
69
|
-
return deferred.promise;
|
|
47
|
+
/**
|
|
48
|
+
* Send an event as `fire-and-forget`
|
|
49
|
+
*
|
|
50
|
+
* @param data
|
|
51
|
+
* @param port
|
|
52
|
+
*/
|
|
53
|
+
sendEvent(data, port = this.childProcess_) {
|
|
54
|
+
const messageId = this.generateMessageId();
|
|
55
|
+
const payload = {
|
|
56
|
+
channel: UPM.IPCChannel.UPMServiceMessage,
|
|
57
|
+
payload: { messageId, eventData: data, kind: UPM.MessageKind.Event }
|
|
58
|
+
};
|
|
59
|
+
port.postMessage(payload);
|
|
70
60
|
}
|
|
71
|
-
|
|
72
|
-
|
|
61
|
+
/**
|
|
62
|
+
* Send request
|
|
63
|
+
*
|
|
64
|
+
* @param type
|
|
65
|
+
* @param args
|
|
66
|
+
*/
|
|
67
|
+
async executeRequest(type, ...args) {
|
|
68
|
+
(0, guard_1.assert)(!!this.childProcess_, "The process is not running");
|
|
69
|
+
const messageId = this.generateMessageId(), pending = {
|
|
70
|
+
deferred: new deferred_1.Deferred(),
|
|
71
|
+
messageId,
|
|
72
|
+
timeoutId: setTimeout(() => this.removePendingMessage(messageId), UPM.Defaults.RequestTimeout)
|
|
73
|
+
};
|
|
74
|
+
this.pendingMessages_.set(messageId, pending);
|
|
75
|
+
const payload = {
|
|
76
|
+
channel: UPM.IPCChannel.UPMServiceMessage,
|
|
77
|
+
payload: { type, messageId, args, kind: UPM.MessageKind.Request }
|
|
78
|
+
};
|
|
79
|
+
this.childProcess_.postMessage(payload);
|
|
73
80
|
try {
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
if (pending.deferred.isSettled()) {
|
|
80
|
-
log.error(`Already settled record ${messageId}`);
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
this.removePendingMessage(messageId);
|
|
84
|
-
if (!!error) {
|
|
85
|
-
log.error(error);
|
|
86
|
-
pending.deferred.reject(new Error(error));
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
pending.deferred.resolve(result);
|
|
81
|
+
const result = await pending.deferred.promise;
|
|
82
|
+
log.debug(`Completed utility request (messageId=${messageId})`);
|
|
83
|
+
return result;
|
|
90
84
|
}
|
|
91
85
|
catch (err) {
|
|
92
|
-
log.error(`Failed
|
|
86
|
+
log.error(`Failed utility request (messageId=${messageId})`, err);
|
|
87
|
+
throw err;
|
|
93
88
|
}
|
|
94
89
|
}
|
|
90
|
+
close() {
|
|
91
|
+
log.warn("Close has no effect when called via the main process");
|
|
92
|
+
}
|
|
95
93
|
/**
|
|
96
94
|
* Resolves when ready
|
|
97
95
|
*
|
|
@@ -115,6 +113,22 @@ class UPMMainService {
|
|
|
115
113
|
}
|
|
116
114
|
});
|
|
117
115
|
}
|
|
116
|
+
onServiceExit(code) {
|
|
117
|
+
log.warn(`Service Exit (code=${code})`);
|
|
118
|
+
let deferred = this.killDeferred_;
|
|
119
|
+
if (deferred) {
|
|
120
|
+
if (!deferred.isSettled()) {
|
|
121
|
+
deferred.resolve(code);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
log.warn(`kill deferred is already settled (code=${code})`);
|
|
125
|
+
}
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
this.killDeferred_ = deferred_1.Deferred.resolve(code);
|
|
129
|
+
this.cancelAllPendingMessages();
|
|
130
|
+
this.removeAllMessageChannels();
|
|
131
|
+
}
|
|
118
132
|
/**
|
|
119
133
|
* Returned client side port (for Renderer)
|
|
120
134
|
* @param clientId
|
|
@@ -127,8 +141,7 @@ class UPMMainService {
|
|
|
127
141
|
try {
|
|
128
142
|
this.childProcess_.postMessage({
|
|
129
143
|
message: {
|
|
130
|
-
channel: UPM.IPCChannel.UPMServiceNewClient,
|
|
131
|
-
payload: { clientId }
|
|
144
|
+
channel: UPM.IPCChannel.UPMServiceNewClient, payload: { clientId }
|
|
132
145
|
}
|
|
133
146
|
}, [port1]);
|
|
134
147
|
}
|
|
@@ -144,97 +157,162 @@ class UPMMainService {
|
|
|
144
157
|
* (useful to avoid congestion on default child_process channel)
|
|
145
158
|
*
|
|
146
159
|
* @param {string} clientId
|
|
147
|
-
* @returns {UPM.MessagePortClient
|
|
160
|
+
* @returns {UPM.MessagePortClient}
|
|
148
161
|
*/
|
|
149
162
|
createMainClient(clientId) {
|
|
150
163
|
return new UPM.MessagePortClient(clientId, this.createMessageChannel(clientId));
|
|
151
164
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
165
|
+
/**
|
|
166
|
+
* Service is still in a healthy/running/runnable state
|
|
167
|
+
*/
|
|
168
|
+
get isRunning() {
|
|
169
|
+
return !this.killDeferred_;
|
|
155
170
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
;
|
|
161
|
-
[channel.port1, channel.port2].forEach(p => (0, guard_1.getValue)(() => p.close()));
|
|
171
|
+
/**
|
|
172
|
+
* Stop the service (kill)
|
|
173
|
+
*/
|
|
174
|
+
async stop() {
|
|
175
|
+
await this.kill();
|
|
162
176
|
}
|
|
163
|
-
|
|
164
|
-
|
|
177
|
+
/**
|
|
178
|
+
* Resource management & cleanup
|
|
179
|
+
*/
|
|
180
|
+
async [Symbol.asyncDispose]() {
|
|
181
|
+
await this.stop();
|
|
165
182
|
}
|
|
166
183
|
/**
|
|
167
|
-
*
|
|
184
|
+
* Initialize the service
|
|
168
185
|
*
|
|
169
|
-
* @
|
|
170
|
-
* @param port
|
|
186
|
+
* @private
|
|
171
187
|
*/
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
188
|
+
async init() {
|
|
189
|
+
let deferred = this.readyDeferred_;
|
|
190
|
+
if (deferred) {
|
|
191
|
+
return deferred.promise;
|
|
192
|
+
}
|
|
193
|
+
deferred = this.readyDeferred_ = new deferred_1.Deferred();
|
|
194
|
+
try {
|
|
195
|
+
const exitListener = (code) => {
|
|
196
|
+
if (code !== 0) {
|
|
197
|
+
deferred.reject(new Error(`process exited with code ${code} upon starting`));
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
const spawnListener = async () => {
|
|
201
|
+
this.childProcess_.off("exit", exitListener);
|
|
202
|
+
this.childProcess_.on("exit", this.onServiceExit.bind(this));
|
|
203
|
+
this.childProcess_.on("message", this.onMessage.bind(this));
|
|
204
|
+
deferred.resolve(this);
|
|
205
|
+
};
|
|
206
|
+
// BUILD ADDITIONAL FORK OPTIONS
|
|
207
|
+
const childProcessOptions = (0, prelude_ts_1.asOption)(this.config_.inspect)
|
|
208
|
+
.filter(it => it !== false)
|
|
209
|
+
.map(it => ({
|
|
210
|
+
execArgv: [
|
|
211
|
+
(0, ts_pattern_1.match)(it)
|
|
212
|
+
.when(guard_1.isNumber, port => `--inspect=${port}`)
|
|
213
|
+
.otherwise(({ port, break: shouldBreak }) => {
|
|
214
|
+
const ext = shouldBreak ? "-brk" : "";
|
|
215
|
+
return `--inspect${ext}=${port}`;
|
|
216
|
+
})
|
|
217
|
+
]
|
|
218
|
+
}))
|
|
219
|
+
.getOrElse({});
|
|
220
|
+
// FORK
|
|
221
|
+
this.childProcess_ = electron_1.utilityProcess
|
|
222
|
+
.fork(this.entryFile, [], Object.assign(Object.assign({}, childProcessOptions), { serviceName: this.serviceName, env: Object.assign(Object.assign({}, process.env), { IN_CHILD_PROCESS: "true", APP_NAME: electron_1.app.name }) }))
|
|
223
|
+
.on("spawn", spawnListener)
|
|
224
|
+
.on("exit", exitListener);
|
|
225
|
+
await deferred.promise;
|
|
226
|
+
}
|
|
227
|
+
catch (err) {
|
|
228
|
+
deferred.reject(err);
|
|
229
|
+
}
|
|
230
|
+
return deferred.promise;
|
|
179
231
|
}
|
|
180
232
|
/**
|
|
181
|
-
*
|
|
233
|
+
* OnMessage really only handles `results` from
|
|
234
|
+
* `executeRequest(...)`; this may be expanded in
|
|
235
|
+
* the future
|
|
182
236
|
*
|
|
183
|
-
* @param
|
|
184
|
-
* @
|
|
237
|
+
* @param payload
|
|
238
|
+
* @private
|
|
185
239
|
*/
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
const messageId = this.generateMessageId(), pending = {
|
|
189
|
-
deferred: new deferred_1.Deferred(),
|
|
190
|
-
messageId,
|
|
191
|
-
timeoutId: setTimeout(() => this.removePendingMessage(messageId), UPM.Defaults.RequestTimeout)
|
|
192
|
-
};
|
|
193
|
-
this.pendingMessages_.set(messageId, pending);
|
|
194
|
-
const payload = {
|
|
195
|
-
channel: UPM.IPCChannel.UPMServiceMessage,
|
|
196
|
-
payload: { type, messageId, args, kind: UPM.MessageKind.Request }
|
|
197
|
-
};
|
|
198
|
-
this.childProcess_.postMessage(payload);
|
|
240
|
+
onMessage(payload) {
|
|
241
|
+
const { messageId, result, error } = payload;
|
|
199
242
|
try {
|
|
200
|
-
const
|
|
201
|
-
|
|
202
|
-
|
|
243
|
+
const pending = this.pendingMessages_.get(messageId);
|
|
244
|
+
if (!pending) {
|
|
245
|
+
log.info(`Unable to find pending record ${messageId}`);
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
if (pending.deferred.isSettled()) {
|
|
249
|
+
log.error(`Already settled record ${messageId}`);
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
this.removePendingMessage(messageId);
|
|
253
|
+
if (!!error) {
|
|
254
|
+
log.error(error);
|
|
255
|
+
pending.deferred.reject(new Error(error));
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
pending.deferred.resolve(result);
|
|
203
259
|
}
|
|
204
260
|
catch (err) {
|
|
205
|
-
log.error(`Failed
|
|
206
|
-
throw err;
|
|
261
|
+
log.error(`Failed to handle message`, err);
|
|
207
262
|
}
|
|
208
263
|
}
|
|
209
|
-
|
|
210
|
-
|
|
264
|
+
/**
|
|
265
|
+
* This handler is currently unused, but
|
|
266
|
+
* could be attached to a `MessagePort.on('close')`
|
|
267
|
+
* event
|
|
268
|
+
*
|
|
269
|
+
* @param id
|
|
270
|
+
* @param channel
|
|
271
|
+
* @private
|
|
272
|
+
*/
|
|
273
|
+
// noinspection JSUnusedLocalSymbols
|
|
274
|
+
onPortClose(id, channel) {
|
|
275
|
+
log.info(`main side of message channel(id=${id}) closed`);
|
|
276
|
+
this.closeMessageChannel(id, channel);
|
|
211
277
|
}
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
278
|
+
/**
|
|
279
|
+
* Close a message channel
|
|
280
|
+
*
|
|
281
|
+
* @param id
|
|
282
|
+
* @param channel
|
|
283
|
+
* @private
|
|
284
|
+
*/
|
|
285
|
+
closeMessageChannel(id, channel) {
|
|
286
|
+
if (this.messageChannels_.has(id)) {
|
|
287
|
+
this.messageChannels_.delete(id);
|
|
219
288
|
}
|
|
220
|
-
|
|
221
|
-
|
|
289
|
+
Array(channel.port1, channel.port2)
|
|
290
|
+
.forEach(p => {
|
|
291
|
+
(0, guard_1.getValue)(() => p.close());
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Kill the service
|
|
296
|
+
*
|
|
297
|
+
* @private
|
|
298
|
+
*/
|
|
299
|
+
async kill() {
|
|
300
|
+
var _a, _b;
|
|
301
|
+
if (!this.readyDeferred_ ||
|
|
302
|
+
!this.readyDeferred_.isSettled() ||
|
|
303
|
+
!this.childProcess_ ||
|
|
304
|
+
this.killDeferred_) {
|
|
305
|
+
log.error("Service is not ready OR the process is not running");
|
|
306
|
+
// noinspection ES6MissingAwait
|
|
307
|
+
return (_b = (_a = this.killDeferred_) === null || _a === void 0 ? void 0 : _a.promise) !== null && _b !== void 0 ? _b : Promise.resolve(0);
|
|
222
308
|
}
|
|
309
|
+
let killDeferred = this.killDeferred_ = new deferred_1.Deferred();
|
|
310
|
+
// GET THE PROCESS
|
|
223
311
|
const process = this.childProcess_;
|
|
224
|
-
|
|
225
|
-
log.error("The process is not running");
|
|
226
|
-
return 0;
|
|
227
|
-
}
|
|
312
|
+
// CANCEL ALL PENDING MESSAGES & REMOVE ALL CHANNELS
|
|
228
313
|
this.cancelAllPendingMessages();
|
|
229
314
|
this.removeAllMessageChannels();
|
|
230
|
-
killDeferred = this.killDeferred_ = new deferred_1.Deferred();
|
|
231
315
|
try {
|
|
232
|
-
process.once("exit", (code) => {
|
|
233
|
-
if (code !== 0) {
|
|
234
|
-
log.error(`Process exited with code ${code} upon stopping`);
|
|
235
|
-
}
|
|
236
|
-
killDeferred.resolve(code);
|
|
237
|
-
});
|
|
238
316
|
process.kill();
|
|
239
317
|
}
|
|
240
318
|
catch (err) {
|
|
@@ -243,33 +321,33 @@ class UPMMainService {
|
|
|
243
321
|
}
|
|
244
322
|
return await killDeferred.promise;
|
|
245
323
|
}
|
|
324
|
+
/**
|
|
325
|
+
* Close all message channels
|
|
326
|
+
*
|
|
327
|
+
* @private
|
|
328
|
+
*/
|
|
246
329
|
removeAllMessageChannels() {
|
|
247
330
|
for (const [id, channel] of [...this.messageChannels_.entries()]) {
|
|
248
331
|
this.closeMessageChannel(id, channel);
|
|
249
332
|
}
|
|
250
333
|
}
|
|
334
|
+
/**
|
|
335
|
+
* Remove all pending messages
|
|
336
|
+
*
|
|
337
|
+
* @private
|
|
338
|
+
*/
|
|
251
339
|
cancelAllPendingMessages() {
|
|
252
340
|
for (const key of [...this.pendingMessages_.keys()]) {
|
|
253
341
|
this.removePendingMessage(key);
|
|
254
342
|
}
|
|
255
343
|
}
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
this.childProcess_ = null;
|
|
264
|
-
this.pendingMessages_ = new Map();
|
|
265
|
-
this.messageChannels_ = new Map();
|
|
266
|
-
//super()
|
|
267
|
-
(0, guard_1.assert)((0, guard_1.isString)(entryFile) && isNotEmpty(entryFile) && fs_extra_1.default.existsSync(entryFile), `entry file must be provided (${entryFile})`);
|
|
268
|
-
this.config_ = Object.assign({}, options);
|
|
269
|
-
this.init().catch(err => {
|
|
270
|
-
log.error(`Failed to init utility process`, err);
|
|
271
|
-
});
|
|
272
|
-
}
|
|
344
|
+
/**
|
|
345
|
+
* Remove a pending message from the queue,
|
|
346
|
+
* whether settled or not
|
|
347
|
+
*
|
|
348
|
+
* @param messageId
|
|
349
|
+
* @private
|
|
350
|
+
*/
|
|
273
351
|
removePendingMessage(messageId) {
|
|
274
352
|
const pending = this.pendingMessages_.get(messageId);
|
|
275
353
|
if (!pending) {
|
|
@@ -281,11 +359,46 @@ class UPMMainService {
|
|
|
281
359
|
}
|
|
282
360
|
this.pendingMessages_.delete(messageId);
|
|
283
361
|
}
|
|
362
|
+
/**
|
|
363
|
+
* Generate next message id
|
|
364
|
+
*
|
|
365
|
+
* @private
|
|
366
|
+
*/
|
|
284
367
|
generateMessageId() {
|
|
285
|
-
return this.
|
|
368
|
+
return this.messageIdSeq_++;
|
|
286
369
|
}
|
|
287
|
-
|
|
288
|
-
|
|
370
|
+
/**
|
|
371
|
+
* Construct a new service
|
|
372
|
+
*
|
|
373
|
+
* @param serviceName
|
|
374
|
+
* @param entryFile
|
|
375
|
+
* @param options
|
|
376
|
+
*/
|
|
377
|
+
constructor(serviceName, entryFile, options = {}) {
|
|
378
|
+
this.serviceName = serviceName;
|
|
379
|
+
this.entryFile = entryFile;
|
|
380
|
+
/**
|
|
381
|
+
* As this container/wrapper implements
|
|
382
|
+
* `IMessageClient`, it needs to provide
|
|
383
|
+
* a `clientId`, which is constant in the
|
|
384
|
+
* main process
|
|
385
|
+
*/
|
|
386
|
+
this.clientId = "main";
|
|
387
|
+
this.readyDeferred_ = null;
|
|
388
|
+
this.killDeferred_ = null;
|
|
389
|
+
this.messageIdSeq_ = 0;
|
|
390
|
+
this.childProcess_ = null;
|
|
391
|
+
this.pendingMessages_ = new Map();
|
|
392
|
+
this.messageChannels_ = new Map();
|
|
393
|
+
(0, guard_1.assert)((0, guard_1.isString)(entryFile) &&
|
|
394
|
+
isNotEmpty(entryFile) &&
|
|
395
|
+
fs_extra_1.default.existsSync(entryFile), `entry file must be provided (${entryFile})`);
|
|
396
|
+
this.config_ = (0, lodash_1.defaults)(Object.assign({}, options), {
|
|
397
|
+
serviceName, inspect: false
|
|
398
|
+
});
|
|
399
|
+
this.init().catch(err => {
|
|
400
|
+
log.error(`Failed to init utility process`, err);
|
|
401
|
+
});
|
|
289
402
|
}
|
|
290
403
|
}
|
|
291
404
|
exports.UPMMainService = UPMMainService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UPMMainService.js","sourceRoot":"","sources":["../../../src/main/UPMMainService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"UPMMainService.js","sourceRoot":"","sources":["../../../src/main/UPMMainService.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
*
|
|
@@ -108,12 +108,12 @@ class UPMMainServiceManager {
|
|
|
108
108
|
*
|
|
109
109
|
* @param serviceName
|
|
110
110
|
* @param entryFile
|
|
111
|
+
* @param options
|
|
111
112
|
*/
|
|
112
|
-
async createService(serviceName, entryFile) {
|
|
113
|
+
async createService(serviceName, entryFile, options = {}) {
|
|
114
|
+
var _a;
|
|
113
115
|
(0, guard_1.assert)(!this.services_.has(serviceName), `utility process with id (${serviceName}) is already registered`);
|
|
114
|
-
const proc = new UPMMainService_js_1.default(serviceName, entryFile, {
|
|
115
|
-
serviceName
|
|
116
|
-
});
|
|
116
|
+
const proc = new UPMMainService_js_1.default(serviceName, entryFile, Object.assign(Object.assign({}, options), { serviceName: (_a = options.serviceName) !== null && _a !== void 0 ? _a : serviceName }));
|
|
117
117
|
this.services_.set(serviceName, proc);
|
|
118
118
|
try {
|
|
119
119
|
await proc.whenReady();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UPMMainServiceManager.js","sourceRoot":"","sources":["../../../src/main/UPMMainServiceManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAkC;AAClC,sCAA6C;AAE7C,wDAAyC;AACzC,4EAAgD;AAEhD,oDAA2B;AAE3B,MAAM,GAAG,GAAG,gBAAM,CAAC,YAAY,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"UPMMainServiceManager.js","sourceRoot":"","sources":["../../../src/main/UPMMainServiceManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ export type MessageRequestMap = {};
|
|
|
21
21
|
export type MessageRequestNames<ReqMap extends MessageRequestMap> = keyof ReqMap;
|
|
22
22
|
export type MessageRequestFn<ReqMap extends MessageRequestMap, Name extends MessageRequestNames<ReqMap>> = ReqMap[Name] extends MessageRequestFnBase ? ReqMap[Name] : never;
|
|
23
23
|
export type MessageRequestParams<ReqMap extends MessageRequestMap, Name extends MessageRequestNames<ReqMap>> = ReqMap[Name] extends MessageRequestFnBase ? Parameters<ReqMap[Name]> : never;
|
|
24
|
-
export type MessageRequestReturnType<ReqMap extends MessageRequestMap, Name extends MessageRequestNames<ReqMap>> = ReqMap[Name] extends MessageRequestFnBase ? ReturnType<ReqMap[Name]
|
|
24
|
+
export type MessageRequestReturnType<ReqMap extends MessageRequestMap, Name extends MessageRequestNames<ReqMap>> = ReqMap[Name] extends MessageRequestFnBase ? Awaited<ReturnType<ReqMap[Name]>> : never;
|
|
25
25
|
export interface Message<ReqMap extends MessageRequestMap = any, Type extends MessageRequestNames<ReqMap> = MessageRequestNames<ReqMap>, Args extends MessageRequestParams<ReqMap, Type> = MessageRequestParams<ReqMap, Type>, R extends MessageRequestReturnType<ReqMap, Type> = MessageRequestReturnType<ReqMap, Type>> {
|
|
26
26
|
type: Type;
|
|
27
27
|
kind: MessageKind;
|
|
@@ -35,7 +35,7 @@ export interface NodeEnvelope<Payload extends {} = any> {
|
|
|
35
35
|
channel: IPCChannel;
|
|
36
36
|
payload: Payload;
|
|
37
37
|
}
|
|
38
|
-
export type RequestHandler<ReqMap extends MessageRequestMap = any, Type extends MessageRequestNames<ReqMap> = MessageRequestNames<ReqMap>, Args extends MessageRequestParams<ReqMap, Type> = MessageRequestParams<ReqMap, Type>, R extends MessageRequestReturnType<ReqMap, Type> = MessageRequestReturnType<ReqMap, Type>> = (type: Type, messageId: number, ...args: Args) => R
|
|
38
|
+
export type RequestHandler<ReqMap extends MessageRequestMap = any, Type extends MessageRequestNames<ReqMap> = MessageRequestNames<ReqMap>, Args extends MessageRequestParams<ReqMap, Type> = MessageRequestParams<ReqMap, Type>, R extends MessageRequestReturnType<ReqMap, Type> = MessageRequestReturnType<ReqMap, Type>> = (type: Type, messageId: number, ...args: Args) => Promise<R>;
|
|
39
39
|
export type NodeMessage<ReqMap extends MessageRequestMap = any, Type extends MessageRequestNames<ReqMap> = MessageRequestNames<ReqMap>> = NodeEnvelope<Message<ReqMap, Type>>;
|
|
40
40
|
export interface PendingRequestMessage<ReqMap extends MessageRequestMap = any, Type extends MessageRequestNames<ReqMap> = MessageRequestNames<ReqMap>, R extends MessageRequestReturnType<ReqMap, Type> = MessageRequestReturnType<ReqMap, Type>> {
|
|
41
41
|
deferred: Deferred<R>;
|
|
@@ -46,4 +46,26 @@ export interface PendingRequestMessage<ReqMap extends MessageRequestMap = any, T
|
|
|
46
46
|
* @returns true if payload was handled, false if not
|
|
47
47
|
*/
|
|
48
48
|
export type EventHandler = (clientId: string, port: Port, payload: any) => boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Port of any kind
|
|
51
|
+
*/
|
|
49
52
|
export type Port = MessagePort | Electron.MessagePortMain | Electron.ParentPort | UtilityProcess;
|
|
53
|
+
/**
|
|
54
|
+
* Debugging & Inspection config
|
|
55
|
+
*/
|
|
56
|
+
export type ServiceInspectConfig = number | {
|
|
57
|
+
port: number;
|
|
58
|
+
break?: boolean;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Configuration to use when creating/launching
|
|
62
|
+
* a service (`Electron.UtilityProcess`)
|
|
63
|
+
*/
|
|
64
|
+
export interface CreateServiceConfig {
|
|
65
|
+
serviceName: string;
|
|
66
|
+
inspect: false | ServiceInspectConfig;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Optional/Partial `CreateServiceConfig`
|
|
70
|
+
*/
|
|
71
|
+
export type CreateServiceOptions = Partial<CreateServiceConfig>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/common/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/common/types.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,CAAA;AAElD,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,8BAAe,CAAA;IACf,kCAAmB,CAAA;IACnB,oCAAqB,CAAA;AACvB,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAED,MAAM,CAAN,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,qDAAuC,CAAA;IACvC,yDAA2C,CAAA;AAC7C,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAED,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,8DAA2C,CAAA;IAC3C,2EAAwD,CAAA;AAC1D,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B"}
|