eimer 0.1.0 → 0.1.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.
- package/dist/cjs/eimer/Eimer.d.ts +1 -3
- package/dist/cjs/eimer/Eimer.d.ts.map +1 -1
- package/dist/cjs/eimer/Eimer.js.map +1 -1
- package/dist/cjs/transports/EimerUtilityProcessTransport.d.ts +30 -0
- package/dist/cjs/transports/EimerUtilityProcessTransport.d.ts.map +1 -0
- package/dist/cjs/transports/EimerUtilityProcessTransport.js +19 -0
- package/dist/cjs/transports/EimerUtilityProcessTransport.js.map +1 -0
- package/dist/cjs/transports/EimerWebWorkerTransport.d.ts +46 -0
- package/dist/cjs/transports/EimerWebWorkerTransport.d.ts.map +1 -0
- package/dist/cjs/transports/EimerWebWorkerTransport.js +56 -0
- package/dist/cjs/transports/EimerWebWorkerTransport.js.map +1 -0
- package/dist/cjs/transports/index.d.ts +2 -0
- package/dist/cjs/transports/index.d.ts.map +1 -1
- package/dist/cjs/transports/index.js +2 -0
- package/dist/cjs/transports/index.js.map +1 -1
- package/dist/esm/eimer/Eimer.js.map +1 -1
- package/dist/esm/transports/EimerUtilityProcessTransport.js +15 -0
- package/dist/esm/transports/EimerUtilityProcessTransport.js.map +1 -0
- package/dist/esm/transports/EimerWebWorkerTransport.js +52 -0
- package/dist/esm/transports/EimerWebWorkerTransport.js.map +1 -0
- package/dist/esm/transports/index.js +2 -0
- package/dist/esm/transports/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -6,8 +6,6 @@ import type { RpcHandler } from './RpcHandler';
|
|
|
6
6
|
import type { RpcMethod } from './RpcMethod';
|
|
7
7
|
import type { Topic } from './Topic';
|
|
8
8
|
import type { Transport } from './Transport';
|
|
9
|
-
export interface EimerInterface {
|
|
10
|
-
}
|
|
11
9
|
/**
|
|
12
10
|
* Eimer main class
|
|
13
11
|
* This class represents an instance of a "node" on the Eimer "network".
|
|
@@ -18,7 +16,7 @@ export interface EimerInterface {
|
|
|
18
16
|
* To use it, create an instance with a unique node id and connect a transport
|
|
19
17
|
* After that, publish/subscribe and RPC can be used.
|
|
20
18
|
*/
|
|
21
|
-
export declare class Eimer
|
|
19
|
+
export declare class Eimer {
|
|
22
20
|
private readonly nodeId;
|
|
23
21
|
private readonly idGenerator;
|
|
24
22
|
private readonly messageBus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Eimer.d.ts","sourceRoot":"","sources":["../../../src/eimer/Eimer.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAKnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C
|
|
1
|
+
{"version":3,"file":"Eimer.d.ts","sourceRoot":"","sources":["../../../src/eimer/Eimer.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAKnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;;;;;GASG;AACH,qBAAa,KAAK;IACd,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAGhC,OAAO,CAAC,UAAU,CAA8D;IAEhF;;;;;OAKG;gBACS,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,iBAAiB;IAQpF;;;OAGG;IACH,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAKnC;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAKtC;;;;;;;;OAQG;IACG,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAKnF;;;;;;OAMG;IACH,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI;IAKhE;;;OAGG;IACH,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAK7C;;;;;OAKG;IACH,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAY9C;;;;;;OAMG;IACH,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,cAAc,GAAG,MAAM,IAAI;IA4BnE;;;;;OAKG;IACH,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,cAAc,GAAG,IAAI;IAgB/D;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAalC;;;;OAIG;IACH,QAAQ,IAAI,IAAI;CAKnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Eimer.js","sourceRoot":"","sources":["../../../src/eimer/Eimer.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAC9C,yCAAsC;AAEtC,uEAAoE;AACpE,uDAAoD;AACpD,oEAAiE;AACjE,4DAAyD;
|
|
1
|
+
{"version":3,"file":"Eimer.js","sourceRoot":"","sources":["../../../src/eimer/Eimer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { EimerMessagePortTransport, EimerMessagePortTransportDependencies, EimerMessagePortTransportOptions } from './EimerMessagePortTransport';
|
|
2
|
+
/**
|
|
3
|
+
* Structural type covering both sides of an Electron utility_process channel:
|
|
4
|
+
* - `utilityProcess` (Electron.UtilityProcess) in the main process
|
|
5
|
+
* - `process.parentPort` (Electron.ParentPort) inside the utility process
|
|
6
|
+
*
|
|
7
|
+
* Both satisfy eimer's MessagePort duck-type at runtime; this interface exists
|
|
8
|
+
* so callers don't need an `as unknown as MessagePort` cast.
|
|
9
|
+
*/
|
|
10
|
+
export interface UtilityProcessPort {
|
|
11
|
+
postMessage(message: any): void;
|
|
12
|
+
on(event: 'message', handler: (message: any) => void): this;
|
|
13
|
+
off?(event: 'message', handler: (message: any) => void): this;
|
|
14
|
+
}
|
|
15
|
+
export interface EimerUtilityProcessTransportOptions extends EimerMessagePortTransportOptions {
|
|
16
|
+
}
|
|
17
|
+
export interface EimerUtilityProcessTransportDependencies extends EimerMessagePortTransportDependencies {
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Eimer UtilityProcess Transport
|
|
21
|
+
*
|
|
22
|
+
* A Transport for communicating with Electron utility_processes via MessagePort.
|
|
23
|
+
* Use it on both ends of the channel:
|
|
24
|
+
* - In the main process: pass the `utilityProcess` object returned by `utilityProcess.fork()`
|
|
25
|
+
* - Inside the utility process: pass `process.parentPort`
|
|
26
|
+
*/
|
|
27
|
+
export declare class EimerUtilityProcessTransport extends EimerMessagePortTransport {
|
|
28
|
+
constructor(port: UtilityProcessPort, options?: EimerUtilityProcessTransportOptions, dependencies?: EimerUtilityProcessTransportDependencies);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=EimerUtilityProcessTransport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EimerUtilityProcessTransport.d.ts","sourceRoot":"","sources":["../../../src/transports/EimerUtilityProcessTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,qCAAqC,EAAE,gCAAgC,EAAe,MAAM,6BAA6B,CAAC;AAE9J;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IAC/B,WAAW,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;IAChC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;IAC5D,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;CACjE;AAED,MAAM,WAAW,mCAAoC,SAAQ,gCAAgC;CAAG;AAEhG,MAAM,WAAW,wCAAyC,SAAQ,qCAAqC;CAAG;AAE1G;;;;;;;GAOG;AACH,qBAAa,4BAA6B,SAAQ,yBAAyB;gBAC3D,IAAI,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,mCAAmC,EAAE,YAAY,CAAC,EAAE,wCAAwC;CAG/I"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EimerUtilityProcessTransport = void 0;
|
|
4
|
+
const EimerMessagePortTransport_1 = require("./EimerMessagePortTransport");
|
|
5
|
+
/**
|
|
6
|
+
* Eimer UtilityProcess Transport
|
|
7
|
+
*
|
|
8
|
+
* A Transport for communicating with Electron utility_processes via MessagePort.
|
|
9
|
+
* Use it on both ends of the channel:
|
|
10
|
+
* - In the main process: pass the `utilityProcess` object returned by `utilityProcess.fork()`
|
|
11
|
+
* - Inside the utility process: pass `process.parentPort`
|
|
12
|
+
*/
|
|
13
|
+
class EimerUtilityProcessTransport extends EimerMessagePortTransport_1.EimerMessagePortTransport {
|
|
14
|
+
constructor(port, options, dependencies) {
|
|
15
|
+
super(port, { ...options, logModuleName: options?.logModuleName ?? 'EimerUtilityProcessTransport' }, dependencies);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.EimerUtilityProcessTransport = EimerUtilityProcessTransport;
|
|
19
|
+
//# sourceMappingURL=EimerUtilityProcessTransport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EimerUtilityProcessTransport.js","sourceRoot":"","sources":["../../../src/transports/EimerUtilityProcessTransport.ts"],"names":[],"mappings":";;;AAAA,2EAA8J;AAoB9J;;;;;;;GAOG;AACH,MAAa,4BAA6B,SAAQ,qDAAyB;IACvE,YAAY,IAAwB,EAAE,OAA6C,EAAE,YAAuD;QACxI,KAAK,CAAC,IAAmB,EAAE,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI,8BAA8B,EAAE,EAAE,YAAY,CAAC,CAAC;IACtI,CAAC;CACJ;AAJD,oEAIC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { EimerMessage } from '../eimer/EimerMessage';
|
|
2
|
+
import type { EimerDependencies } from '../eimer/EimerDependencies';
|
|
3
|
+
import type { EimerOptions } from '../eimer/EimerOptions';
|
|
4
|
+
import type { MessageHandler } from '../eimer/MessageHandler';
|
|
5
|
+
import type { NodeId } from '../eimer/NodeId';
|
|
6
|
+
import type { Transport } from '../eimer/Transport';
|
|
7
|
+
/**
|
|
8
|
+
* Represents a browser-side message port: a Worker (from the parent window),
|
|
9
|
+
* a DedicatedWorkerGlobalScope (`self` inside a worker), or a MessagePort
|
|
10
|
+
* from MessageChannel. All three share this shape.
|
|
11
|
+
*/
|
|
12
|
+
export interface WebWorkerPort {
|
|
13
|
+
postMessage(message: any): void;
|
|
14
|
+
addEventListener(type: 'message', listener: (event: MessageEvent) => void): void;
|
|
15
|
+
removeEventListener(type: 'message', listener: (event: MessageEvent) => void): void;
|
|
16
|
+
/** MessagePort from MessageChannel requires start() before messages flow */
|
|
17
|
+
start?(): void;
|
|
18
|
+
}
|
|
19
|
+
export interface EimerWebWorkerTransportOptions extends Pick<EimerOptions, 'logLevel' | 'logModuleName'> {
|
|
20
|
+
}
|
|
21
|
+
export interface EimerWebWorkerTransportDependencies extends Pick<EimerDependencies, 'logger'> {
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Eimer Web Worker Transport
|
|
25
|
+
*
|
|
26
|
+
* A Transport for communicating across browser Web Workers. Works with:
|
|
27
|
+
* - A `Worker` instance in the parent window (communicating with a dedicated worker)
|
|
28
|
+
* - `self` (DedicatedWorkerGlobalScope) inside the worker (communicating with the parent)
|
|
29
|
+
* - A browser `MessagePort` from `MessageChannel`
|
|
30
|
+
*
|
|
31
|
+
* Unlike EimerMessagePortTransport (which expects a Node.js EventEmitter-style `.on()` API),
|
|
32
|
+
* this transport uses `addEventListener`/`removeEventListener` and unwraps `MessageEvent.data`.
|
|
33
|
+
*/
|
|
34
|
+
export declare class EimerWebWorkerTransport implements Transport {
|
|
35
|
+
private nodeId?;
|
|
36
|
+
private incomingMessageHandler?;
|
|
37
|
+
private logger;
|
|
38
|
+
private port;
|
|
39
|
+
private boundHandleMessage;
|
|
40
|
+
constructor(port: WebWorkerPort, options?: EimerWebWorkerTransportOptions, dependencies?: EimerWebWorkerTransportDependencies);
|
|
41
|
+
initialize(nodeId: NodeId, incomingMessageHandler: MessageHandler): void;
|
|
42
|
+
send(message: EimerMessage): void;
|
|
43
|
+
shutdown(): void;
|
|
44
|
+
private handleMessage;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=EimerWebWorkerTransport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EimerWebWorkerTransport.d.ts","sourceRoot":"","sources":["../../../src/transports/EimerWebWorkerTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAIrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC1B,WAAW,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;IAChC,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI,CAAC;IACjF,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI,CAAC;IACpF,4EAA4E;IAC5E,KAAK,CAAC,IAAI,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,8BAA+B,SAAQ,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,eAAe,CAAC;CAAG;AAE3G,MAAM,WAAW,mCAAoC,SAAQ,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC;CAAG;AAEjG;;;;;;;;;;GAUG;AACH,qBAAa,uBAAwB,YAAW,SAAS;IACrD,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,sBAAsB,CAAC,CAAiB;IAChD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,kBAAkB,CAAgC;gBAE9C,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,8BAA8B,EAAE,YAAY,CAAC,EAAE,mCAAmC;IAM7H,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,cAAc,GAAG,IAAI;IAWxE,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IASjC,QAAQ,IAAI,IAAI;IAIhB,OAAO,CAAC,aAAa;CAexB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EimerWebWorkerTransport = void 0;
|
|
4
|
+
const EimerMessage_1 = require("../eimer/EimerMessage");
|
|
5
|
+
const LogLevel_1 = require("../eimer/LogLevel");
|
|
6
|
+
const EimerLogger_1 = require("../logger/EimerLogger");
|
|
7
|
+
/**
|
|
8
|
+
* Eimer Web Worker Transport
|
|
9
|
+
*
|
|
10
|
+
* A Transport for communicating across browser Web Workers. Works with:
|
|
11
|
+
* - A `Worker` instance in the parent window (communicating with a dedicated worker)
|
|
12
|
+
* - `self` (DedicatedWorkerGlobalScope) inside the worker (communicating with the parent)
|
|
13
|
+
* - A browser `MessagePort` from `MessageChannel`
|
|
14
|
+
*
|
|
15
|
+
* Unlike EimerMessagePortTransport (which expects a Node.js EventEmitter-style `.on()` API),
|
|
16
|
+
* this transport uses `addEventListener`/`removeEventListener` and unwraps `MessageEvent.data`.
|
|
17
|
+
*/
|
|
18
|
+
class EimerWebWorkerTransport {
|
|
19
|
+
constructor(port, options, dependencies) {
|
|
20
|
+
this.logger = dependencies?.logger ?? new EimerLogger_1.EimerLogger(options?.logLevel ?? LogLevel_1.LogLevel.DEBUG, options?.logModuleName ?? 'WebWorkerTransport');
|
|
21
|
+
this.port = port;
|
|
22
|
+
this.boundHandleMessage = this.handleMessage.bind(this);
|
|
23
|
+
}
|
|
24
|
+
initialize(nodeId, incomingMessageHandler) {
|
|
25
|
+
this.nodeId = nodeId;
|
|
26
|
+
this.logger.setNodeId?.(this.nodeId);
|
|
27
|
+
this.incomingMessageHandler = incomingMessageHandler;
|
|
28
|
+
this.port.addEventListener('message', this.boundHandleMessage);
|
|
29
|
+
// MessagePort from MessageChannel does not deliver messages until start() is called
|
|
30
|
+
this.port.start?.();
|
|
31
|
+
}
|
|
32
|
+
send(message) {
|
|
33
|
+
this.logger.debug('Sending message', {
|
|
34
|
+
topic: message.topic,
|
|
35
|
+
payload: message.payload,
|
|
36
|
+
});
|
|
37
|
+
this.port.postMessage(message);
|
|
38
|
+
}
|
|
39
|
+
shutdown() {
|
|
40
|
+
this.port.removeEventListener('message', this.boundHandleMessage);
|
|
41
|
+
}
|
|
42
|
+
handleMessage(event) {
|
|
43
|
+
const message = event.data;
|
|
44
|
+
if (!EimerMessage_1.EimerMessage.isEimerMessage(message)) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
this.logger.debug('Received message', {
|
|
48
|
+
from: message.from,
|
|
49
|
+
topic: message.topic,
|
|
50
|
+
payload: message.payload,
|
|
51
|
+
});
|
|
52
|
+
this.incomingMessageHandler?.(message);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.EimerWebWorkerTransport = EimerWebWorkerTransport;
|
|
56
|
+
//# sourceMappingURL=EimerWebWorkerTransport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EimerWebWorkerTransport.js","sourceRoot":"","sources":["../../../src/transports/EimerWebWorkerTransport.ts"],"names":[],"mappings":";;;AAAA,wDAAqD;AACrD,gDAA6C;AAC7C,uDAAoD;AA0BpD;;;;;;;;;;GAUG;AACH,MAAa,uBAAuB;IAOhC,YAAY,IAAmB,EAAE,OAAwC,EAAE,YAAkD;QACzH,IAAI,CAAC,MAAM,GAAG,YAAY,EAAE,MAAM,IAAI,IAAI,yBAAW,CAAC,OAAO,EAAE,QAAQ,IAAI,mBAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,IAAI,oBAAoB,CAAC,CAAC;QAC3I,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,sBAAsC;QAC7D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;QAErD,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAE/D,oFAAoF;QACpF,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;IACxB,CAAC;IAED,IAAI,CAAC,OAAqB;QACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE;YACjC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACtE,CAAC;IAEO,aAAa,CAAC,KAAmB;QACrC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;QAE3B,IAAI,CAAC,2BAAY,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,OAAO;QACX,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE;YAClC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,sBAAsB,EAAE,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;CACJ;AApDD,0DAoDC"}
|
|
@@ -4,4 +4,6 @@ export * from './EimerIpcRendererTransport';
|
|
|
4
4
|
export * from './EimerMockTransport';
|
|
5
5
|
export * from './EimerMessagePortTransport';
|
|
6
6
|
export * from './EimerWorkerThreadTransport';
|
|
7
|
+
export * from './EimerUtilityProcessTransport';
|
|
8
|
+
export * from './EimerWebWorkerTransport';
|
|
7
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transports/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transports/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC"}
|
|
@@ -20,4 +20,6 @@ __exportStar(require("./EimerIpcRendererTransport"), exports);
|
|
|
20
20
|
__exportStar(require("./EimerMockTransport"), exports);
|
|
21
21
|
__exportStar(require("./EimerMessagePortTransport"), exports);
|
|
22
22
|
__exportStar(require("./EimerWorkerThreadTransport"), exports);
|
|
23
|
+
__exportStar(require("./EimerUtilityProcessTransport"), exports);
|
|
24
|
+
__exportStar(require("./EimerWebWorkerTransport"), exports);
|
|
23
25
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transports/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAwC;AACxC,0DAAwC;AACxC,8DAA4C;AAC5C,uDAAqC;AACrC,8DAA4C;AAC5C,+DAA6C"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transports/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAwC;AACxC,0DAAwC;AACxC,8DAA4C;AAC5C,uDAAqC;AACrC,8DAA4C;AAC5C,+DAA6C;AAC7C,iEAA+C;AAC/C,4DAA0C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Eimer.js","sourceRoot":"","sources":["../../../src/eimer/Eimer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"Eimer.js","sourceRoot":"","sources":["../../../src/eimer/Eimer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { EimerMessagePortTransport } from './EimerMessagePortTransport';
|
|
2
|
+
/**
|
|
3
|
+
* Eimer UtilityProcess Transport
|
|
4
|
+
*
|
|
5
|
+
* A Transport for communicating with Electron utility_processes via MessagePort.
|
|
6
|
+
* Use it on both ends of the channel:
|
|
7
|
+
* - In the main process: pass the `utilityProcess` object returned by `utilityProcess.fork()`
|
|
8
|
+
* - Inside the utility process: pass `process.parentPort`
|
|
9
|
+
*/
|
|
10
|
+
export class EimerUtilityProcessTransport extends EimerMessagePortTransport {
|
|
11
|
+
constructor(port, options, dependencies) {
|
|
12
|
+
super(port, { ...options, logModuleName: options?.logModuleName ?? 'EimerUtilityProcessTransport' }, dependencies);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=EimerUtilityProcessTransport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EimerUtilityProcessTransport.js","sourceRoot":"","sources":["../../../src/transports/EimerUtilityProcessTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAwF,MAAM,6BAA6B,CAAC;AAoB9J;;;;;;;GAOG;AACH,MAAM,OAAO,4BAA6B,SAAQ,yBAAyB;IACvE,YAAY,IAAwB,EAAE,OAA6C,EAAE,YAAuD;QACxI,KAAK,CAAC,IAAmB,EAAE,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI,8BAA8B,EAAE,EAAE,YAAY,CAAC,CAAC;IACtI,CAAC;CACJ"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { EimerMessage } from '../eimer/EimerMessage';
|
|
2
|
+
import { LogLevel } from '../eimer/LogLevel';
|
|
3
|
+
import { EimerLogger } from '../logger/EimerLogger';
|
|
4
|
+
/**
|
|
5
|
+
* Eimer Web Worker Transport
|
|
6
|
+
*
|
|
7
|
+
* A Transport for communicating across browser Web Workers. Works with:
|
|
8
|
+
* - A `Worker` instance in the parent window (communicating with a dedicated worker)
|
|
9
|
+
* - `self` (DedicatedWorkerGlobalScope) inside the worker (communicating with the parent)
|
|
10
|
+
* - A browser `MessagePort` from `MessageChannel`
|
|
11
|
+
*
|
|
12
|
+
* Unlike EimerMessagePortTransport (which expects a Node.js EventEmitter-style `.on()` API),
|
|
13
|
+
* this transport uses `addEventListener`/`removeEventListener` and unwraps `MessageEvent.data`.
|
|
14
|
+
*/
|
|
15
|
+
export class EimerWebWorkerTransport {
|
|
16
|
+
constructor(port, options, dependencies) {
|
|
17
|
+
this.logger = dependencies?.logger ?? new EimerLogger(options?.logLevel ?? LogLevel.DEBUG, options?.logModuleName ?? 'WebWorkerTransport');
|
|
18
|
+
this.port = port;
|
|
19
|
+
this.boundHandleMessage = this.handleMessage.bind(this);
|
|
20
|
+
}
|
|
21
|
+
initialize(nodeId, incomingMessageHandler) {
|
|
22
|
+
this.nodeId = nodeId;
|
|
23
|
+
this.logger.setNodeId?.(this.nodeId);
|
|
24
|
+
this.incomingMessageHandler = incomingMessageHandler;
|
|
25
|
+
this.port.addEventListener('message', this.boundHandleMessage);
|
|
26
|
+
// MessagePort from MessageChannel does not deliver messages until start() is called
|
|
27
|
+
this.port.start?.();
|
|
28
|
+
}
|
|
29
|
+
send(message) {
|
|
30
|
+
this.logger.debug('Sending message', {
|
|
31
|
+
topic: message.topic,
|
|
32
|
+
payload: message.payload,
|
|
33
|
+
});
|
|
34
|
+
this.port.postMessage(message);
|
|
35
|
+
}
|
|
36
|
+
shutdown() {
|
|
37
|
+
this.port.removeEventListener('message', this.boundHandleMessage);
|
|
38
|
+
}
|
|
39
|
+
handleMessage(event) {
|
|
40
|
+
const message = event.data;
|
|
41
|
+
if (!EimerMessage.isEimerMessage(message)) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
this.logger.debug('Received message', {
|
|
45
|
+
from: message.from,
|
|
46
|
+
topic: message.topic,
|
|
47
|
+
payload: message.payload,
|
|
48
|
+
});
|
|
49
|
+
this.incomingMessageHandler?.(message);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=EimerWebWorkerTransport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EimerWebWorkerTransport.js","sourceRoot":"","sources":["../../../src/transports/EimerWebWorkerTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AA0BpD;;;;;;;;;;GAUG;AACH,MAAM,OAAO,uBAAuB;IAOhC,YAAY,IAAmB,EAAE,OAAwC,EAAE,YAAkD;QACzH,IAAI,CAAC,MAAM,GAAG,YAAY,EAAE,MAAM,IAAI,IAAI,WAAW,CAAC,OAAO,EAAE,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,IAAI,oBAAoB,CAAC,CAAC;QAC3I,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,sBAAsC;QAC7D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;QAErD,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAE/D,oFAAoF;QACpF,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;IACxB,CAAC;IAED,IAAI,CAAC,OAAqB;QACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE;YACjC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACtE,CAAC;IAEO,aAAa,CAAC,KAAmB;QACrC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;QAE3B,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,OAAO;QACX,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE;YAClC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,sBAAsB,EAAE,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;CACJ"}
|
|
@@ -4,4 +4,6 @@ export * from './EimerIpcRendererTransport';
|
|
|
4
4
|
export * from './EimerMockTransport';
|
|
5
5
|
export * from './EimerMessagePortTransport';
|
|
6
6
|
export * from './EimerWorkerThreadTransport';
|
|
7
|
+
export * from './EimerUtilityProcessTransport';
|
|
8
|
+
export * from './EimerWebWorkerTransport';
|
|
7
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transports/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transports/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eimer",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Electron Interprocess MEssage Router - IPC library for Electron.js",
|
|
5
5
|
"author": "Jan Hapke (https://janhapke.com)",
|
|
6
6
|
"license": "MIT",
|
|
@@ -54,4 +54,4 @@
|
|
|
54
54
|
"typescript": "^5.0.0",
|
|
55
55
|
"vitest": "^4.0.14"
|
|
56
56
|
}
|
|
57
|
-
}
|
|
57
|
+
}
|