@3fv/electron-utility-process-manager 1.0.1

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.
Files changed (97) hide show
  1. package/.prettierrc.js +14 -0
  2. package/README.md +166 -0
  3. package/examples/lib-examples/complex/complex-main.d.ts +1 -0
  4. package/examples/lib-examples/complex/complex-main.js +108 -0
  5. package/examples/lib-examples/complex/complex-main.js.map +1 -0
  6. package/examples/lib-examples/complex/complex-node.d.ts +1 -0
  7. package/examples/lib-examples/complex/complex-node.js +17 -0
  8. package/examples/lib-examples/complex/complex-node.js.map +1 -0
  9. package/examples/lib-examples/complex/complex-renderer.d.ts +1 -0
  10. package/examples/lib-examples/complex/complex-renderer.js +18 -0
  11. package/examples/lib-examples/complex/complex-renderer.js.map +1 -0
  12. package/examples/lib-examples/complex/complex-types.d.ts +3 -0
  13. package/examples/lib-examples/complex/complex-types.js +3 -0
  14. package/examples/lib-examples/complex/complex-types.js.map +1 -0
  15. package/examples/lib-examples/simple/simple-main.d.ts +1 -0
  16. package/examples/lib-examples/simple/simple-main.js +106 -0
  17. package/examples/lib-examples/simple/simple-main.js.map +1 -0
  18. package/examples/lib-examples/simple/simple-node.d.ts +1 -0
  19. package/examples/lib-examples/simple/simple-node.js +17 -0
  20. package/examples/lib-examples/simple/simple-node.js.map +1 -0
  21. package/examples/lib-examples/simple/simple-renderer.d.ts +1 -0
  22. package/examples/lib-examples/simple/simple-renderer.js +17 -0
  23. package/examples/lib-examples/simple/simple-renderer.js.map +1 -0
  24. package/jest.config.js +20 -0
  25. package/lib/cjs/common/clients.d.ts +103 -0
  26. package/lib/cjs/common/clients.js +180 -0
  27. package/lib/cjs/common/clients.js.map +1 -0
  28. package/lib/cjs/common/guards.d.ts +4 -0
  29. package/lib/cjs/common/guards.js +12 -0
  30. package/lib/cjs/common/guards.js.map +1 -0
  31. package/lib/cjs/common/index.d.ts +3 -0
  32. package/lib/cjs/common/index.js +20 -0
  33. package/lib/cjs/common/index.js.map +1 -0
  34. package/lib/cjs/common/types.d.ts +49 -0
  35. package/lib/cjs/common/types.js +21 -0
  36. package/lib/cjs/common/types.js.map +1 -0
  37. package/lib/cjs/index.d.ts +4 -0
  38. package/lib/cjs/index.js +34 -0
  39. package/lib/cjs/index.js.map +1 -0
  40. package/lib/cjs/main/UPMMainService.d.ts +69 -0
  41. package/lib/cjs/main/UPMMainService.js +292 -0
  42. package/lib/cjs/main/UPMMainService.js.map +1 -0
  43. package/lib/cjs/main/UPMMainServiceManager.d.ts +58 -0
  44. package/lib/cjs/main/UPMMainServiceManager.js +168 -0
  45. package/lib/cjs/main/UPMMainServiceManager.js.map +1 -0
  46. package/lib/cjs/main/index.d.ts +2 -0
  47. package/lib/cjs/main/index.js +19 -0
  48. package/lib/cjs/main/index.js.map +1 -0
  49. package/lib/cjs/node/UPMNodeProcess.d.ts +25 -0
  50. package/lib/cjs/node/UPMNodeProcess.js +155 -0
  51. package/lib/cjs/node/UPMNodeProcess.js.map +1 -0
  52. package/lib/cjs/node/index.d.ts +3 -0
  53. package/lib/cjs/node/index.js +23 -0
  54. package/lib/cjs/node/index.js.map +1 -0
  55. package/lib/cjs/renderer/UPMRendererClientFactory.d.ts +5 -0
  56. package/lib/cjs/renderer/UPMRendererClientFactory.js +77 -0
  57. package/lib/cjs/renderer/UPMRendererClientFactory.js.map +1 -0
  58. package/lib/cjs/renderer/index.d.ts +3 -0
  59. package/lib/cjs/renderer/index.js +23 -0
  60. package/lib/cjs/renderer/index.js.map +1 -0
  61. package/lib/mjs/common/clients.d.ts +103 -0
  62. package/lib/mjs/common/clients.js +173 -0
  63. package/lib/mjs/common/clients.js.map +1 -0
  64. package/lib/mjs/common/guards.d.ts +4 -0
  65. package/lib/mjs/common/guards.js +8 -0
  66. package/lib/mjs/common/guards.js.map +1 -0
  67. package/lib/mjs/common/index.d.ts +3 -0
  68. package/lib/mjs/common/index.js +4 -0
  69. package/lib/mjs/common/index.js.map +1 -0
  70. package/lib/mjs/common/types.d.ts +49 -0
  71. package/lib/mjs/common/types.js +18 -0
  72. package/lib/mjs/common/types.js.map +1 -0
  73. package/lib/mjs/index.d.ts +4 -0
  74. package/lib/mjs/index.js +5 -0
  75. package/lib/mjs/index.js.map +1 -0
  76. package/lib/mjs/main/UPMMainService.d.ts +69 -0
  77. package/lib/mjs/main/UPMMainService.js +262 -0
  78. package/lib/mjs/main/UPMMainService.js.map +1 -0
  79. package/lib/mjs/main/UPMMainServiceManager.d.ts +58 -0
  80. package/lib/mjs/main/UPMMainServiceManager.js +138 -0
  81. package/lib/mjs/main/UPMMainServiceManager.js.map +1 -0
  82. package/lib/mjs/main/index.d.ts +2 -0
  83. package/lib/mjs/main/index.js +3 -0
  84. package/lib/mjs/main/index.js.map +1 -0
  85. package/lib/mjs/node/UPMNodeProcess.d.ts +25 -0
  86. package/lib/mjs/node/UPMNodeProcess.js +125 -0
  87. package/lib/mjs/node/UPMNodeProcess.js.map +1 -0
  88. package/lib/mjs/node/index.d.ts +3 -0
  89. package/lib/mjs/node/index.js +4 -0
  90. package/lib/mjs/node/index.js.map +1 -0
  91. package/lib/mjs/renderer/UPMRendererClientFactory.d.ts +5 -0
  92. package/lib/mjs/renderer/UPMRendererClientFactory.js +47 -0
  93. package/lib/mjs/renderer/UPMRendererClientFactory.js.map +1 -0
  94. package/lib/mjs/renderer/index.d.ts +3 -0
  95. package/lib/mjs/renderer/index.js +4 -0
  96. package/lib/mjs/renderer/index.js.map +1 -0
  97. package/package.json +104 -0
@@ -0,0 +1,292 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.UPMMainService = void 0;
30
+ const electron_1 = require("electron");
31
+ const guard_1 = require("@3fv/guard");
32
+ const fs_extra_1 = __importDefault(require("fs-extra"));
33
+ const deferred_1 = require("@3fv/deferred");
34
+ const UPM = __importStar(require("../common"));
35
+ const lodash_1 = require("lodash");
36
+ const tracer_1 = __importDefault(require("tracer"));
37
+ const log = tracer_1.default.colorConsole();
38
+ const isNotEmpty = (0, lodash_1.negate)(lodash_1.isEmpty);
39
+ class UPMMainService {
40
+ async init() {
41
+ let deferred = this.readyDeferred_;
42
+ if (deferred) {
43
+ return deferred.promise;
44
+ }
45
+ deferred = this.readyDeferred_ = new deferred_1.Deferred();
46
+ try {
47
+ const exitListener = (code) => {
48
+ if (code !== 0) {
49
+ deferred.reject(new Error(`process exited with code ${code} upon starting`));
50
+ }
51
+ };
52
+ const spawnListener = async () => {
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;
70
+ }
71
+ onMessage(payload) {
72
+ const { type, kind, messageId, result, error } = payload;
73
+ try {
74
+ const pending = this.pendingMessages_.get(messageId);
75
+ if (!pending) {
76
+ log.info(`Unable to find pending record ${messageId}`);
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);
90
+ }
91
+ catch (err) {
92
+ log.error(`Failed to handle message`, err);
93
+ }
94
+ }
95
+ /**
96
+ * Resolves when ready
97
+ *
98
+ * @returns {any}
99
+ */
100
+ whenReady() {
101
+ return this.init();
102
+ }
103
+ /**
104
+ * Return a simple proxy facade wrapping
105
+ * `executeRequest` into individual methods
106
+ */
107
+ getServiceClient() {
108
+ return new Proxy({}, {
109
+ get: (_target, prop) => {
110
+ if (prop === "then") {
111
+ return undefined;
112
+ }
113
+ return (...args) => this.whenReady()
114
+ .then(client => client.executeRequest(prop, ...args));
115
+ }
116
+ });
117
+ }
118
+ /**
119
+ * Returned client side port (for Renderer)
120
+ * @param clientId
121
+ */
122
+ createMessageChannel(clientId) {
123
+ var _a, _b;
124
+ (0, guard_1.assert)((_b = (_a = this.readyDeferred_) === null || _a === void 0 ? void 0 : _a.isFulfilled()) !== null && _b !== void 0 ? _b : false, `Service (${this.serviceName}) is not fulfilled or has an error (${this.readyDeferred_.status()})`);
125
+ const channel = new electron_1.MessageChannelMain(), { port1, port2 } = channel;
126
+ this.messageChannels_.set(clientId, channel);
127
+ try {
128
+ this.childProcess_.postMessage({
129
+ message: {
130
+ channel: UPM.IPCChannel.UPMServiceNewClient,
131
+ payload: { clientId }
132
+ }
133
+ }, [port1]);
134
+ }
135
+ catch (err) {
136
+ log.error(`Unable to create channel id=${clientId}`, err);
137
+ this.closeMessageChannel(clientId, channel);
138
+ throw err;
139
+ }
140
+ return port2;
141
+ }
142
+ /**
143
+ * Create a port client for the main process
144
+ * (useful to avoid congestion on default child_process channel)
145
+ *
146
+ * @param {string} clientId
147
+ * @returns {UPM.MessagePortClient<MessageRequestMap, MessageType>}
148
+ */
149
+ createMainClient(clientId) {
150
+ return new UPM.MessagePortClient(clientId, this.createMessageChannel(clientId));
151
+ }
152
+ onPortClose(id, channel) {
153
+ log.info(`main side of message channel(id=${id}) closed`);
154
+ this.closeMessageChannel(id, channel);
155
+ }
156
+ closeMessageChannel(id, channel) {
157
+ if (this.messageChannels_.has(id)) {
158
+ this.messageChannels_.delete(id);
159
+ }
160
+ ;
161
+ [channel.port1, channel.port2].forEach(p => (0, guard_1.getValue)(() => p.close()));
162
+ }
163
+ close() {
164
+ log.warn("Close has no effect when called via the main process");
165
+ }
166
+ /**
167
+ * Send an event as `fire-and-forget`
168
+ *
169
+ * @param data
170
+ * @param port
171
+ */
172
+ sendEvent(data, port = this.childProcess_) {
173
+ const messageId = this.generateMessageId();
174
+ const payload = {
175
+ channel: UPM.IPCChannel.UPMServiceMessage,
176
+ payload: { messageId, data, kind: UPM.MessageKind.Event }
177
+ };
178
+ port.postMessage(payload);
179
+ }
180
+ /**
181
+ * Send request
182
+ *
183
+ * @param type
184
+ * @param args
185
+ */
186
+ async executeRequest(type, ...args) {
187
+ (0, guard_1.assert)(!!this.childProcess_, "The process is not running");
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);
199
+ try {
200
+ const result = await pending.deferred.promise;
201
+ log.debug(`Completed utility request (messageId=${messageId})`);
202
+ return result;
203
+ }
204
+ catch (err) {
205
+ log.error(`Failed utility request (messageId=${messageId})`, err);
206
+ throw err;
207
+ }
208
+ }
209
+ async stop() {
210
+ await this.kill();
211
+ }
212
+ async kill() {
213
+ if (!this.readyDeferred_) {
214
+ return;
215
+ }
216
+ let killDeferred = this.killDeferred_;
217
+ if (killDeferred) {
218
+ return killDeferred.promise;
219
+ }
220
+ if (!this.readyDeferred_.isSettled()) {
221
+ await this.readyDeferred_.promise.catch(err => log.error(`ignoring error`, err));
222
+ }
223
+ const process = this.childProcess_;
224
+ if (!process) {
225
+ log.error("The process is not running");
226
+ return 0;
227
+ }
228
+ this.cancelAllPendingMessages();
229
+ this.removeAllMessageChannels();
230
+ killDeferred = this.killDeferred_ = new deferred_1.Deferred();
231
+ 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
+ process.kill();
239
+ }
240
+ catch (err) {
241
+ log.error("Unable to kill utility process", err);
242
+ killDeferred.reject(err);
243
+ }
244
+ return await killDeferred.promise;
245
+ }
246
+ removeAllMessageChannels() {
247
+ for (const [id, channel] of [...this.messageChannels_.entries()]) {
248
+ this.closeMessageChannel(id, channel);
249
+ }
250
+ }
251
+ cancelAllPendingMessages() {
252
+ for (const key of [...this.pendingMessages_.keys()]) {
253
+ this.removePendingMessage(key);
254
+ }
255
+ }
256
+ constructor(serviceName, entryFile, options = {}) {
257
+ this.serviceName = serviceName;
258
+ this.entryFile = entryFile;
259
+ this.readyDeferred_ = null;
260
+ this.killDeferred_ = null;
261
+ this.lastMessageId_ = 0;
262
+ this.childProcess_ = null;
263
+ this.pendingMessages_ = new Map();
264
+ this.messageChannels_ = new Map();
265
+ //super()
266
+ (0, guard_1.assert)((0, guard_1.isString)(entryFile) && isNotEmpty(entryFile) && fs_extra_1.default.existsSync(entryFile), `entry file must be provided (${entryFile})`);
267
+ this.config_ = Object.assign({}, options);
268
+ this.init().catch(err => {
269
+ log.error(`Failed to init utility process`, err);
270
+ });
271
+ }
272
+ removePendingMessage(messageId) {
273
+ const pending = this.pendingMessages_.get(messageId);
274
+ if (!pending) {
275
+ return;
276
+ }
277
+ clearTimeout(pending.timeoutId);
278
+ if (!pending.deferred.isSettled()) {
279
+ pending.deferred.reject("The pending message is being removed before promise is settled");
280
+ }
281
+ this.pendingMessages_.delete(messageId);
282
+ }
283
+ generateMessageId() {
284
+ return this.lastMessageId_++;
285
+ }
286
+ async [Symbol.asyncDispose]() {
287
+ await this.stop();
288
+ }
289
+ }
290
+ exports.UPMMainService = UPMMainService;
291
+ exports.default = UPMMainService;
292
+ //# sourceMappingURL=UPMMainService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UPMMainService.js","sourceRoot":"","sources":["../../../src/main/UPMMainService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import * as UPM from "../common";
2
+ import UPMMainService from "./UPMMainService";
3
+ export declare class UPMMainServiceManager {
4
+ private services_;
5
+ /**
6
+ * On new client request from renderer
7
+ *
8
+ * @param ev
9
+ * @param serviceName
10
+ * @param clientId
11
+ * @private
12
+ */
13
+ private onNewClient;
14
+ createMainChannel<Args extends UPM.MessageRequestMap = any, MType extends UPM.MessageRequestNames<Args> = UPM.MessageRequestNames<Args>>(serviceOrName: string | UPMMainService<Args, MType>, clientId: string): UPM.Port;
15
+ createMainClient<ReqMap extends UPM.MessageRequestMap = any, MType extends UPM.MessageRequestNames<ReqMap> = UPM.MessageRequestNames<ReqMap>>(serviceName: string, clientId: string): UPM.MessagePortClient<ReqMap, MType>;
16
+ /**
17
+ * Destroy all services
18
+ *
19
+ * @private
20
+ */
21
+ private destroy;
22
+ /**
23
+ * Get the service for a given name
24
+ *
25
+ * @param serviceName
26
+ */
27
+ getService<ReqMap extends UPM.MessageRequestMap, Type extends UPM.MessageRequestNames<ReqMap> = UPM.MessageRequestNames<ReqMap>>(serviceName: string): UPMMainService<ReqMap, Type>;
28
+ /**
29
+ * Create a utility process/service
30
+ *
31
+ * @param serviceName
32
+ * @param entryFile
33
+ */
34
+ createService<ReqMap extends UPM.MessageRequestMap, Type extends UPM.MessageRequestNames<ReqMap> = UPM.MessageRequestNames<ReqMap>>(serviceName: string, entryFile: string): Promise<UPMMainService<ReqMap, Type>>;
35
+ /**
36
+ * Destroy a specific service
37
+ *
38
+ * @param serviceName
39
+ */
40
+ destroyService(serviceName: string): Promise<void>;
41
+ /**
42
+ * Async dispose symbol
43
+ */
44
+ [Symbol.asyncDispose](): Promise<void>;
45
+ private constructor();
46
+ /**
47
+ * Singleton instance
48
+ *
49
+ * @private
50
+ */
51
+ private static sInstance_;
52
+ /**
53
+ * Get singleton instance
54
+ */
55
+ static get(): UPMMainServiceManager;
56
+ }
57
+ export declare const upmMainServiceManager: UPMMainServiceManager;
58
+ export default upmMainServiceManager;
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.upmMainServiceManager = exports.UPMMainServiceManager = void 0;
30
+ const electron_1 = require("electron");
31
+ const guard_1 = require("@3fv/guard");
32
+ const UPM = __importStar(require("../common"));
33
+ const UPMMainService_1 = __importDefault(require("./UPMMainService"));
34
+ const tracer_1 = __importDefault(require("tracer"));
35
+ const log = tracer_1.default.colorConsole();
36
+ class UPMMainServiceManager {
37
+ /**
38
+ * On new client request from renderer
39
+ *
40
+ * @param ev
41
+ * @param serviceName
42
+ * @param clientId
43
+ * @private
44
+ */
45
+ onNewClient(ev, serviceName, clientId) {
46
+ const sender = ev.sender;
47
+ if (!sender) {
48
+ log.error(`sender is invalid on new client ipc message`, ev);
49
+ return;
50
+ }
51
+ const proc = this.getService(serviceName);
52
+ if (!proc) {
53
+ log.error(`no proc found for ${serviceName}`, ev);
54
+ return;
55
+ }
56
+ try {
57
+ const clientPort = proc.createMessageChannel(clientId);
58
+ log.info(`Received client port for proc (id=${serviceName},clientId=${clientId})`);
59
+ sender.postMessage(UPM.IPCChannel.UPMServiceNewClient, { serviceName, clientId }, [clientPort]);
60
+ }
61
+ catch (err) {
62
+ log.error(`failed to register new client`, err);
63
+ }
64
+ }
65
+ createMainChannel(serviceOrName, clientId) {
66
+ try {
67
+ const service = (0, guard_1.isString)(serviceOrName) ? this.getService(serviceOrName) : serviceOrName;
68
+ const clientPort = service.createMessageChannel(clientId);
69
+ log.info(`Received client port for proc (id=${service.serviceName},clientId=${clientId})`);
70
+ return clientPort;
71
+ }
72
+ catch (err) {
73
+ log.error(`failed to register new client`, err);
74
+ throw err;
75
+ }
76
+ }
77
+ createMainClient(serviceName, clientId) {
78
+ const service = this.getService(serviceName);
79
+ (0, guard_1.assert)(!!service, `no proc found for ${serviceName}`);
80
+ try {
81
+ return service.createMainClient(clientId);
82
+ }
83
+ catch (err) {
84
+ log.error(`failed to register new client`, err);
85
+ throw err;
86
+ }
87
+ }
88
+ /**
89
+ * Destroy all services
90
+ *
91
+ * @private
92
+ */
93
+ async destroy() {
94
+ for (const [id] of [...this.services_.keys()]) {
95
+ await this.destroyService(id);
96
+ }
97
+ }
98
+ /**
99
+ * Get the service for a given name
100
+ *
101
+ * @param serviceName
102
+ */
103
+ getService(serviceName) {
104
+ return this.services_.has(serviceName) ? this.services_.get(serviceName) : null;
105
+ }
106
+ /**
107
+ * Create a utility process/service
108
+ *
109
+ * @param serviceName
110
+ * @param entryFile
111
+ */
112
+ async createService(serviceName, entryFile) {
113
+ (0, guard_1.assert)(!this.services_.has(serviceName), `utility process with id (${serviceName}) is already registered`);
114
+ const proc = new UPMMainService_1.default(serviceName, entryFile, {
115
+ serviceName
116
+ });
117
+ this.services_.set(serviceName, proc);
118
+ try {
119
+ await proc.whenReady();
120
+ return proc;
121
+ }
122
+ catch (err) {
123
+ await this.destroyService(serviceName);
124
+ throw err;
125
+ }
126
+ }
127
+ /**
128
+ * Destroy a specific service
129
+ *
130
+ * @param serviceName
131
+ */
132
+ async destroyService(serviceName) {
133
+ if (!this.services_.has(serviceName))
134
+ return;
135
+ const proc = this.services_.get(serviceName);
136
+ this.services_.delete(serviceName);
137
+ await proc.stop();
138
+ }
139
+ /**
140
+ * Async dispose symbol
141
+ */
142
+ async [Symbol.asyncDispose]() {
143
+ await this.destroy();
144
+ }
145
+ constructor() {
146
+ this.services_ = new Map();
147
+ electron_1.ipcMain.on(UPM.IPCChannel.UPMServiceNewClient, this.onNewClient.bind(this));
148
+ }
149
+ /**
150
+ * Get singleton instance
151
+ */
152
+ static get() {
153
+ if (!this.sInstance_) {
154
+ this.sInstance_ = new UPMMainServiceManager();
155
+ }
156
+ return this.sInstance_;
157
+ }
158
+ }
159
+ exports.UPMMainServiceManager = UPMMainServiceManager;
160
+ /**
161
+ * Singleton instance
162
+ *
163
+ * @private
164
+ */
165
+ UPMMainServiceManager.sInstance_ = null;
166
+ exports.upmMainServiceManager = UPMMainServiceManager.get();
167
+ exports.default = exports.upmMainServiceManager;
168
+ //# sourceMappingURL=UPMMainServiceManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UPMMainServiceManager.js","sourceRoot":"","sources":["../../../src/main/UPMMainServiceManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./UPMMainServiceManager";
2
+ export * from "./UPMMainService";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./UPMMainServiceManager"), exports);
18
+ __exportStar(require("./UPMMainService"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/main/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAuC;AACvC,mDAAgC"}
@@ -0,0 +1,25 @@
1
+ import * as UPM from "../common";
2
+ export declare class UPMNodeProcess<ReqMap extends UPM.MessageRequestMap = any, MType extends UPM.MessageRequestNames<ReqMap> = UPM.MessageRequestNames<ReqMap>> {
3
+ readonly processPort: Electron.ParentPort;
4
+ private readonly clientPorts_;
5
+ private readonly requestHandlers_;
6
+ private readonly eventHandlers_;
7
+ private onServiceClientPort;
8
+ private onServiceMessage;
9
+ private onMessage;
10
+ private constructor();
11
+ addRequestHandler<Type extends MType>(type: Type, handler: UPM.RequestHandler<ReqMap, Type>): void;
12
+ addEventHandler(handler: UPM.EventHandler): void;
13
+ /**
14
+ * Singleton instance
15
+ *
16
+ * @private
17
+ */
18
+ private static sInstance_;
19
+ /**
20
+ * Get singleton instance
21
+ */
22
+ static get(): UPMNodeProcess;
23
+ }
24
+ declare const upmNodeProcess: UPMNodeProcess<any, string | number | symbol>;
25
+ export default upmNodeProcess;