@rome-os/app-runtime 0.2.3 → 0.3.0
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/index.d.ts +292 -101
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +7 -6
- package/dist/ipc.d.ts +0 -116
- package/dist/ipc.d.ts.map +0 -1
- package/dist/ipc.js +0 -402
- package/dist/ipc.js.map +0 -1
- package/dist/proxies.d.ts +0 -63
- package/dist/proxies.d.ts.map +0 -1
- package/dist/proxies.js +0 -92
- package/dist/proxies.js.map +0 -1
- package/dist/worker-rpc.d.ts +0 -35
- package/dist/worker-rpc.d.ts.map +0 -1
- package/dist/worker-rpc.js +0 -149
- package/dist/worker-rpc.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rome-os/app-runtime",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -18,6 +18,11 @@
|
|
|
18
18
|
"publishConfig": {
|
|
19
19
|
"access": "public"
|
|
20
20
|
},
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsc",
|
|
23
|
+
"prepare": "tsc",
|
|
24
|
+
"typecheck": "tsc --noEmit"
|
|
25
|
+
},
|
|
21
26
|
"dependencies": {
|
|
22
27
|
"drizzle-orm": "^0.45.1",
|
|
23
28
|
"ws": "^8.18.0",
|
|
@@ -28,9 +33,5 @@
|
|
|
28
33
|
"@opentelemetry/sdk-trace-base": "^2.5.1",
|
|
29
34
|
"@types/ws": "^8.18.0",
|
|
30
35
|
"typescript": "^5.9.3"
|
|
31
|
-
},
|
|
32
|
-
"scripts": {
|
|
33
|
-
"build": "tsc",
|
|
34
|
-
"typecheck": "tsc --noEmit"
|
|
35
36
|
}
|
|
36
|
-
}
|
|
37
|
+
}
|
package/dist/ipc.d.ts
DELETED
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
export interface IpcRequestMessage {
|
|
2
|
-
type: "rpc_request";
|
|
3
|
-
reqId: string;
|
|
4
|
-
method: string;
|
|
5
|
-
params: unknown;
|
|
6
|
-
}
|
|
7
|
-
export interface IpcResponseMessage {
|
|
8
|
-
type: "rpc_response";
|
|
9
|
-
reqId: string;
|
|
10
|
-
result?: unknown;
|
|
11
|
-
error?: string;
|
|
12
|
-
}
|
|
13
|
-
export interface IpcStreamOpenMessage {
|
|
14
|
-
type: "stream_open";
|
|
15
|
-
channelId: string;
|
|
16
|
-
name: string;
|
|
17
|
-
}
|
|
18
|
-
export interface IpcStreamEventMessage {
|
|
19
|
-
type: "sent_event";
|
|
20
|
-
channelId: string;
|
|
21
|
-
value: unknown;
|
|
22
|
-
}
|
|
23
|
-
export interface IpcStreamCloseMessage {
|
|
24
|
-
type: "stream_close";
|
|
25
|
-
channelId: string;
|
|
26
|
-
reason?: string;
|
|
27
|
-
error?: string;
|
|
28
|
-
}
|
|
29
|
-
export type IpcMessage = IpcRequestMessage | IpcResponseMessage | IpcStreamOpenMessage | IpcStreamEventMessage | IpcStreamCloseMessage;
|
|
30
|
-
export declare function isIpcMessage(message: unknown): message is IpcMessage;
|
|
31
|
-
export declare class IpcRpcTimeoutError extends Error {
|
|
32
|
-
constructor(method: string, timeoutMs: number);
|
|
33
|
-
}
|
|
34
|
-
export declare class IpcRpcDisconnectError extends Error {
|
|
35
|
-
constructor();
|
|
36
|
-
}
|
|
37
|
-
export declare class IpcStreamError extends Error {
|
|
38
|
-
constructor(message: string);
|
|
39
|
-
}
|
|
40
|
-
export interface IpcOutboundStream<T> {
|
|
41
|
-
readonly name: string;
|
|
42
|
-
readonly channelId: string;
|
|
43
|
-
send(value: T): void;
|
|
44
|
-
close(opts?: {
|
|
45
|
-
error?: Error;
|
|
46
|
-
reason?: string;
|
|
47
|
-
}): void;
|
|
48
|
-
}
|
|
49
|
-
export interface IpcInboundStream<T> {
|
|
50
|
-
readonly name: string;
|
|
51
|
-
readonly channelId: string;
|
|
52
|
-
iter(): AsyncIterable<T>;
|
|
53
|
-
}
|
|
54
|
-
export interface IpcCallContext {
|
|
55
|
-
/** Open an outbound stream owned by this side, addressed back to the caller. */
|
|
56
|
-
openStream<T>(name: string): IpcOutboundStream<T>;
|
|
57
|
-
}
|
|
58
|
-
export interface IpcTransport {
|
|
59
|
-
/** Send a message to the peer. */
|
|
60
|
-
send(message: IpcMessage): void;
|
|
61
|
-
/** Subscribe to incoming messages. */
|
|
62
|
-
onMessage(listener: (message: IpcMessage) => void): () => void;
|
|
63
|
-
/** Subscribe to disconnection events. */
|
|
64
|
-
onDisconnect(listener: () => void): () => void;
|
|
65
|
-
/** Whether the channel is connected (for outbound sends). */
|
|
66
|
-
readonly connected: boolean;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Bidirectional RPC + streams over a Node IPC channel. Both sides construct
|
|
70
|
-
* one of these and they exchange `IpcMessage`s through `IpcTransport.send`.
|
|
71
|
-
*
|
|
72
|
-
* `origin` is a short string ("main", "worker", etc.) used as a prefix in
|
|
73
|
-
* channelId allocation so two sides can't collide.
|
|
74
|
-
*/
|
|
75
|
-
export declare class IpcRpc {
|
|
76
|
-
private transport;
|
|
77
|
-
private origin;
|
|
78
|
-
private options;
|
|
79
|
-
private pending;
|
|
80
|
-
private handlers;
|
|
81
|
-
private streamHandlers;
|
|
82
|
-
private inboundStreams;
|
|
83
|
-
private outboundChannels;
|
|
84
|
-
private channelCounter;
|
|
85
|
-
private cleanupTransport?;
|
|
86
|
-
constructor(transport: IpcTransport, origin: string, options?: {
|
|
87
|
-
defaultTimeoutMs?: number;
|
|
88
|
-
});
|
|
89
|
-
/** Tear down listeners. The transport itself is not closed by this call. */
|
|
90
|
-
dispose(): void;
|
|
91
|
-
handle<Req = unknown, Res = unknown>(method: string, handler: (req: Req, ctx: IpcCallContext) => Promise<Res>): void;
|
|
92
|
-
unhandle(method: string): void;
|
|
93
|
-
call<Req = unknown, Res = unknown>(method: string, params: Req, options?: {
|
|
94
|
-
timeoutMs?: number;
|
|
95
|
-
}): Promise<Res>;
|
|
96
|
-
openStream<T>(name: string): IpcOutboundStream<T>;
|
|
97
|
-
/**
|
|
98
|
-
* Register a handler for inbound streams whose name matches `namePattern`.
|
|
99
|
-
* String patterns match exactly; RegExp patterns match by `.test(name)`.
|
|
100
|
-
*/
|
|
101
|
-
onStream<T>(namePattern: string | RegExp, handler: (stream: IpcInboundStream<T>) => Promise<void> | void): void;
|
|
102
|
-
private dispatch;
|
|
103
|
-
private handleRequest;
|
|
104
|
-
private handleResponse;
|
|
105
|
-
private handleStreamOpen;
|
|
106
|
-
private handleStreamEvent;
|
|
107
|
-
private handleStreamClose;
|
|
108
|
-
private findStreamHandler;
|
|
109
|
-
private buildInboundStream;
|
|
110
|
-
private handleDisconnect;
|
|
111
|
-
}
|
|
112
|
-
/** Build an IpcTransport over `process.send` / `process.on("message")` (worker side). */
|
|
113
|
-
export declare function createWorkerProcessTransport(): IpcTransport;
|
|
114
|
-
/** Build an IpcTransport over a `ChildProcess` (main side). */
|
|
115
|
-
export declare function createChildProcessTransport(child: import("node:child_process").ChildProcess): IpcTransport;
|
|
116
|
-
//# sourceMappingURL=ipc.d.ts.map
|
package/dist/ipc.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ipc.d.ts","sourceRoot":"","sources":["../src/ipc.ts"],"names":[],"mappings":"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"}
|
package/dist/ipc.js
DELETED
|
@@ -1,402 +0,0 @@
|
|
|
1
|
-
// Bidirectional IPC primitives — RFC 013 §4.3.
|
|
2
|
-
//
|
|
3
|
-
// IpcRpc builds two abstractions on a single Node.js IPC channel:
|
|
4
|
-
// - call() / handle() for request/response in either direction
|
|
5
|
-
// - openStream() / onStream() for named one-shot or long-running streams
|
|
6
|
-
//
|
|
7
|
-
// Wire format (5 message types):
|
|
8
|
-
// - rpc_request { reqId, method, params }
|
|
9
|
-
// - rpc_response { reqId, result?, error? }
|
|
10
|
-
// - stream_open { channelId, name }
|
|
11
|
-
// - sent_event { channelId, value }
|
|
12
|
-
// - stream_close { channelId, reason?, error? }
|
|
13
|
-
import { randomUUID } from "node:crypto";
|
|
14
|
-
export function isIpcMessage(message) {
|
|
15
|
-
if (typeof message !== "object" || message === null)
|
|
16
|
-
return false;
|
|
17
|
-
const m = message;
|
|
18
|
-
// Distinguish from legacy worker-rpc messages (which use `clientId`/`id`,
|
|
19
|
-
// not `reqId`/`channelId`). A message qualifies as IPC only if it uses
|
|
20
|
-
// the new field names.
|
|
21
|
-
switch (m.type) {
|
|
22
|
-
case "rpc_request":
|
|
23
|
-
case "rpc_response":
|
|
24
|
-
return typeof m.reqId === "string";
|
|
25
|
-
case "stream_open":
|
|
26
|
-
case "sent_event":
|
|
27
|
-
case "stream_close":
|
|
28
|
-
return typeof m.channelId === "string";
|
|
29
|
-
default:
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
export class IpcRpcTimeoutError extends Error {
|
|
34
|
-
constructor(method, timeoutMs) {
|
|
35
|
-
super(`IpcRpc timeout: ${method} (${timeoutMs}ms)`);
|
|
36
|
-
this.name = "IpcRpcTimeoutError";
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
export class IpcRpcDisconnectError extends Error {
|
|
40
|
-
constructor() {
|
|
41
|
-
super("IpcRpc peer disconnected");
|
|
42
|
-
this.name = "IpcRpcDisconnectError";
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
export class IpcStreamError extends Error {
|
|
46
|
-
constructor(message) {
|
|
47
|
-
super(message);
|
|
48
|
-
this.name = "IpcStreamError";
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
const DEFAULT_RPC_TIMEOUT_MS = 30_000;
|
|
52
|
-
/**
|
|
53
|
-
* Bidirectional RPC + streams over a Node IPC channel. Both sides construct
|
|
54
|
-
* one of these and they exchange `IpcMessage`s through `IpcTransport.send`.
|
|
55
|
-
*
|
|
56
|
-
* `origin` is a short string ("main", "worker", etc.) used as a prefix in
|
|
57
|
-
* channelId allocation so two sides can't collide.
|
|
58
|
-
*/
|
|
59
|
-
export class IpcRpc {
|
|
60
|
-
transport;
|
|
61
|
-
origin;
|
|
62
|
-
options;
|
|
63
|
-
pending = new Map();
|
|
64
|
-
handlers = new Map();
|
|
65
|
-
streamHandlers = new Map();
|
|
66
|
-
inboundStreams = new Map();
|
|
67
|
-
outboundChannels = new Set();
|
|
68
|
-
channelCounter = 0;
|
|
69
|
-
cleanupTransport;
|
|
70
|
-
constructor(transport, origin, options = {}) {
|
|
71
|
-
this.transport = transport;
|
|
72
|
-
this.origin = origin;
|
|
73
|
-
this.options = options;
|
|
74
|
-
const offMessage = transport.onMessage((message) => {
|
|
75
|
-
if (!isIpcMessage(message))
|
|
76
|
-
return;
|
|
77
|
-
this.dispatch(message);
|
|
78
|
-
});
|
|
79
|
-
const offDisconnect = transport.onDisconnect(() => {
|
|
80
|
-
this.handleDisconnect();
|
|
81
|
-
});
|
|
82
|
-
this.cleanupTransport = () => {
|
|
83
|
-
offMessage();
|
|
84
|
-
offDisconnect();
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
/** Tear down listeners. The transport itself is not closed by this call. */
|
|
88
|
-
dispose() {
|
|
89
|
-
this.cleanupTransport?.();
|
|
90
|
-
this.cleanupTransport = undefined;
|
|
91
|
-
this.handleDisconnect();
|
|
92
|
-
}
|
|
93
|
-
// -------------------------------------------------------------------------
|
|
94
|
-
// RPC
|
|
95
|
-
// -------------------------------------------------------------------------
|
|
96
|
-
handle(method, handler) {
|
|
97
|
-
this.handlers.set(method, handler);
|
|
98
|
-
}
|
|
99
|
-
unhandle(method) {
|
|
100
|
-
this.handlers.delete(method);
|
|
101
|
-
}
|
|
102
|
-
async call(method, params, options) {
|
|
103
|
-
if (!this.transport.connected) {
|
|
104
|
-
throw new IpcRpcDisconnectError();
|
|
105
|
-
}
|
|
106
|
-
const reqId = randomUUID();
|
|
107
|
-
const timeoutMs = options?.timeoutMs ?? this.options.defaultTimeoutMs ?? DEFAULT_RPC_TIMEOUT_MS;
|
|
108
|
-
return await new Promise((resolve, reject) => {
|
|
109
|
-
const timeout = setTimeout(() => {
|
|
110
|
-
this.pending.delete(reqId);
|
|
111
|
-
reject(new IpcRpcTimeoutError(method, timeoutMs));
|
|
112
|
-
}, timeoutMs);
|
|
113
|
-
this.pending.set(reqId, {
|
|
114
|
-
resolve: (value) => resolve(value),
|
|
115
|
-
reject,
|
|
116
|
-
timeout,
|
|
117
|
-
method,
|
|
118
|
-
});
|
|
119
|
-
try {
|
|
120
|
-
this.transport.send({ type: "rpc_request", reqId, method, params });
|
|
121
|
-
}
|
|
122
|
-
catch (err) {
|
|
123
|
-
clearTimeout(timeout);
|
|
124
|
-
this.pending.delete(reqId);
|
|
125
|
-
reject(err instanceof Error ? err : new Error(String(err)));
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
// -------------------------------------------------------------------------
|
|
130
|
-
// Streams
|
|
131
|
-
// -------------------------------------------------------------------------
|
|
132
|
-
openStream(name) {
|
|
133
|
-
const channelId = `${this.origin}:${++this.channelCounter}`;
|
|
134
|
-
this.outboundChannels.add(channelId);
|
|
135
|
-
if (this.transport.connected) {
|
|
136
|
-
this.transport.send({ type: "stream_open", channelId, name });
|
|
137
|
-
}
|
|
138
|
-
let closed = false;
|
|
139
|
-
const ipc = this;
|
|
140
|
-
return {
|
|
141
|
-
name,
|
|
142
|
-
channelId,
|
|
143
|
-
send(value) {
|
|
144
|
-
if (closed)
|
|
145
|
-
return;
|
|
146
|
-
if (!ipc.transport.connected)
|
|
147
|
-
return;
|
|
148
|
-
ipc.transport.send({ type: "sent_event", channelId, value });
|
|
149
|
-
},
|
|
150
|
-
close(opts) {
|
|
151
|
-
if (closed)
|
|
152
|
-
return;
|
|
153
|
-
closed = true;
|
|
154
|
-
ipc.outboundChannels.delete(channelId);
|
|
155
|
-
if (!ipc.transport.connected)
|
|
156
|
-
return;
|
|
157
|
-
ipc.transport.send({
|
|
158
|
-
type: "stream_close",
|
|
159
|
-
channelId,
|
|
160
|
-
reason: opts?.reason,
|
|
161
|
-
error: opts?.error?.message,
|
|
162
|
-
});
|
|
163
|
-
},
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Register a handler for inbound streams whose name matches `namePattern`.
|
|
168
|
-
* String patterns match exactly; RegExp patterns match by `.test(name)`.
|
|
169
|
-
*/
|
|
170
|
-
onStream(namePattern, handler) {
|
|
171
|
-
this.streamHandlers.set(namePattern, handler);
|
|
172
|
-
}
|
|
173
|
-
// -------------------------------------------------------------------------
|
|
174
|
-
// Dispatch
|
|
175
|
-
// -------------------------------------------------------------------------
|
|
176
|
-
async dispatch(message) {
|
|
177
|
-
switch (message.type) {
|
|
178
|
-
case "rpc_request":
|
|
179
|
-
await this.handleRequest(message);
|
|
180
|
-
return;
|
|
181
|
-
case "rpc_response":
|
|
182
|
-
this.handleResponse(message);
|
|
183
|
-
return;
|
|
184
|
-
case "stream_open":
|
|
185
|
-
this.handleStreamOpen(message);
|
|
186
|
-
return;
|
|
187
|
-
case "sent_event":
|
|
188
|
-
this.handleStreamEvent(message);
|
|
189
|
-
return;
|
|
190
|
-
case "stream_close":
|
|
191
|
-
this.handleStreamClose(message);
|
|
192
|
-
return;
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
async handleRequest(message) {
|
|
196
|
-
const handler = this.handlers.get(message.method);
|
|
197
|
-
if (!handler) {
|
|
198
|
-
this.transport.send({
|
|
199
|
-
type: "rpc_response",
|
|
200
|
-
reqId: message.reqId,
|
|
201
|
-
error: `Unknown IPC method: ${message.method}`,
|
|
202
|
-
});
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
const ctx = {
|
|
206
|
-
openStream: (name) => this.openStream(name),
|
|
207
|
-
};
|
|
208
|
-
try {
|
|
209
|
-
const result = await handler(message.params, ctx);
|
|
210
|
-
this.transport.send({ type: "rpc_response", reqId: message.reqId, result });
|
|
211
|
-
}
|
|
212
|
-
catch (err) {
|
|
213
|
-
this.transport.send({
|
|
214
|
-
type: "rpc_response",
|
|
215
|
-
reqId: message.reqId,
|
|
216
|
-
error: err instanceof Error ? err.message : String(err),
|
|
217
|
-
});
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
handleResponse(message) {
|
|
221
|
-
const pending = this.pending.get(message.reqId);
|
|
222
|
-
if (!pending)
|
|
223
|
-
return;
|
|
224
|
-
clearTimeout(pending.timeout);
|
|
225
|
-
this.pending.delete(message.reqId);
|
|
226
|
-
if (message.error !== undefined) {
|
|
227
|
-
pending.reject(new Error(message.error));
|
|
228
|
-
}
|
|
229
|
-
else {
|
|
230
|
-
pending.resolve(message.result);
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
handleStreamOpen(message) {
|
|
234
|
-
const handler = this.findStreamHandler(message.name);
|
|
235
|
-
if (!handler) {
|
|
236
|
-
this.transport.send({
|
|
237
|
-
type: "stream_close",
|
|
238
|
-
channelId: message.channelId,
|
|
239
|
-
error: `No stream handler for: ${message.name}`,
|
|
240
|
-
});
|
|
241
|
-
return;
|
|
242
|
-
}
|
|
243
|
-
const state = {
|
|
244
|
-
name: message.name,
|
|
245
|
-
channelId: message.channelId,
|
|
246
|
-
values: [],
|
|
247
|
-
resolvers: [],
|
|
248
|
-
done: false,
|
|
249
|
-
};
|
|
250
|
-
this.inboundStreams.set(message.channelId, state);
|
|
251
|
-
const inbound = this.buildInboundStream(state);
|
|
252
|
-
Promise.resolve(handler(inbound)).catch(() => {
|
|
253
|
-
// Stream handler errors are surfaced via the inbound iter; nothing
|
|
254
|
-
// additional to do here other than not crash the dispatcher.
|
|
255
|
-
});
|
|
256
|
-
}
|
|
257
|
-
handleStreamEvent(message) {
|
|
258
|
-
const state = this.inboundStreams.get(message.channelId);
|
|
259
|
-
if (!state || state.done)
|
|
260
|
-
return;
|
|
261
|
-
if (state.resolvers.length > 0) {
|
|
262
|
-
const r = state.resolvers.shift();
|
|
263
|
-
r({ value: message.value, done: false });
|
|
264
|
-
}
|
|
265
|
-
else {
|
|
266
|
-
state.values.push(message.value);
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
handleStreamClose(message) {
|
|
270
|
-
const state = this.inboundStreams.get(message.channelId);
|
|
271
|
-
if (!state)
|
|
272
|
-
return;
|
|
273
|
-
state.done = true;
|
|
274
|
-
if (message.error) {
|
|
275
|
-
state.error = new IpcStreamError(message.error);
|
|
276
|
-
}
|
|
277
|
-
while (state.resolvers.length > 0) {
|
|
278
|
-
const r = state.resolvers.shift();
|
|
279
|
-
r({ value: undefined, done: true });
|
|
280
|
-
}
|
|
281
|
-
this.inboundStreams.delete(message.channelId);
|
|
282
|
-
}
|
|
283
|
-
findStreamHandler(name) {
|
|
284
|
-
for (const [pattern, handler] of this.streamHandlers.entries()) {
|
|
285
|
-
if (typeof pattern === "string") {
|
|
286
|
-
if (pattern === name)
|
|
287
|
-
return handler;
|
|
288
|
-
}
|
|
289
|
-
else if (pattern.test(name)) {
|
|
290
|
-
return handler;
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
return undefined;
|
|
294
|
-
}
|
|
295
|
-
buildInboundStream(state) {
|
|
296
|
-
const stream = {
|
|
297
|
-
name: state.name,
|
|
298
|
-
channelId: state.channelId,
|
|
299
|
-
iter() {
|
|
300
|
-
return {
|
|
301
|
-
[Symbol.asyncIterator]() {
|
|
302
|
-
return {
|
|
303
|
-
async next() {
|
|
304
|
-
if (state.values.length > 0) {
|
|
305
|
-
return { value: state.values.shift(), done: false };
|
|
306
|
-
}
|
|
307
|
-
if (state.done) {
|
|
308
|
-
if (state.error)
|
|
309
|
-
throw state.error;
|
|
310
|
-
return { value: undefined, done: true };
|
|
311
|
-
}
|
|
312
|
-
return await new Promise((resolve) => {
|
|
313
|
-
state.resolvers.push(resolve);
|
|
314
|
-
});
|
|
315
|
-
},
|
|
316
|
-
};
|
|
317
|
-
},
|
|
318
|
-
};
|
|
319
|
-
},
|
|
320
|
-
};
|
|
321
|
-
return stream;
|
|
322
|
-
}
|
|
323
|
-
handleDisconnect() {
|
|
324
|
-
const err = new IpcRpcDisconnectError();
|
|
325
|
-
for (const pending of this.pending.values()) {
|
|
326
|
-
clearTimeout(pending.timeout);
|
|
327
|
-
pending.reject(err);
|
|
328
|
-
}
|
|
329
|
-
this.pending.clear();
|
|
330
|
-
for (const state of this.inboundStreams.values()) {
|
|
331
|
-
state.done = true;
|
|
332
|
-
state.error = err;
|
|
333
|
-
while (state.resolvers.length > 0) {
|
|
334
|
-
const r = state.resolvers.shift();
|
|
335
|
-
r({ value: undefined, done: true });
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
this.inboundStreams.clear();
|
|
339
|
-
this.outboundChannels.clear();
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
// ---------------------------------------------------------------------------
|
|
343
|
-
// Convenience transports
|
|
344
|
-
// ---------------------------------------------------------------------------
|
|
345
|
-
/** Build an IpcTransport over `process.send` / `process.on("message")` (worker side). */
|
|
346
|
-
export function createWorkerProcessTransport() {
|
|
347
|
-
return {
|
|
348
|
-
get connected() {
|
|
349
|
-
return !!process.send && process.connected !== false;
|
|
350
|
-
},
|
|
351
|
-
send(message) {
|
|
352
|
-
if (!process.send) {
|
|
353
|
-
throw new Error("createWorkerProcessTransport: not running in a Node child process");
|
|
354
|
-
}
|
|
355
|
-
process.send(message);
|
|
356
|
-
},
|
|
357
|
-
onMessage(listener) {
|
|
358
|
-
const handler = (message) => {
|
|
359
|
-
if (isIpcMessage(message))
|
|
360
|
-
listener(message);
|
|
361
|
-
};
|
|
362
|
-
process.on("message", handler);
|
|
363
|
-
return () => process.off("message", handler);
|
|
364
|
-
},
|
|
365
|
-
onDisconnect(listener) {
|
|
366
|
-
const handler = () => listener();
|
|
367
|
-
process.on("disconnect", handler);
|
|
368
|
-
return () => process.off("disconnect", handler);
|
|
369
|
-
},
|
|
370
|
-
};
|
|
371
|
-
}
|
|
372
|
-
/** Build an IpcTransport over a `ChildProcess` (main side). */
|
|
373
|
-
export function createChildProcessTransport(child) {
|
|
374
|
-
return {
|
|
375
|
-
get connected() {
|
|
376
|
-
return child.connected;
|
|
377
|
-
},
|
|
378
|
-
send(message) {
|
|
379
|
-
if (!child.connected)
|
|
380
|
-
return;
|
|
381
|
-
child.send(message);
|
|
382
|
-
},
|
|
383
|
-
onMessage(listener) {
|
|
384
|
-
const handler = (message) => {
|
|
385
|
-
if (isIpcMessage(message))
|
|
386
|
-
listener(message);
|
|
387
|
-
};
|
|
388
|
-
child.on("message", handler);
|
|
389
|
-
return () => child.off("message", handler);
|
|
390
|
-
},
|
|
391
|
-
onDisconnect(listener) {
|
|
392
|
-
const handler = () => listener();
|
|
393
|
-
child.on("disconnect", handler);
|
|
394
|
-
child.on("exit", handler);
|
|
395
|
-
return () => {
|
|
396
|
-
child.off("disconnect", handler);
|
|
397
|
-
child.off("exit", handler);
|
|
398
|
-
};
|
|
399
|
-
},
|
|
400
|
-
};
|
|
401
|
-
}
|
|
402
|
-
//# sourceMappingURL=ipc.js.map
|
package/dist/ipc.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ipc.js","sourceRoot":"","sources":["../src/ipc.ts"],"names":[],"mappings":"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"}
|
package/dist/proxies.d.ts
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import type { AppLifecycle, EventCatalogEntry, EventCatalogReader, EventPublisher, Routine, RoutineEngine } from "./index.js";
|
|
2
|
-
/**
|
|
3
|
-
* Worker-side stand-in for the main-process `RoutineEngine`. Implements the
|
|
4
|
-
* `RoutineEngine` surface an action depends on, so the same `deps.routineEngine`
|
|
5
|
-
* works whether the action runs in the main process (real engine) or a worker
|
|
6
|
-
* (this proxy).
|
|
7
|
-
*/
|
|
8
|
-
export declare class RoutineEngineProxy implements RoutineEngine {
|
|
9
|
-
/** Bring a persisted routine live. The main process re-reads the row by id
|
|
10
|
-
* and activates it, so only the id needs to cross the wire. */
|
|
11
|
-
activate(routine: Routine): Promise<void>;
|
|
12
|
-
/** Tear down a routine's triggers in the main process. */
|
|
13
|
-
deactivate(routineId: string): Promise<void>;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Worker-side stand-in for the main-process `EventBus`. Publishing a domain
|
|
17
|
-
* event also declares its type to the event catalog (RFC 020) — both happen in
|
|
18
|
-
* the main process's `events.publish` handler.
|
|
19
|
-
*/
|
|
20
|
-
export declare class EventBusProxy implements EventPublisher {
|
|
21
|
-
publish(event: {
|
|
22
|
-
name: string;
|
|
23
|
-
source: string;
|
|
24
|
-
payload?: Record<string, unknown>;
|
|
25
|
-
}): Promise<{
|
|
26
|
-
accepted: true;
|
|
27
|
-
}>;
|
|
28
|
-
}
|
|
29
|
-
/** Worker-side stand-in for the main-process `EventCatalog` (read side). */
|
|
30
|
-
export declare class EventCatalogProxy implements EventCatalogReader {
|
|
31
|
-
/** Find emittable event types matching `query`, best matches first, capped at
|
|
32
|
-
* `limit`. `total` is the full match count before truncation. */
|
|
33
|
-
search(query: string, limit: number): Promise<{
|
|
34
|
-
entries: EventCatalogEntry[];
|
|
35
|
-
total: number;
|
|
36
|
-
}>;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Worker-side stand-in for the main-process app lifecycle authority. Each method
|
|
40
|
-
* owns its RPC method string and timeout. Results are app-local shapes the
|
|
41
|
-
* action knows, so they return as `unknown` and the caller narrows them —
|
|
42
|
-
* keeping those result types out of this SDK.
|
|
43
|
-
*/
|
|
44
|
-
export declare class AppManagerProxy implements AppLifecycle {
|
|
45
|
-
create(params: {
|
|
46
|
-
appId: string;
|
|
47
|
-
rootPath: string;
|
|
48
|
-
}): Promise<unknown>;
|
|
49
|
-
install(params: {
|
|
50
|
-
appId: string;
|
|
51
|
-
source: unknown;
|
|
52
|
-
enabled?: boolean;
|
|
53
|
-
}): Promise<unknown>;
|
|
54
|
-
uninstall(params: {
|
|
55
|
-
appId: string;
|
|
56
|
-
purge?: boolean;
|
|
57
|
-
}): Promise<unknown>;
|
|
58
|
-
setEnabled(params: {
|
|
59
|
-
appId: string;
|
|
60
|
-
enabled: boolean;
|
|
61
|
-
}): Promise<unknown>;
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=proxies.d.ts.map
|
package/dist/proxies.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"proxies.d.ts","sourceRoot":"","sources":["../src/proxies.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,OAAO,EACP,aAAa,EACd,MAAM,YAAY,CAAC;AAOpB;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACtD;mEAC+D;IACzD,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,0DAA0D;IACpD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGnD;AAED;;;;GAIG;AACH,qBAAa,aAAc,YAAW,cAAc;IAC5C,OAAO,CAAC,KAAK,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,CAAC;CAUhC;AAED,4EAA4E;AAC5E,qBAAa,iBAAkB,YAAW,kBAAkB;IAC1D;qEACiE;IAC3D,MAAM,CACV,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAM5D;AAED;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,YAAY;IAC5C,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAMrE,OAAO,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAMxF,SAAS,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAMvE,UAAU,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAKhF"}
|