@enkaku/client 0.13.1 → 0.14.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/lib/client.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { Disposer } from '@enkaku/async';
2
2
  import { type Logger } from '@enkaku/log';
3
+ import { type Tracer } from '@enkaku/otel';
3
4
  import type { AnyProcedureDefinition, AnyRequestProcedureDefinition, ChannelProcedureDefinition, ClientTransportOf, DataOf, EventProcedureDefinition, ProtocolDefinition, RequestProcedureDefinition, RequestType, ReturnOf, StreamProcedureDefinition } from '@enkaku/protocol';
4
5
  import { type Identity } from '@enkaku/token';
5
6
  type FilterNever<T> = {
@@ -69,6 +70,7 @@ export type ClientParams<Protocol extends ProtocolDefinition> = {
69
70
  handleTransportDisposed?: (signal: AbortSignal) => ClientTransportOf<Protocol> | void;
70
71
  handleTransportError?: (error: Error) => ClientTransportOf<Protocol> | void;
71
72
  logger?: Logger;
73
+ tracer?: Tracer;
72
74
  transport: ClientTransportOf<Protocol>;
73
75
  serverID?: string;
74
76
  identity?: Identity | Promise<Identity>;
@@ -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
@@ -1,8 +1,10 @@
1
1
  import { Disposer, defer } from '@enkaku/async';
2
2
  import { getEnkakuLogger } from '@enkaku/log';
3
+ import { AttributeKeys, createTracer, injectTraceContext as otelInjectTraceContext, SpanNames, SpanStatusCode, setSpanOnContext, withActiveContext, withSpan } from '@enkaku/otel';
3
4
  import { createPipe, writeTo } from '@enkaku/stream';
4
5
  import { createUnsignedToken, isSigningIdentity } from '@enkaku/token';
5
6
  import { RequestError } from './error.js';
7
+ const defaultTracer = createTracer('client');
6
8
  function createController(params, onDone) {
7
9
  const deferred = defer();
8
10
  return Object.assign(new AbortController(), params, {
@@ -16,7 +18,7 @@ function createController(params, onDone) {
16
18
  onDone?.();
17
19
  },
18
20
  aborted: (signal)=>{
19
- deferred.reject(signal);
21
+ deferred.reject(signal.reason);
20
22
  onDone?.();
21
23
  }
22
24
  });
@@ -65,11 +67,13 @@ export class Client extends Disposer {
65
67
  #controllers = {};
66
68
  #createMessage;
67
69
  #getRandomID;
70
+ #spans = {};
68
71
  // biome-ignore lint/suspicious/noConfusingVoidType: return type
69
72
  #handleTransportDisposed;
70
73
  // biome-ignore lint/suspicious/noConfusingVoidType: return type
71
74
  #handleTransportError;
72
75
  #logger;
76
+ #tracer;
73
77
  #transport;
74
78
  constructor(params){
75
79
  super({
@@ -86,6 +90,7 @@ export class Client extends Disposer {
86
90
  this.#logger = params.logger ?? getEnkakuLogger('client', {
87
91
  clientID: this.#getRandomID()
88
92
  });
93
+ this.#tracer = params.tracer ?? defaultTracer;
89
94
  this.#transport = params.transport;
90
95
  // Start reading from transport
91
96
  this.#setupTransport();
@@ -118,6 +123,27 @@ export class Client extends Disposer {
118
123
  });
119
124
  this.#read();
120
125
  }
126
+ #endSpanOnResult(span, result, rid) {
127
+ result.then(()=>{
128
+ span.setStatus({
129
+ code: SpanStatusCode.OK
130
+ });
131
+ span.end();
132
+ if (rid != null) delete this.#spans[rid];
133
+ }, (error)=>{
134
+ if (error instanceof RequestError) {
135
+ span.setAttribute(AttributeKeys.ERROR_CODE, error.code);
136
+ span.setAttribute(AttributeKeys.ERROR_MESSAGE, error.message);
137
+ }
138
+ span.setStatus({
139
+ code: SpanStatusCode.ERROR,
140
+ message: error instanceof Error ? error.message : String(error)
141
+ });
142
+ span.recordException(error instanceof Error ? error : new Error(String(error)));
143
+ span.end();
144
+ if (rid != null) delete this.#spans[rid];
145
+ });
146
+ }
121
147
  async #read() {
122
148
  while(true){
123
149
  let msg;
@@ -173,14 +199,22 @@ export class Client extends Disposer {
173
199
  break;
174
200
  }
175
201
  case 'receive':
176
- this.#logger.trace('receive reply for {type} {procedure} with ID {rid}: {receive}', {
177
- type: controller.type,
178
- procedure: controller.procedure,
179
- rid: msg.payload.rid,
180
- receive: msg.payload.val
181
- });
182
- void controller.receive?.write(msg.payload.val);
183
- break;
202
+ {
203
+ this.#logger.trace('receive reply for {type} {procedure} with ID {rid}: {receive}', {
204
+ type: controller.type,
205
+ procedure: controller.procedure,
206
+ rid: msg.payload.rid,
207
+ receive: msg.payload.val
208
+ });
209
+ const receiveSpan = this.#spans[msg.payload.rid];
210
+ if (receiveSpan != null) {
211
+ receiveSpan.addEvent('stream.message.received', {
212
+ [AttributeKeys.MESSAGE_DIRECTION]: 'receive'
213
+ });
214
+ }
215
+ void controller.receive?.write(msg.payload.val);
216
+ break;
217
+ }
184
218
  case 'result':
