electron-effect-rpc 0.3.0 → 0.5.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/README.md +48 -11
- package/dist/kit.d.ts +1 -2
- package/dist/kit.d.ts.map +1 -1
- package/dist/kit.js +1 -5
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +33 -19
- package/dist/renderer.d.ts.map +1 -1
- package/dist/renderer.js +85 -85
- package/dist/types.d.ts +9 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ ESM-capable build pipeline.
|
|
|
13
13
|
- Single shared contract for methods and events.
|
|
14
14
|
- Single shared kit config to eliminate cross-process prefix drift.
|
|
15
15
|
- End-to-end schema validation at IPC boundaries.
|
|
16
|
-
-
|
|
16
|
+
- Effect-first renderer RPC with typed domain and defect channels.
|
|
17
17
|
- Effect-native main handlers with explicit runtime injection.
|
|
18
18
|
- Explicit lifecycle handles and bounded event queue backpressure.
|
|
19
19
|
- Structured diagnostics hooks for decode/protocol/dispatch failures.
|
|
@@ -76,19 +76,16 @@ const mainRpc = ipc.main({
|
|
|
76
76
|
GetAppVersion: () => Effect.succeed({ version: app.getVersion() }),
|
|
77
77
|
},
|
|
78
78
|
runtime: Runtime.defaultRuntime,
|
|
79
|
-
|
|
79
|
+
getWindows: () => [mainWindow],
|
|
80
80
|
});
|
|
81
81
|
|
|
82
82
|
mainRpc.start();
|
|
83
83
|
|
|
84
|
-
void mainRpc.
|
|
84
|
+
void Effect.runPromise(mainRpc.publish(WorkUnitProgress, {
|
|
85
85
|
requestId: "req-1",
|
|
86
86
|
chunk: "starting",
|
|
87
87
|
done: false,
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
// Effect-native alternative:
|
|
91
|
-
// void Effect.runPromise(mainRpc.publish(WorkUnitProgress, {...}));
|
|
88
|
+
}));
|
|
92
89
|
```
|
|
93
90
|
|
|
94
91
|
### 3) Preload
|
|
@@ -102,10 +99,11 @@ This exposes one global by default: `window.api`.
|
|
|
102
99
|
|
|
103
100
|
### 4) Renderer
|
|
104
101
|
```ts
|
|
102
|
+
import { Effect } from "effect";
|
|
105
103
|
import { ipc, WorkUnitProgress } from "./shared-ipc.ts";
|
|
106
104
|
|
|
107
105
|
const { client, events } = ipc.renderer(window.api);
|
|
108
|
-
const { version } = await client.GetAppVersion();
|
|
106
|
+
const { version } = await Effect.runPromise(client.GetAppVersion());
|
|
109
107
|
|
|
110
108
|
const unsubscribe = events.subscribe(WorkUnitProgress, (payload) => {
|
|
111
109
|
console.log(payload.chunk);
|
|
@@ -130,9 +128,48 @@ declare global {
|
|
|
130
128
|
|
|
131
129
|
## Error Model
|
|
132
130
|
|
|
133
|
-
Domain failures are modeled with tagged error schemas and are
|
|
134
|
-
|
|
135
|
-
and protocol mismatches are surfaced as `RpcDefectError
|
|
131
|
+
Domain failures are modeled with tagged error schemas and are surfaced in the
|
|
132
|
+
Effect error channel as those same tagged values. Unexpected failures,
|
|
133
|
+
transport defects, and protocol mismatches are surfaced as `RpcDefectError`,
|
|
134
|
+
which includes a stable `code` discriminator:
|
|
135
|
+
`request_encoding_failed`, `invoke_failed`,
|
|
136
|
+
`success_payload_decoding_failed`, `failure_payload_decoding_failed`,
|
|
137
|
+
`noerror_contract_violation`, `invalid_response_envelope`,
|
|
138
|
+
`legacy_decode_failed`, and `remote_defect`.
|
|
139
|
+
|
|
140
|
+
## Breaking Changes
|
|
141
|
+
|
|
142
|
+
`getWindow` was renamed to `getWindows` and now returns an array, enabling
|
|
143
|
+
multi-window event fan-out. Empty array replaces `null` for "no windows."
|
|
144
|
+
|
|
145
|
+
Before:
|
|
146
|
+
|
|
147
|
+
```ts
|
|
148
|
+
getWindow: () => mainWindow,
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
After:
|
|
152
|
+
|
|
153
|
+
```ts
|
|
154
|
+
getWindows: () => [mainWindow],
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Renderer RPC methods now return `Effect.Effect` instead of `Promise`, and
|
|
158
|
+
`IpcMainHandle.emit` was removed in favor of `publish`.
|
|
159
|
+
|
|
160
|
+
Before:
|
|
161
|
+
|
|
162
|
+
```ts
|
|
163
|
+
const result = await client.GetAppVersion();
|
|
164
|
+
await mainRpc.emit(WorkUnitProgress, payload);
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
After:
|
|
168
|
+
|
|
169
|
+
```ts
|
|
170
|
+
const result = await Effect.runPromise(client.GetAppVersion());
|
|
171
|
+
await Effect.runPromise(mainRpc.publish(WorkUnitProgress, payload));
|
|
172
|
+
```
|
|
136
173
|
|
|
137
174
|
## Low-Level APIs (Still Supported)
|
|
138
175
|
|
package/dist/kit.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ type IpcMainOptions<C extends RpcContract<readonly AnyMethod[], readonly AnyEven
|
|
|
24
24
|
readonly ipcMain: IpcMainLike;
|
|
25
25
|
readonly handlers: Implementations<C, R>;
|
|
26
26
|
readonly runtime: Runtime.Runtime<R>;
|
|
27
|
-
readonly
|
|
27
|
+
readonly getWindows: () => ReadonlyArray<RendererWindowLike>;
|
|
28
28
|
readonly maxQueueSize?: number;
|
|
29
29
|
readonly diagnostics?: {
|
|
30
30
|
readonly rpc?: RpcEndpointDiagnostics;
|
|
@@ -39,7 +39,6 @@ export type IpcMainHandle<C extends RpcContract<readonly AnyMethod[], readonly A
|
|
|
39
39
|
readonly dispose: () => void;
|
|
40
40
|
readonly isRunning: () => boolean;
|
|
41
41
|
readonly publish: <E extends C["events"][number]>(event: E, payload: RpcEventPayload<E>) => Effect.Effect<void, never>;
|
|
42
|
-
readonly emit: <E extends C["events"][number]>(event: E, payload: RpcEventPayload<E>) => Promise<void>;
|
|
43
42
|
readonly stats: () => {
|
|
44
43
|
readonly queued: number;
|
|
45
44
|
readonly dropped: number;
|
package/dist/kit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kit.d.ts","sourceRoot":"","sources":["../src/kit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAIvF,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC9B,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC3B,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,eAAe,CAAC,IAAI,SAAS,MAAM,GAAG,KAAK,IAAI;IACzD,QAAQ,EAAE,CAAC,IAAI,IAAI,GAAG,SAAS;CAChC,CAAC;AAEF,MAAM,MAAM,aAAa,CACvB,CAAC,SAAS,WAAW,CAAC,SAAS,SAAS,EAAE,EAAE,SAAS,QAAQ,EAAE,CAAC,IAC9D;IACF,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrB,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,CAAC,GAAG,CAAC,EAAE,qBAAqB,CAAC;QACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;KACnC,CAAC;CACH,CAAC;AAEF,KAAK,cAAc,CACjB,CAAC,SAAS,WAAW,CAAC,SAAS,SAAS,EAAE,EAAE,SAAS,QAAQ,EAAE,CAAC,EAChE,CAAC,IACC;IACF,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACrC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"kit.d.ts","sourceRoot":"","sources":["../src/kit.ts"],"names":[],"mappings":"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"}
|
package/dist/kit.js
CHANGED
|
@@ -18,7 +18,7 @@ export function createIpcKit(options) {
|
|
|
18
18
|
diagnostics: mainOptions.diagnostics?.rpc,
|
|
19
19
|
});
|
|
20
20
|
const publisher = createEventPublisher(contract, {
|
|
21
|
-
|
|
21
|
+
getWindows: mainOptions.getWindows,
|
|
22
22
|
maxQueueSize: mainOptions.maxQueueSize,
|
|
23
23
|
channelPrefix,
|
|
24
24
|
diagnostics: mainOptions.diagnostics?.events,
|
|
@@ -80,9 +80,6 @@ export function createIpcKit(options) {
|
|
|
80
80
|
function publish(event, payload) {
|
|
81
81
|
return publisher.publish(event, payload);
|
|
82
82
|
}
|
|
83
|
-
function emit(event, payload) {
|
|
84
|
-
return Effect.runPromise(publisher.publish(event, payload));
|
|
85
|
-
}
|
|
86
83
|
return {
|
|
87
84
|
endpoint,
|
|
88
85
|
publisher,
|
|
@@ -91,7 +88,6 @@ export function createIpcKit(options) {
|
|
|
91
88
|
dispose,
|
|
92
89
|
isRunning,
|
|
93
90
|
publish,
|
|
94
|
-
emit,
|
|
95
91
|
stats: publisher.stats,
|
|
96
92
|
};
|
|
97
93
|
};
|
package/dist/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EAKZ,MAAM,eAAe,CAAC;AAQvB,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,SAAS,EAEd,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AAmBpB,wBAAgB,iBAAiB,CAC/B,KAAK,CAAC,OAAO,SAAS,aAAa,CAAC,SAAS,CAAC,EAC9C,KAAK,CAAC,MAAM,SAAS,aAAa,CAAC,QAAQ,CAAC,EAC5C,CAAC,GAAG,KAAK,EAET,QAAQ,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,EACtC,GAAG,EAAE,WAAW,EAChB,eAAe,EAAE,eAAe,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EACjE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC7B,WAAW,CAgNb;AAmBD,wBAAgB,oBAAoB,CAClC,KAAK,CAAC,OAAO,SAAS,aAAa,CAAC,SAAS,CAAC,EAC9C,KAAK,CAAC,MAAM,SAAS,aAAa,CAAC,QAAQ,CAAC,EAE5C,SAAS,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,EACvC,OAAO,EAAE,qBAAqB,GAC7B,iBAAiB,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EAKZ,MAAM,eAAe,CAAC;AAQvB,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,SAAS,EAEd,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AAmBpB,wBAAgB,iBAAiB,CAC/B,KAAK,CAAC,OAAO,SAAS,aAAa,CAAC,SAAS,CAAC,EAC9C,KAAK,CAAC,MAAM,SAAS,aAAa,CAAC,QAAQ,CAAC,EAC5C,CAAC,GAAG,KAAK,EAET,QAAQ,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,EACtC,GAAG,EAAE,WAAW,EAChB,eAAe,EAAE,eAAe,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EACjE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC7B,WAAW,CAgNb;AAmBD,wBAAgB,oBAAoB,CAClC,KAAK,CAAC,OAAO,SAAS,aAAa,CAAC,SAAS,CAAC,EAC9C,KAAK,CAAC,MAAM,SAAS,aAAa,CAAC,QAAQ,CAAC,EAE5C,SAAS,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,EACvC,OAAO,EAAE,qBAAqB,GAC7B,iBAAiB,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAmNjD"}
|
package/dist/main.js
CHANGED
|
@@ -224,8 +224,8 @@ export function createEventPublisher(_contract, options) {
|
|
|
224
224
|
});
|
|
225
225
|
return;
|
|
226
226
|
}
|
|
227
|
-
const
|
|
228
|
-
if (
|
|
227
|
+
const windows = options.getWindows();
|
|
228
|
+
if (windows.length === 0) {
|
|
229
229
|
dropped += 1;
|
|
230
230
|
safelyCall(diagnostics?.onDroppedEvent, {
|
|
231
231
|
event: item.event.name,
|
|
@@ -236,23 +236,37 @@ export function createEventPublisher(_contract, options) {
|
|
|
236
236
|
});
|
|
237
237
|
return;
|
|
238
238
|
}
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
239
|
+
const channel = `${channelPrefix.event}${item.event.name}`;
|
|
240
|
+
for (const window of windows) {
|
|
241
|
+
if (window.isDestroyed()) {
|
|
242
|
+
dropped += 1;
|
|
243
|
+
safelyCall(diagnostics?.onDroppedEvent, {
|
|
244
|
+
event: item.event.name,
|
|
245
|
+
payload: item.payload,
|
|
246
|
+
reason: "window_unavailable",
|
|
247
|
+
queued: queue.length,
|
|
248
|
+
dropped,
|
|
249
|
+
});
|
|
250
|
+
continue;
|
|
251
|
+
}
|
|
252
|
+
try {
|
|
253
|
+
window.webContents.send(channel, encoded);
|
|
254
|
+
}
|
|
255
|
+
catch (cause) {
|
|
256
|
+
dropped += 1;
|
|
257
|
+
safelyCall(diagnostics?.onDispatchFailure, {
|
|
258
|
+
event: item.event.name,
|
|
259
|
+
payload: item.payload,
|
|
260
|
+
cause,
|
|
261
|
+
});
|
|
262
|
+
safelyCall(diagnostics?.onDroppedEvent, {
|
|
263
|
+
event: item.event.name,
|
|
264
|
+
payload: item.payload,
|
|
265
|
+
reason: "dispatch_failed",
|
|
266
|
+
queued: queue.length,
|
|
267
|
+
dropped,
|
|
268
|
+
});
|
|
269
|
+
}
|
|
256
270
|
}
|
|
257
271
|
}
|
|
258
272
|
function drain() {
|
package/dist/renderer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,WAAW,EAIjB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,WAAW,EAIjB,MAAM,eAAe,CAAC;AAOvB,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,SAAS,EAGd,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAE3B,KAAK,SAAS,EACd,KAAK,gBAAgB,EAGtB,MAAM,YAAY,CAAC;AAuEpB,wBAAgB,eAAe,CAC7B,KAAK,CAAC,OAAO,SAAS,aAAa,CAAC,SAAS,CAAC,EAC9C,KAAK,CAAC,MAAM,SAAS,aAAa,CAAC,QAAQ,CAAC,EAE5C,QAAQ,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,EACtC,OAAO,EAAE,gBAAgB,GACxB,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CA0KzC;AAqBD,wBAAgB,qBAAqB,CACnC,KAAK,CAAC,OAAO,SAAS,aAAa,CAAC,SAAS,CAAC,EAC9C,KAAK,CAAC,MAAM,SAAS,aAAa,CAAC,QAAQ,CAAC,EAE5C,QAAQ,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,EACtC,OAAO,EAAE,sBAAsB,GAC9B,eAAe,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAyF/C;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/renderer.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as S from "@effect/schema/Schema";
|
|
2
|
-
import { Cause, Exit } from "effect";
|
|
2
|
+
import { Cause, Effect, Exit } from "effect";
|
|
3
3
|
import { exitSchemaFor, isNoErrorSchema, } from "./contract.js";
|
|
4
|
-
import { formatUnknown, parseRpcResponseEnvelope, safelyCall } from "./protocol.js";
|
|
4
|
+
import { formatUnknown, parseRpcResponseEnvelope, safelyCall, } from "./protocol.js";
|
|
5
5
|
import { RpcDefectError, } from "./types.js";
|
|
6
6
|
function requireInvoke(options) {
|
|
7
7
|
if (!options?.invoke) {
|
|
@@ -15,123 +15,123 @@ function requireSubscribe(options) {
|
|
|
15
15
|
}
|
|
16
16
|
return options.subscribe;
|
|
17
17
|
}
|
|
18
|
+
function rpcDefect(code, message, cause) {
|
|
19
|
+
return new RpcDefectError(code, message, cause);
|
|
20
|
+
}
|
|
18
21
|
function decodeLegacyExit(method, raw) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const failureOption = Cause.failureOption(exit.cause);
|
|
26
|
-
if (failureOption._tag === "Some") {
|
|
27
|
-
throw failureOption.value;
|
|
28
|
-
}
|
|
29
|
-
const defectOption = Cause.dieOption(exit.cause);
|
|
30
|
-
if (defectOption._tag === "Some") {
|
|
31
|
-
const defect = defectOption.value;
|
|
32
|
-
if (defect instanceof Error) {
|
|
33
|
-
throw new RpcDefectError(defect.message, defect);
|
|
22
|
+
return Effect.try({
|
|
23
|
+
try: () => S.decodeUnknownSync(exitSchemaFor(method))(raw),
|
|
24
|
+
catch: (cause) => rpcDefect("legacy_decode_failed", `RPC ${method.name} legacy response decoding failed: ${formatUnknown(cause)}`, cause),
|
|
25
|
+
}).pipe(Effect.flatMap((exit) => {
|
|
26
|
+
if (Exit.isSuccess(exit)) {
|
|
27
|
+
return Effect.succeed(exit.value);
|
|
34
28
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
29
|
+
const failureOption = Cause.failureOption(exit.cause);
|
|
30
|
+
if (failureOption._tag === "Some") {
|
|
31
|
+
return Effect.fail(failureOption.value);
|
|
32
|
+
}
|
|
33
|
+
const defectOption = Cause.dieOption(exit.cause);
|
|
34
|
+
if (defectOption._tag === "Some") {
|
|
35
|
+
const defect = defectOption.value;
|
|
36
|
+
const message = defect instanceof Error ? defect.message : String(defect);
|
|
37
|
+
return Effect.fail(rpcDefect("remote_defect", message, defect));
|
|
38
|
+
}
|
|
39
|
+
return Effect.fail(rpcDefect("remote_defect", "RPC call was interrupted or failed unexpectedly", exit.cause));
|
|
40
|
+
}));
|
|
38
41
|
}
|
|
39
42
|
export function createRpcClient(contract, options) {
|
|
40
43
|
const invoke = requireInvoke(options);
|
|
41
44
|
const diagnostics = options?.diagnostics;
|
|
42
45
|
const decodeMode = options?.rpcDecodeMode ?? "envelope";
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
const decodeEnvelope = (method, envelope) => {
|
|
47
|
+
switch (envelope.type) {
|
|
48
|
+
case "success":
|
|
49
|
+
return Effect.try({
|
|
50
|
+
try: () => S.decodeUnknownSync(method.res)(envelope.data),
|
|
51
|
+
catch: (cause) => {
|
|
52
|
+
safelyCall(diagnostics?.onDecodeFailure, {
|
|
53
|
+
scope: "rpc-response",
|
|
54
|
+
name: method.name,
|
|
55
|
+
payload: envelope.data,
|
|
56
|
+
cause,
|
|
57
|
+
});
|
|
58
|
+
return rpcDefect("success_payload_decoding_failed", `RPC ${method.name} success payload decoding failed: ${formatUnknown(cause)}`, cause);
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
case "failure":
|
|
62
|
+
if (isNoErrorSchema(method.err)) {
|
|
63
|
+
return Effect.fail(rpcDefect("noerror_contract_violation", `RPC ${method.name} received a failure for a method that declares NoError`, envelope.error));
|
|
64
|
+
}
|
|
65
|
+
const errorSchema = method.err;
|
|
66
|
+
return Effect.try({
|
|
67
|
+
try: () => S.decodeUnknownSync(errorSchema)(envelope.error.data),
|
|
68
|
+
catch: (cause) => {
|
|
69
|
+
safelyCall(diagnostics?.onDecodeFailure, {
|
|
70
|
+
scope: "rpc-response",
|
|
71
|
+
name: method.name,
|
|
72
|
+
payload: envelope.error,
|
|
73
|
+
cause,
|
|
74
|
+
});
|
|
75
|
+
return rpcDefect("failure_payload_decoding_failed", `RPC ${method.name} failure payload decoding failed: ${formatUnknown(cause)}`, cause);
|
|
76
|
+
},
|
|
77
|
+
}).pipe(Effect.flatMap((decodedError) => Effect.fail(decodedError)));
|
|
78
|
+
case "defect":
|
|
79
|
+
return Effect.fail(rpcDefect("remote_defect", envelope.message, envelope.cause));
|
|
47
80
|
}
|
|
48
|
-
|
|
81
|
+
};
|
|
82
|
+
const call = (method, input) => Effect.try({
|
|
83
|
+
try: () => S.encodeSync(method.req)(input),
|
|
84
|
+
catch: (cause) => {
|
|
49
85
|
safelyCall(diagnostics?.onDecodeFailure, {
|
|
50
86
|
scope: "rpc-request",
|
|
51
87
|
name: method.name,
|
|
52
88
|
payload: input,
|
|
53
89
|
cause,
|
|
54
90
|
});
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
try
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
catch (cause) {
|
|
91
|
+
return rpcDefect("request_encoding_failed", `RPC ${method.name} request encoding failed: ${formatUnknown(cause)}`, cause);
|
|
92
|
+
},
|
|
93
|
+
}).pipe(Effect.flatMap((encoded) => Effect.tryPromise({
|
|
94
|
+
try: () => invoke(method.name, encoded),
|
|
95
|
+
catch: (cause) => {
|
|
62
96
|
safelyCall(diagnostics?.onProtocolError, {
|
|
63
97
|
method: method.name,
|
|
64
98
|
response: undefined,
|
|
65
99
|
cause,
|
|
66
100
|
});
|
|
67
|
-
|
|
68
|
-
}
|
|
101
|
+
return rpcDefect("invoke_failed", `RPC ${method.name} invoke failed: ${formatUnknown(cause)}`, cause);
|
|
102
|
+
},
|
|
103
|
+
})), Effect.flatMap((raw) => {
|
|
69
104
|
const envelope = parseRpcResponseEnvelope(raw);
|
|
70
105
|
if (envelope) {
|
|
71
|
-
|
|
72
|
-
case "success":
|
|
73
|
-
try {
|
|
74
|
-
return S.decodeUnknownSync(method.res)(envelope.data);
|
|
75
|
-
}
|
|
76
|
-
catch (cause) {
|
|
77
|
-
safelyCall(diagnostics?.onDecodeFailure, {
|
|
78
|
-
scope: "rpc-response",
|
|
79
|
-
name: method.name,
|
|
80
|
-
payload: envelope.data,
|
|
81
|
-
cause,
|
|
82
|
-
});
|
|
83
|
-
throw new Error(`RPC ${method.name} success payload decoding failed: ${formatUnknown(cause)}`);
|
|
84
|
-
}
|
|
85
|
-
case "failure":
|
|
86
|
-
if (isNoErrorSchema(method.err)) {
|
|
87
|
-
throw new RpcDefectError(`RPC ${method.name} received a failure for a method that declares NoError`, envelope.error);
|
|
88
|
-
}
|
|
89
|
-
let decodedError;
|
|
90
|
-
try {
|
|
91
|
-
decodedError = S.decodeUnknownSync(method.err)(envelope.error.data);
|
|
92
|
-
}
|
|
93
|
-
catch (cause) {
|
|
94
|
-
safelyCall(diagnostics?.onDecodeFailure, {
|
|
95
|
-
scope: "rpc-response",
|
|
96
|
-
name: method.name,
|
|
97
|
-
payload: envelope.error,
|
|
98
|
-
cause,
|
|
99
|
-
});
|
|
100
|
-
throw new Error(`RPC ${method.name} failure payload decoding failed: ${formatUnknown(cause)}`);
|
|
101
|
-
}
|
|
102
|
-
throw decodedError;
|
|
103
|
-
case "defect":
|
|
104
|
-
throw new RpcDefectError(envelope.message, envelope.cause);
|
|
105
|
-
}
|
|
106
|
+
return decodeEnvelope(method, envelope);
|
|
106
107
|
}
|
|
107
108
|
if (decodeMode === "dual") {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
}
|
|
109
|
+
return decodeLegacyExit(method, raw).pipe(Effect.tapError((cause) => {
|
|
110
|
+
if (cause instanceof RpcDefectError &&
|
|
111
|
+
cause.code === "legacy_decode_failed") {
|
|
112
|
+
return Effect.sync(() => safelyCall(diagnostics?.onProtocolError, {
|
|
113
|
+
method: method.name,
|
|
114
|
+
response: raw,
|
|
115
|
+
cause,
|
|
116
|
+
}));
|
|
117
|
+
}
|
|
118
|
+
return Effect.void;
|
|
119
|
+
}));
|
|
119
120
|
}
|
|
120
|
-
const cause =
|
|
121
|
+
const cause = rpcDefect("invalid_response_envelope", `RPC ${method.name} response was not a valid envelope.`, raw);
|
|
121
122
|
safelyCall(diagnostics?.onProtocolError, {
|
|
122
123
|
method: method.name,
|
|
123
124
|
response: raw,
|
|
124
125
|
cause,
|
|
125
126
|
});
|
|
126
|
-
|
|
127
|
-
};
|
|
127
|
+
return Effect.fail(cause);
|
|
128
|
+
}));
|
|
128
129
|
const client = Object.create(null);
|
|
129
130
|
const clientRecord = client;
|
|
130
131
|
for (const method of contract.methods) {
|
|
131
|
-
const decodeDefaultInput = S.decodeUnknownSync(method.req);
|
|
132
132
|
const caller = (...args) => {
|
|
133
133
|
const payload = args.length === 0
|
|
134
|
-
?
|
|
134
|
+
? {}
|
|
135
135
|
: args[0];
|
|
136
136
|
return call(method, payload);
|
|
137
137
|
};
|
package/dist/types.d.ts
CHANGED
|
@@ -6,15 +6,18 @@ export type Implementations<C extends RpcContract<readonly AnyMethod[], readonly
|
|
|
6
6
|
readonly [Name in C["methods"][number]["name"]]: (input: RpcInput<ExtractMethod<C["methods"], Name>>) => Effect.Effect<RpcOutput<ExtractMethod<C["methods"], Name>>, RpcError<ExtractMethod<C["methods"], Name>>, R>;
|
|
7
7
|
};
|
|
8
8
|
type IsEmptyObject<T> = T extends object ? keyof T extends never ? true : false : false;
|
|
9
|
-
export type
|
|
10
|
-
export type RpcClient<C extends RpcContract<readonly AnyMethod[], readonly AnyEvent[]>> = {
|
|
11
|
-
readonly [Name in C["methods"][number]["name"]]: RpcCaller<ExtractMethod<C["methods"], Name>>;
|
|
12
|
-
};
|
|
9
|
+
export type RpcDefectCode = "request_encoding_failed" | "invoke_failed" | "success_payload_decoding_failed" | "failure_payload_decoding_failed" | "noerror_contract_violation" | "invalid_response_envelope" | "legacy_decode_failed" | "remote_defect";
|
|
13
10
|
export declare class RpcDefectError extends Error {
|
|
11
|
+
readonly code: RpcDefectCode;
|
|
14
12
|
readonly cause: unknown;
|
|
15
13
|
readonly _tag = "RpcDefectError";
|
|
16
|
-
constructor(message: string, cause: unknown);
|
|
14
|
+
constructor(code: RpcDefectCode, message: string, cause: unknown);
|
|
17
15
|
}
|
|
16
|
+
export type RpcMethodError<M extends AnyMethod> = RpcError<M> | RpcDefectError;
|
|
17
|
+
export type RpcCaller<M extends AnyMethod> = IsEmptyObject<RpcInput<M>> extends true ? () => Effect.Effect<RpcOutput<M>, RpcMethodError<M>> : (input: RpcInput<M>) => Effect.Effect<RpcOutput<M>, RpcMethodError<M>>;
|
|
18
|
+
export type RpcClient<C extends RpcContract<readonly AnyMethod[], readonly AnyEvent[]>> = {
|
|
19
|
+
readonly [Name in C["methods"][number]["name"]]: RpcCaller<ExtractMethod<C["methods"], Name>>;
|
|
20
|
+
};
|
|
18
21
|
export type ChannelPrefix = {
|
|
19
22
|
readonly rpc: string;
|
|
20
23
|
readonly event: string;
|
|
@@ -91,7 +94,7 @@ export type RendererWindowLike = {
|
|
|
91
94
|
};
|
|
92
95
|
export type EventPublisherOptions = {
|
|
93
96
|
readonly channelPrefix?: ChannelPrefix;
|
|
94
|
-
readonly
|
|
97
|
+
readonly getWindows: () => ReadonlyArray<RendererWindowLike>;
|
|
95
98
|
readonly maxQueueSize?: number;
|
|
96
99
|
readonly diagnostics?: EventPublisherDiagnostics;
|
|
97
100
|
};
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EACV,QAAQ,EACR,SAAS,EAET,aAAa,EACb,WAAW,EACX,QAAQ,EAER,eAAe,EACf,QAAQ,EAER,SAAS,EAEV,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,QAAQ,EACR,SAAS,EACT,WAAW,EACX,aAAa,EACb,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,SAAS,EACT,SAAS,EACT,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,eAAe,CACzB,CAAC,SAAS,WAAW,CAAC,SAAS,SAAS,EAAE,EAAE,SAAS,QAAQ,EAAE,CAAC,EAChE,CAAC,GAAG,KAAK,IACP;IACF,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAC/C,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,KAC/C,MAAM,CAAC,MAAM,CAChB,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,EAC5C,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,EAC3C,CAAC,CACF;CACF,CAAC;AAEF,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GACpC,MAAM,CAAC,SAAS,KAAK,GACnB,IAAI,GACJ,KAAK,GACP,KAAK,CAAC;AAEV,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,SAAS,IACvC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GACnC,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED