@enkaku/client 0.11.0 → 0.11.2
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/lib/client.d.ts +7 -0
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +47 -33
- package/package.json +3 -3
package/lib/client.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ type FilterNever<T> = {
|
|
|
5
5
|
[K in keyof T as T[K] extends never ? never : K]: T[K];
|
|
6
6
|
};
|
|
7
7
|
export type RequestCall<Result> = Promise<Result> & {
|
|
8
|
+
id: string;
|
|
8
9
|
abort: (reason?: string) => void;
|
|
9
10
|
signal: AbortSignal;
|
|
10
11
|
};
|
|
@@ -71,23 +72,29 @@ export declare class Client<Protocol extends ProtocolDefinition, ClientDefinitio
|
|
|
71
72
|
_dispose(reason?: unknown): Promise<void>;
|
|
72
73
|
sendEvent<Procedure extends keyof ClientDefinitions['Events'] & string, T extends ClientDefinitions['Events'][Procedure] = ClientDefinitions['Events'][Procedure]>(procedure: Procedure, ...args: T['Data'] extends never ? [] : [T['Data']]): Promise<void>;
|
|
73
74
|
request<Procedure extends keyof ClientDefinitions['Requests'] & string, T extends ClientDefinitions['Requests'][Procedure] = ClientDefinitions['Requests'][Procedure]>(procedure: Procedure, ...args: T['Param'] extends never ? [config?: {
|
|
75
|
+
id?: string;
|
|
74
76
|
param?: never;
|
|
75
77
|
signal?: AbortSignal;
|
|
76
78
|
}] : [config: {
|
|
79
|
+
id?: string;
|
|
77
80
|
param: T['Param'];
|
|
78
81
|
signal?: AbortSignal;
|
|
79
82
|
}]): RequestCall<T['Result']> & Promise<T['Result']>;
|
|
80
83
|
createStream<Procedure extends keyof ClientDefinitions['Streams'] & string, T extends ClientDefinitions['Streams'][Procedure] = ClientDefinitions['Streams'][Procedure]>(procedure: Procedure, ...args: T['Param'] extends never ? [config?: {
|
|
84
|
+
id?: string;
|
|
81
85
|
param?: never;
|
|
82
86
|
signal?: AbortSignal;
|
|
83
87
|
}] : [config: {
|
|
88
|
+
id?: string;
|
|
84
89
|
param: T['Param'];
|
|
85
90
|
signal?: AbortSignal;
|
|
86
91
|
}]): StreamCall<T['Receive'], T['Result']>;
|
|
87
92
|
createChannel<Procedure extends keyof ClientDefinitions['Channels'] & string, T extends ClientDefinitions['Channels'][Procedure] = ClientDefinitions['Channels'][Procedure]>(procedure: Procedure, ...args: T['Param'] extends never ? [config?: {
|
|
93
|
+
id?: string;
|
|
88
94
|
param?: never;
|
|
89
95
|
signal?: AbortSignal;
|
|
90
96
|
}] : [config: {
|
|
97
|
+
id?: string;
|
|
91
98
|
param: T['Param'];
|
|
92
99
|
signal?: AbortSignal;
|
|
93
100
|
}]): ChannelCall<T['Receive'], T['Send'], T['Result']>;
|
package/lib/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/lib/client.js
CHANGED
|
@@ -2,27 +2,38 @@ import { Disposer, defer } from '@enkaku/async';
|
|
|
2
2
|
import { createPipe } from '@enkaku/stream';
|
|
3
3
|
import { createUnsignedToken } from '@enkaku/token';
|
|
4
4
|
import { RequestError } from './error.js';
|
|
5
|
-
function createController() {
|
|
5
|
+
function createController(onDone) {
|
|
6
6
|
const deferred = defer();
|
|
7
7
|
return Object.assign(new AbortController(), {
|
|
8
8
|
result: deferred.promise,
|
|
9
|
-
ok: (value)=>
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
ok: (value)=>{
|
|
10
|
+
deferred.resolve(value);
|
|
11
|
+
onDone?.();
|
|
12
|
+
},
|
|
13
|
+
error: (error)=>{
|
|
14
|
+
deferred.reject(error);
|
|
15
|
+
onDone?.();
|
|
16
|
+
},
|
|
17
|
+
aborted: (signal)=>{
|
|
18
|
+
deferred.reject(signal);
|
|
19
|
+
onDone?.();
|
|
20
|
+
}
|
|
12
21
|
});
|
|
13
22
|
}
|
|
14
|
-
function createRequest(controller, signal, sent) {
|
|
23
|
+
function createRequest(id, controller, signal, sent) {
|
|
24
|
+
const abort = (reason)=>{
|
|
25
|
+
void sent.then(()=>{
|
|
26
|
+
controller.abort(reason);
|
|
27
|
+
});
|
|
28
|
+
};
|
|
15
29
|
return Object.assign(sent.then(()=>controller.result), {
|
|
16
|
-
abort
|
|
17
|
-
|
|
18
|
-
controller.abort(reason);
|
|
19
|
-
});
|
|
20
|
-
},
|
|
30
|
+
abort,
|
|
31
|
+
id,
|
|
21
32
|
signal
|
|
22
33
|
});
|
|
23
34
|
}
|
|
24
|
-
function createStream(controller, signal, sent, readable) {
|
|
25
|
-
const request = createRequest(controller, signal, sent);
|
|
35
|
+
function createStream(id, controller, signal, sent, readable) {
|
|
36
|
+
const request = createRequest(id, controller, signal, sent);
|
|
26
37
|
return Object.assign(request, {
|
|
27
38
|
close: ()=>request.abort('Close'),
|
|
28
39
|
readable
|
|
@@ -128,7 +139,6 @@ export class Client extends Disposer {
|
|
|
128
139
|
}
|
|
129
140
|
switch(msg.payload.typ){
|
|
130
141
|
case 'error':
|
|
131
|
-
void controller.receive?.close();
|
|
132
142
|
controller.error(RequestError.fromPayload(msg.payload));
|
|
133
143
|
delete this.#controllers[msg.payload.rid];
|
|
134
144
|
break;
|
|
@@ -136,7 +146,6 @@ export class Client extends Disposer {
|
|
|
136
146
|
void controller.receive?.write(msg.payload.val);
|
|
137
147
|
break;
|
|
138
148
|
case 'result':
|
|
139
|
-
void controller.receive?.close();
|
|
140
149
|
controller.ok(msg.payload.val);
|
|
141
150
|
delete this.#controllers[msg.payload.rid];
|
|
142
151
|
break;
|
|
@@ -185,14 +194,15 @@ export class Client extends Disposer {
|
|
|
185
194
|
await this.#write(payload);
|
|
186
195
|
}
|
|
187
196
|
request(procedure, ...args) {
|
|
197
|
+
const config = args[0] ?? {};
|
|
188
198
|
const controller = createController();
|
|
189
|
-
const
|
|
199
|
+
const rid = config.id ?? this.#getRandomID();
|
|
200
|
+
const providedSignal = config?.signal;
|
|
190
201
|
if (providedSignal?.aborted) {
|
|
191
|
-
return createRequest(controller, providedSignal, Promise.reject(providedSignal));
|
|
202
|
+
return createRequest(rid, controller, providedSignal, Promise.reject(providedSignal));
|
|
192
203
|
}
|
|
193
|
-
const rid = this.#getRandomID();
|
|
194
204
|
this.#controllers[rid] = controller;
|
|
195
|
-
const prm =
|
|
205
|
+
const prm = config.param;
|
|
196
206
|
const payload = prm ? {
|
|
197
207
|
typ: 'request',
|
|
198
208
|
rid,
|
|
@@ -205,20 +215,22 @@ export class Client extends Disposer {
|
|
|
205
215
|
};
|
|
206
216
|
const sent = this.#write(payload);
|
|
207
217
|
const signal = this.#handleSignal(rid, controller, providedSignal);
|
|
208
|
-
return createRequest(controller, signal, sent);
|
|
218
|
+
return createRequest(rid, controller, signal, sent);
|
|
209
219
|
}
|
|
210
220
|
createStream(procedure, ...args) {
|
|
221
|
+
const config = args[0] ?? {};
|
|
211
222
|
const receive = createPipe();
|
|
212
|
-
const
|
|
213
|
-
|
|
223
|
+
const writer = receive.writable.getWriter();
|
|
224
|
+
const controller = Object.assign(createController(()=>writer.close()), {
|
|
225
|
+
receive: writer
|
|
214
226
|
});
|
|
215
|
-
const
|
|
227
|
+
const rid = config.id ?? this.#getRandomID();
|
|
228
|
+
const providedSignal = config?.signal;
|
|
216
229
|
if (providedSignal?.aborted) {
|
|
217
|
-
return createStream(controller, providedSignal, Promise.reject(providedSignal), receive.readable);
|
|
230
|
+
return createStream(rid, controller, providedSignal, Promise.reject(providedSignal), receive.readable);
|
|
218
231
|
}
|
|
219
|
-
const rid = this.#getRandomID();
|
|
220
232
|
this.#controllers[rid] = controller;
|
|
221
|
-
const prm =
|
|
233
|
+
const prm = config?.param;
|
|
222
234
|
const payload = prm ? {
|
|
223
235
|
typ: 'stream',
|
|
224
236
|
rid,
|
|
@@ -231,28 +243,30 @@ export class Client extends Disposer {
|
|
|
231
243
|
};
|
|
232
244
|
const sent = this.#write(payload);
|
|
233
245
|
const signal = this.#handleSignal(rid, controller, providedSignal);
|
|
234
|
-
return createStream(controller, signal, sent, receive.readable);
|
|
246
|
+
return createStream(rid, controller, signal, sent, receive.readable);
|
|
235
247
|
}
|
|
236
248
|
createChannel(procedure, ...args) {
|
|
249
|
+
const config = args[0] ?? {};
|
|
237
250
|
const receive = createPipe();
|
|
238
|
-
const
|
|
239
|
-
|
|
251
|
+
const writer = receive.writable.getWriter();
|
|
252
|
+
const controller = Object.assign(createController(()=>writer.close()), {
|
|
253
|
+
receive: writer
|
|
240
254
|
});
|
|
241
|
-
const
|
|
255
|
+
const rid = config.id ?? this.#getRandomID();
|
|
256
|
+
const providedSignal = config?.signal;
|
|
242
257
|
if (providedSignal?.aborted) {
|
|
243
258
|
// no-op
|
|
244
259
|
const send = async (val)=>{};
|
|
245
260
|
const writable = new WritableStream({
|
|
246
261
|
write: send
|
|
247
262
|
});
|
|
248
|
-
return Object.assign(createStream(controller, providedSignal, Promise.reject(providedSignal), receive.readable), {
|
|
263
|
+
return Object.assign(createStream(rid, controller, providedSignal, Promise.reject(providedSignal), receive.readable), {
|
|
249
264
|
send,
|
|
250
265
|
writable
|
|
251
266
|
});
|
|
252
267
|
}
|
|
253
|
-
const rid = this.#getRandomID();
|
|
254
268
|
this.#controllers[rid] = controller;
|
|
255
|
-
const prm =
|
|
269
|
+
const prm = config?.param;
|
|
256
270
|
const payload = prm ? {
|
|
257
271
|
typ: 'channel',
|
|
258
272
|
rid,
|
|
@@ -275,7 +289,7 @@ export class Client extends Disposer {
|
|
|
275
289
|
const writable = new WritableStream({
|
|
276
290
|
write: send
|
|
277
291
|
});
|
|
278
|
-
return Object.assign(createStream(controller, signal, sent, receive.readable), {
|
|
292
|
+
return Object.assign(createStream(rid, controller, signal, sent, receive.readable), {
|
|
279
293
|
send,
|
|
280
294
|
writable
|
|
281
295
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@enkaku/client",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"homepage": "https://enkaku.dev",
|
|
6
6
|
"description": "Enkaku RPC client",
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"sideEffects": false,
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@enkaku/async": "^0.11.0",
|
|
30
|
-
"@enkaku/
|
|
31
|
-
"@enkaku/
|
|
30
|
+
"@enkaku/stream": "^0.11.0",
|
|
31
|
+
"@enkaku/token": "^0.11.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@enkaku/protocol": "^0.11.0",
|