185
219
  this.#logger.trace('result reply for {type} {procedure} with ID {rid}: {result}', {
186
220
  type: controller.type,
@@ -200,7 +234,10 @@ export class Client extends Disposer {
200
234
  cause: this.signal.reason
201
235
  });
202
236
  }
203
- const message = await this.#createMessage(payload, header);
237
+ const baseHeader = header ?? {};
238
+ const enrichedHeader = otelInjectTraceContext(baseHeader);
239
+ const finalHeader = Object.keys(enrichedHeader).length > 0 ? enrichedHeader : undefined;
240
+ const message = await this.#createMessage(payload, finalHeader);
204
241
  await this.#transport.write(message);
205
242
  }
206
243
  #handleSignal(rid, controller, providedSignal) {
@@ -232,37 +269,59 @@ export class Client extends Disposer {
232
269
  }
233
270
  async sendEvent(procedure, ...args) {
234
271
  const config = args[0] ?? {};
235
- const data = config.data;
236
- const payload = data ? {
237
- typ: 'event',
238
- prc: procedure,
239
- data
240
- } : {
241
- typ: 'event',
242
- prc: procedure
243
- };
244
- if (data == null) {
245
- this.#logger.trace('send event {procedure} without data', {
246
- procedure
247
- });
248
- } else {
249
- this.#logger.trace('send event {procedure} with data: {data}', {
250
- procedure,
272
+ return withSpan(this.#tracer, SpanNames.CLIENT_CALL, {
273
+ attributes: {
274
+ [AttributeKeys.RPC_SYSTEM]: 'enkaku',
275
+ [AttributeKeys.RPC_PROCEDURE]: procedure,
276
+ [AttributeKeys.RPC_TYPE]: 'event'
277
+ }
278
+ }, async ()=>{
279
+ const data = config.data;
280
+ const payload = data ? {
281
+ typ: 'event',
282
+ prc: procedure,
251
283
  data
252
- });
253
- }
254
- await this.#write(payload, config.header);
284
+ } : {
285
+ typ: 'event',
286
+ prc: procedure
287
+ };
288
+ if (data == null) {
289
+ this.#logger.trace('send event {procedure} without data', {
290
+ procedure
291
+ });
292
+ } else {
293
+ this.#logger.trace('send event {procedure} with data: {data}', {
294
+ procedure,
295
+ data
296
+ });
297
+ }
298
+ await this.#write(payload, config.header);
299
+ });
255
300
  }
256
301
  request(procedure, ...args) {
257
302
  const config = args[0] ?? {};
303
+ const rid = config.id ?? this.#getRandomID();
304
+ const span = this.#tracer.startSpan(SpanNames.CLIENT_CALL, {
305
+ attributes: {
306
+ [AttributeKeys.RPC_SYSTEM]: 'enkaku',
307
+ [AttributeKeys.RPC_PROCEDURE]: procedure,
308
+ [AttributeKeys.RPC_REQUEST_ID]: rid,
309
+ [AttributeKeys.RPC_TYPE]: 'request'
310
+ }
311
+ });
312
+ const spanCtx = setSpanOnContext(undefined, span);
258
313
  const controller = createController({
259
314
  type: 'request',
260
315
  procedure,
261
316
  header: config.header
262
317
  });
263
- const rid = config.id ?? this.#getRandomID();
264
318
  const providedSignal = config.signal;
265
319
  if (providedSignal?.aborted) {
320
+ span.setStatus({
321
+ code: SpanStatusCode.ERROR,
322
+ message: 'Aborted before send'
323
+ });
324
+ span.end();
266
325
  this.#logger.debug('reject aborted request {procedure} with ID {rid}', {
267
326
  procedure,
268
327
  rid
@@ -298,7 +357,8 @@ export class Client extends Disposer {
298
357
  param: prm
299
358
  });
300
359
  }
301
- const sent = this.#write(payload, config.header);
360
+ const sent = withActiveContext(spanCtx, ()=>this.#write(payload, config.header));
361
+ this.#endSpanOnResult(span, controller.result);
302
362
  const signal = this.#handleSignal(rid, controller, providedSignal);
303
363
  return createRequest({
304
364
  id: rid,
@@ -309,6 +369,16 @@ export class Client extends Disposer {
309
369
  }
310
370
  createStream(procedure, ...args) {
311
371
  const config = args[0] ?? {};
372
+ const rid = config.id ?? this.#getRandomID();
373
+ const span = this.#tracer.startSpan(SpanNames.CLIENT_CALL, {
374
+ attributes: {
375
+ [AttributeKeys.RPC_SYSTEM]: 'enkaku',
376
+ [AttributeKeys.RPC_PROCEDURE]: procedure,
377
+ [AttributeKeys.RPC_REQUEST_ID]: rid,
378
+ [AttributeKeys.RPC_TYPE]: 'stream'
379
+ }
380
+ });
381
+ const spanCtx = setSpanOnContext(undefined, span);
312
382
  const receive = createPipe();
313
383
  const writer = receive.writable.getWriter();
314
384
  const controller = Object.assign(createController({
@@ -318,9 +388,13 @@ export class Client extends Disposer {
318
388
  }, ()=>writer.close()), {
319
389
  receive: writer
320
390
  });
321
- const rid = config.id ?? this.#getRandomID();
322
391
  const providedSignal = config.signal;
323
392
  if (providedSignal?.aborted) {
393
+ span.setStatus({
394
+ code: SpanStatusCode.ERROR,
395
+ message: 'Aborted before send'
396
+ });
397
+ span.end();
324
398
  this.#logger.debug('reject aborted stream creation {procedure} with ID {rid}', {
325
399
  procedure,
326
400
  rid
@@ -334,6 +408,7 @@ export class Client extends Disposer {
334
408
  });
335
409
  }
336
410
  this.#controllers[rid] = controller;
411
+ this.#spans[rid] = span;
337
412
  const prm = config.param;
338
413
  const payload = prm ? {
339
414
  typ: 'stream',
@@ -357,7 +432,8 @@ export class Client extends Disposer {
357
432
  param: prm
358
433
  });
359
434
  }
360
- const sent = this.#write(payload, config.header);
435
+ const sent = withActiveContext(spanCtx, ()=>this.#write(payload, config.header));
436
+ this.#endSpanOnResult(span, controller.result, rid);
361
437
  const signal = this.#handleSignal(rid, controller, providedSignal);
362
438
  return createStream({
363
439
  id: rid,
@@ -369,6 +445,16 @@ export class Client extends Disposer {
369
445
  }
370
446
  createChannel(procedure, ...args) {
371
447
  const config = args[0] ?? {};
448
+ const rid = config.id ?? this.#getRandomID();
449
+ const span = this.#tracer.startSpan(SpanNames.CLIENT_CALL, {
450
+ attributes: {
451
+ [AttributeKeys.RPC_SYSTEM]: 'enkaku',
452
+ [AttributeKeys.RPC_PROCEDURE]: procedure,
453
+ [AttributeKeys.RPC_REQUEST_ID]: rid,
454
+ [AttributeKeys.RPC_TYPE]: 'channel'
455
+ }
456
+ });
457
+ const spanCtx = setSpanOnContext(undefined, span);
372
458
  const receive = createPipe();
373
459
  const writer = receive.writable.getWriter();
374
460
  const controller = Object.assign(createController({
@@ -378,9 +464,13 @@ export class Client extends Disposer {
378
464
  }, ()=>writer.close()), {
379
465
  receive: writer
380
466
  });
381
- const rid = config.id ?? this.#getRandomID();
382
467
  const providedSignal = config.signal;
383
468
  if (providedSignal?.aborted) {
469
+ span.setStatus({
470
+ code: SpanStatusCode.ERROR,
471
+ message: 'Aborted before send'
472
+ });
473
+ span.end();
384
474
  this.#logger.debug('reject aborted channel creation {procedure} with ID {rid}', {
385
475
  procedure,
386
476
  rid
@@ -399,6 +489,7 @@ export class Client extends Disposer {
399
489
  });
400
490
  }
401
491
  this.#controllers[rid] = controller;
492
+ this.#spans[rid] = span;
402
493
  const prm = config.param;
403
494
  const payload = prm ? {
404
495
  typ: 'channel',
@@ -422,9 +513,16 @@ export class Client extends Disposer {
422
513
  param: prm
423
514
  });
424
515
  }
425
- const sent = this.#write(payload, config.header);
516
+ const sent = withActiveContext(spanCtx, ()=>this.#write(payload, config.header));
517
+ this.#endSpanOnResult(span, controller.result, rid);
426
518
  const signal = this.#handleSignal(rid, controller, providedSignal);
427
519
  const send = async (val)=>{
520
+ const channelSpan = this.#spans[rid];
521
+ if (channelSpan != null) {
522
+ channelSpan.addEvent('channel.message.sent', {
523
+ [AttributeKeys.MESSAGE_DIRECTION]: 'send'
524
+ });
525
+ }
428
526
  this.#logger.trace('send value to channel {procedure} with ID {rid}: {value}', {
429
527
  procedure,
430
528
  rid,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enkaku/client",
3
- "version": "0.13.1",
3
+ "version": "0.14.1",
4
4
  "license": "MIT",
5
5
  "homepage": "https://enkaku.dev",
6
6
  "description": "Enkaku RPC client",
@@ -26,15 +26,16 @@
26
26
  ],
27
27
  "sideEffects": false,
28
28
  "dependencies": {
29
- "@enkaku/log": "^0.13.0",
30
- "@enkaku/async": "^0.13.0",
31
- "@enkaku/token": "^0.13.0",
32
- "@enkaku/execution": "^0.13.0",
33
- "@enkaku/stream": "^0.13.0"
29
+ "@enkaku/async": "^0.14.0",
30
+ "@enkaku/log": "^0.14.0",
31
+ "@enkaku/execution": "^0.14.0",
32
+ "@enkaku/stream": "^0.14.1",
33
+ "@enkaku/token": "^0.14.0",
34
+ "@enkaku/otel": "^0.14.0"
34
35
  },
35
36
  "devDependencies": {
36
- "@enkaku/protocol": "^0.13.0",
37
- "@enkaku/transport": "^0.13.1"
37
+ "@enkaku/protocol": "^0.14.0",
38
+ "@enkaku/transport": "^0.14.0"
38
39
  },
39
40
  "scripts": {
40
41
  "build:clean": "del lib",