@enkaku/client 0.12.3 → 0.13.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/lib/client.d.ts +16 -3
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +40 -30
- package/package.json +8 -8
package/lib/client.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { Disposer } from '@enkaku/async';
|
|
2
2
|
import { type Logger } from '@enkaku/log';
|
|
3
3
|
import type { AnyProcedureDefinition, AnyRequestProcedureDefinition, ChannelProcedureDefinition, ClientTransportOf, DataOf, EventProcedureDefinition, ProtocolDefinition, RequestProcedureDefinition, RequestType, ReturnOf, StreamProcedureDefinition } from '@enkaku/protocol';
|
|
4
|
-
import { type
|
|
4
|
+
import { type Identity } from '@enkaku/token';
|
|
5
5
|
type FilterNever<T> = {
|
|
6
6
|
[K in keyof T as T[K] extends never ? never : K]: T[K];
|
|
7
7
|
};
|
|
8
|
+
export type AnyHeader = Record<string, unknown>;
|
|
8
9
|
export type RequestMeta = {
|
|
9
10
|
type: RequestType;
|
|
10
11
|
procedure: string;
|
|
@@ -70,35 +71,47 @@ export type ClientParams<Protocol extends ProtocolDefinition> = {
|
|
|
70
71
|
logger?: Logger;
|
|
71
72
|
transport: ClientTransportOf<Protocol>;
|
|
72
73
|
serverID?: string;
|
|
73
|
-
|
|
74
|
+
identity?: Identity | Promise<Identity>;
|
|
74
75
|
};
|
|
75
76
|
export declare class Client<Protocol extends ProtocolDefinition, ClientDefinitions extends ClientDefinitionsType<Protocol> = ClientDefinitionsType<Protocol>> extends Disposer {
|
|
76
77
|
#private;
|
|
77
78
|
constructor(params: ClientParams<Protocol>);
|
|
78
|
-
sendEvent<Procedure extends keyof ClientDefinitions['Events'] & string, T extends ClientDefinitions['Events'][Procedure] = ClientDefinitions['Events'][Procedure]>(procedure: Procedure, ...args: T['Data'] extends never ? [
|
|
79
|
+
sendEvent<Procedure extends keyof ClientDefinitions['Events'] & string, T extends ClientDefinitions['Events'][Procedure] = ClientDefinitions['Events'][Procedure]>(procedure: Procedure, ...args: T['Data'] extends never ? [config?: {
|
|
80
|
+
data?: never;
|
|
81
|
+
header?: AnyHeader;
|
|
82
|
+
}] : [config: {
|
|
83
|
+
data: T['Data'];
|
|
84
|
+
header?: AnyHeader;
|
|
85
|
+
}]): Promise<void>;
|
|
79
86
|
request<Procedure extends keyof ClientDefinitions['Requests'] & string, T extends ClientDefinitions['Requests'][Procedure] = ClientDefinitions['Requests'][Procedure]>(procedure: Procedure, ...args: T['Param'] extends never ? [config?: {
|
|
87
|
+
header?: AnyHeader;
|
|
80
88
|
id?: string;
|
|
81
89
|
param?: never;
|
|
82
90
|
signal?: AbortSignal;
|
|
83
91
|
}] : [config: {
|
|
92
|
+
header?: AnyHeader;
|
|
84
93
|
id?: string;
|
|
85
94
|
param: T['Param'];
|
|
86
95
|
signal?: AbortSignal;
|
|
87
96
|
}]): RequestCall<T['Result']> & Promise<T['Result']>;
|
|
88
97
|
createStream<Procedure extends keyof ClientDefinitions['Streams'] & string, T extends ClientDefinitions['Streams'][Procedure] = ClientDefinitions['Streams'][Procedure]>(procedure: Procedure, ...args: T['Param'] extends never ? [config?: {
|
|
98
|
+
header?: AnyHeader;
|
|
89
99
|
id?: string;
|
|
90
100
|
param?: never;
|
|
91
101
|
signal?: AbortSignal;
|
|
92
102
|
}] : [config: {
|
|
103
|
+
header?: AnyHeader;
|
|
93
104
|
id?: string;
|
|
94
105
|
param: T['Param'];
|
|
95
106
|
signal?: AbortSignal;
|
|
96
107
|
}]): StreamCall<T['Receive'], T['Result']>;
|
|
97
108
|
createChannel<Procedure extends keyof ClientDefinitions['Channels'] & string, T extends ClientDefinitions['Channels'][Procedure] = ClientDefinitions['Channels'][Procedure]>(procedure: Procedure, ...args: T['Param'] extends never ? [config?: {
|
|
109
|
+
header?: AnyHeader;
|
|
98
110
|
id?: string;
|
|
99
111
|
param?: never;
|
|
100
112
|
signal?: AbortSignal;
|
|
101
113
|
}] : [config: {
|
|
114
|
+
header?: AnyHeader;
|
|
102
115
|
id?: string;
|
|
103
116
|
param: T['Param'];
|
|
104
117
|
signal?: AbortSignal;
|
package/lib/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAS,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAmB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,KAAK,EAGV,sBAAsB,EACtB,6BAA6B,EAE7B,0BAA0B,EAC1B,iBAAiB,EACjB,MAAM,EACN,wBAAwB,EACxB,kBAAkB,EAClB,0BAA0B,EAC1B,WAAW,EACX,QAAQ,EACR,yBAAyB,EAC1B,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAuB,KAAK,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/lib/client.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Disposer, defer } from '@enkaku/async';
|
|
2
2
|
import { getEnkakuLogger } from '@enkaku/log';
|
|
3
3
|
import { createPipe, writeTo } from '@enkaku/stream';
|
|
4
|
-
import { createUnsignedToken } from '@enkaku/token';
|
|
4
|
+
import { createUnsignedToken, isSigningIdentity } from '@enkaku/token';
|
|
5
5
|
import { RequestError } from './error.js';
|
|
6
|
-
function createController(
|
|
6
|
+
function createController(params, onDone) {
|
|
7
7
|
const deferred = defer();
|
|
8
|
-
return Object.assign(new AbortController(),
|
|
8
|
+
return Object.assign(new AbortController(), params, {
|
|
9
9
|
result: deferred.promise,
|
|
10
10
|
ok: (value)=>{
|
|
11
11
|
deferred.resolve(value);
|
|
@@ -40,18 +40,23 @@ function createStream({ readable, ...requestParams }) {
|
|
|
40
40
|
readable
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
|
-
function getCreateMessage(
|
|
44
|
-
if (
|
|
43
|
+
function getCreateMessage(identity, aud) {
|
|
44
|
+
if (identity == null) {
|
|
45
45
|
return createUnsignedToken;
|
|
46
46
|
}
|
|
47
|
-
const
|
|
48
|
-
const createToken = (payload)=>{
|
|
49
|
-
return
|
|
47
|
+
const identityPromise = Promise.resolve(identity);
|
|
48
|
+
const createToken = (payload, header)=>{
|
|
49
|
+
return identityPromise.then((id)=>{
|
|
50
|
+
if (!isSigningIdentity(id)) {
|
|
51
|
+
throw new Error('Identity does not support signing');
|
|
52
|
+
}
|
|
53
|
+
return id.signToken(payload, header);
|
|
54
|
+
});
|
|
50
55
|
};
|
|
51
|
-
return aud ? (payload)=>createToken({
|
|
56
|
+
return aud ? (payload, header)=>createToken({
|
|
52
57
|
aud,
|
|
53
58
|
...payload
|
|
54
|
-
}) : createToken;
|
|
59
|
+
}, header) : createToken;
|
|
55
60
|
}
|
|
56
61
|
function defaultRandomID() {
|
|
57
62
|
return globalThis.crypto.randomUUID();
|
|
@@ -74,7 +79,7 @@ export class Client extends Disposer {
|
|
|
74
79
|
this.#logger.debug('disposed');
|
|
75
80
|
}
|
|
76
81
|
});
|
|
77
|
-
this.#createMessage = getCreateMessage(params.
|
|
82
|
+
this.#createMessage = getCreateMessage(params.identity, params.serverID);
|
|
78
83
|
this.#getRandomID = params.getRandomID ?? defaultRandomID;
|
|
79
84
|
this.#handleTransportDisposed = params.handleTransportDisposed;
|
|
80
85
|
this.#handleTransportError = params.handleTransportError;
|
|
@@ -189,13 +194,13 @@ export class Client extends Disposer {
|
|
|
189
194
|
}
|
|
190
195
|
}
|
|
191
196
|
}
|
|
192
|
-
async #write(payload) {
|
|
197
|
+
async #write(payload, header) {
|
|
193
198
|
if (this.signal.aborted) {
|
|
194
199
|
throw new Error('Client aborted', {
|
|
195
200
|
cause: this.signal.reason
|
|
196
201
|
});
|
|
197
202
|
}
|
|
198
|
-
const message = await this.#createMessage(payload);
|
|
203
|
+
const message = await this.#createMessage(payload, header);
|
|
199
204
|
await this.#transport.write(message);
|
|
200
205
|
}
|
|
201
206
|
#handleSignal(rid, controller, providedSignal) {
|
|
@@ -215,7 +220,7 @@ export class Client extends Disposer {
|
|
|
215
220
|
typ: 'abort',
|
|
216
221
|
rid,
|
|
217
222
|
rsn: reason
|
|
218
|
-
});
|
|
223
|
+
}, controller.header);
|
|
219
224
|
if (signal.reason !== 'Close') {
|
|
220
225
|
controller.aborted(signal);
|
|
221
226
|
delete this.#controllers[rid];
|
|
@@ -226,28 +231,31 @@ export class Client extends Disposer {
|
|
|
226
231
|
return signal;
|
|
227
232
|
}
|
|
228
233
|
async sendEvent(procedure, ...args) {
|
|
229
|
-
const
|
|
234
|
+
const config = args[0] ?? {};
|
|
235
|
+
const data = config.data;
|
|
236
|
+
const payload = data ? {
|
|
230
237
|
typ: 'event',
|
|
231
238
|
prc: procedure,
|
|
232
|
-
data
|
|
239
|
+
data
|
|
233
240
|
} : {
|
|
234
241
|
typ: 'event',
|
|
235
242
|
prc: procedure
|
|
236
243
|
};
|
|
237
244
|
this.#logger.trace('send event {procedure}', {
|
|
238
245
|
procedure,
|
|
239
|
-
data
|
|
246
|
+
data
|
|
240
247
|
});
|
|
241
|
-
await this.#write(payload);
|
|
248
|
+
await this.#write(payload, config.header);
|
|
242
249
|
}
|
|
243
250
|
request(procedure, ...args) {
|
|
244
251
|
const config = args[0] ?? {};
|
|
245
252
|
const controller = createController({
|
|
246
253
|
type: 'request',
|
|
247
|
-
procedure
|
|
254
|
+
procedure,
|
|
255
|
+
header: config.header
|
|
248
256
|
});
|
|
249
257
|
const rid = config.id ?? this.#getRandomID();
|
|
250
|
-
const providedSignal = config
|
|
258
|
+
const providedSignal = config.signal;
|
|
251
259
|
if (providedSignal?.aborted) {
|
|
252
260
|
this.#logger.debug('reject aborted request {procedure} with ID { rid }', {
|
|
253
261
|
procedure,
|
|
@@ -277,7 +285,7 @@ export class Client extends Disposer {
|
|
|
277
285
|
rid,
|
|
278
286
|
param: prm
|
|
279
287
|
});
|
|
280
|
-
const sent = this.#write(payload);
|
|
288
|
+
const sent = this.#write(payload, config.header);
|
|
281
289
|
const signal = this.#handleSignal(rid, controller, providedSignal);
|
|
282
290
|
return createRequest({
|
|
283
291
|
id: rid,
|
|
@@ -292,12 +300,13 @@ export class Client extends Disposer {
|
|
|
292
300
|
const writer = receive.writable.getWriter();
|
|
293
301
|
const controller = Object.assign(createController({
|
|
294
302
|
type: 'stream',
|
|
295
|
-
procedure
|
|
303
|
+
procedure,
|
|
304
|
+
header: config.header
|
|
296
305
|
}, ()=>writer.close()), {
|
|
297
306
|
receive: writer
|
|
298
307
|
});
|
|
299
308
|
const rid = config.id ?? this.#getRandomID();
|
|
300
|
-
const providedSignal = config
|
|
309
|
+
const providedSignal = config.signal;
|
|
301
310
|
if (providedSignal?.aborted) {
|
|
302
311
|
this.#logger.debug('reject aborted stream creation {procedure} with ID {rid}', {
|
|
303
312
|
procedure,
|
|
@@ -312,7 +321,7 @@ export class Client extends Disposer {
|
|
|
312
321
|
});
|
|
313
322
|
}
|
|
314
323
|
this.#controllers[rid] = controller;
|
|
315
|
-
const prm = config
|
|
324
|
+
const prm = config.param;
|
|
316
325
|
const payload = prm ? {
|
|
317
326
|
typ: 'stream',
|
|
318
327
|
rid,
|
|
@@ -328,7 +337,7 @@ export class Client extends Disposer {
|
|
|
328
337
|
rid,
|
|
329
338
|
param: prm
|
|
330
339
|
});
|
|
331
|
-
const sent = this.#write(payload);
|
|
340
|
+
const sent = this.#write(payload, config.header);
|
|
332
341
|
const signal = this.#handleSignal(rid, controller, providedSignal);
|
|
333
342
|
return createStream({
|
|
334
343
|
id: rid,
|
|
@@ -344,12 +353,13 @@ export class Client extends Disposer {
|
|
|
344
353
|
const writer = receive.writable.getWriter();
|
|
345
354
|
const controller = Object.assign(createController({
|
|
346
355
|
type: 'channel',
|
|
347
|
-
procedure
|
|
356
|
+
procedure,
|
|
357
|
+
header: config.header
|
|
348
358
|
}, ()=>writer.close()), {
|
|
349
359
|
receive: writer
|
|
350
360
|
});
|
|
351
361
|
const rid = config.id ?? this.#getRandomID();
|
|
352
|
-
const providedSignal = config
|
|
362
|
+
const providedSignal = config.signal;
|
|
353
363
|
if (providedSignal?.aborted) {
|
|
354
364
|
this.#logger.debug('reject aborted channel creation {procedure} with ID {rid}', {
|
|
355
365
|
procedure,
|
|
@@ -369,7 +379,7 @@ export class Client extends Disposer {
|
|
|
369
379
|
});
|
|
370
380
|
}
|
|
371
381
|
this.#controllers[rid] = controller;
|
|
372
|
-
const prm = config
|
|
382
|
+
const prm = config.param;
|
|
373
383
|
const payload = prm ? {
|
|
374
384
|
typ: 'channel',
|
|
375
385
|
rid,
|
|
@@ -385,7 +395,7 @@ export class Client extends Disposer {
|
|
|
385
395
|
rid,
|
|
386
396
|
param: prm
|
|
387
397
|
});
|
|
388
|
-
const sent = this.#write(payload);
|
|
398
|
+
const sent = this.#write(payload, config.header);
|
|
389
399
|
const signal = this.#handleSignal(rid, controller, providedSignal);
|
|
390
400
|
const send = async (val)=>{
|
|
391
401
|
this.#logger.trace('send value to channel {procedure} with ID {rid}', {
|
|
@@ -397,7 +407,7 @@ export class Client extends Disposer {
|
|
|
397
407
|
typ: 'send',
|
|
398
408
|
rid,
|
|
399
409
|
val
|
|
400
|
-
});
|
|
410
|
+
}, config.header);
|
|
401
411
|
};
|
|
402
412
|
return Object.assign(createStream({
|
|
403
413
|
id: rid,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@enkaku/client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"homepage": "https://enkaku.dev",
|
|
6
6
|
"description": "Enkaku RPC client",
|
|
@@ -26,15 +26,15 @@
|
|
|
26
26
|
],
|
|
27
27
|
"sideEffects": false,
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@enkaku/execution": "^0.
|
|
30
|
-
"@enkaku/
|
|
31
|
-
"@enkaku/stream": "^0.
|
|
32
|
-
"@enkaku/
|
|
33
|
-
"@enkaku/
|
|
29
|
+
"@enkaku/execution": "^0.13.0",
|
|
30
|
+
"@enkaku/log": "^0.13.0",
|
|
31
|
+
"@enkaku/stream": "^0.13.0",
|
|
32
|
+
"@enkaku/token": "^0.13.0",
|
|
33
|
+
"@enkaku/async": "^0.13.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@enkaku/protocol": "^0.
|
|
37
|
-
"@enkaku/transport": "^0.
|
|
36
|
+
"@enkaku/protocol": "^0.13.0",
|
|
37
|
+
"@enkaku/transport": "^0.13.0"
|
|
38
38
|
},
|
|
39
39
|
"scripts": {
|
|
40
40
|
"build:clean": "del lib",
|