@enkaku/client 0.13.0 → 0.14.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 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, {
@@ -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;
@@ -162,7 +188,7 @@ export class Client extends Disposer {
162
188
  case 'error':
163
189
  {
164
190
  const error = RequestError.fromPayload(msg.payload);
165
- this.#logger.debug('error reply for {type} {procedure} with ID {rid}', {
191
+ this.#logger.debug('error reply for {type} {procedure} with ID {rid}: {error}', {
166
192
  type: controller.type,
167
193
  procedure: controller.procedure,
168
194
  rid: msg.payload.rid,
@@ -173,16 +199,24 @@ 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}', {
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
- this.#logger.trace('result reply for {type} {procedure} with ID {rid}', {
219
+ this.#logger.trace('result reply for {type} {procedure} with ID {rid}: {result}', {
186
220
  type: controller.type,
187
221
  procedure: controller.procedure,
188
222
  rid: msg.payload.rid,
@@ -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) {
@@ -210,7 +247,7 @@ export class Client extends Disposer {
210
247
  ]) : controller.signal;
211
248
  signal.addEventListener('abort', ()=>{
212
249
  const reason = signal.reason.name ?? signal.reason;
213
- this.#logger.trace('abort {type} {procedure} with ID {rid}', {
250
+ this.#logger.trace('abort {type} {procedure} with ID {rid} and reason: {reason}', {
214
251
  type: controller.type,
215
252
  procedure: controller.procedure,
216
253
  rid,
@@ -232,32 +269,60 @@ 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
- this.#logger.trace('send event {procedure}', {
245
- procedure,
246
- data
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,
283
+ data
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);
247
299
  });
248
- await this.#write(payload, config.header);
249
300
  }
250
301
  request(procedure, ...args) {
251
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);
252
313
  const controller = createController({
253
314
  type: 'request',
254
315
  procedure,
255
316
  header: config.header
256
317
  });
257
- const rid = config.id ?? this.#getRandomID();
258
318
  const providedSignal = config.signal;
259
319
  if (providedSignal?.aborted) {
260
- this.#logger.debug('reject aborted request {procedure} with ID { rid }', {
320
+ span.setStatus({
321
+ code: SpanStatusCode.ERROR,
322
+ message: 'Aborted before send'
323
+ });
324
+ span.end();
325
+ this.#logger.debug('reject aborted request {procedure} with ID {rid}', {
261
326
  procedure,
262
327
  rid
263
328
  });
@@ -280,12 +345,20 @@ export class Client extends Disposer {
280
345
  rid,
281
346
  prc: procedure
282
347
  };
283
- this.#logger.trace('send request {procedure} with ID {rid}', {
284
- procedure,
285
- rid,
286
- param: prm
287
- });
288
- const sent = this.#write(payload, config.header);
348
+ if (prm == null) {
349
+ this.#logger.trace('send request {procedure} with ID {rid}', {
350
+ procedure,
351
+ rid
352
+ });
353
+ } else {
354
+ this.#logger.trace('send request {procedure} with ID {rid} and param: {param}', {
355
+ procedure,
356
+ rid,
357
+ param: prm
358
+ });
359
+ }
360
+ const sent = withActiveContext(spanCtx, ()=>this.#write(payload, config.header));
361
+ this.#endSpanOnResult(span, controller.result);
289
362
  const signal = this.#handleSignal(rid, controller, providedSignal);
290
363
  return createRequest({
291
364
  id: rid,
@@ -296,6 +369,16 @@ export class Client extends Disposer {
296
369
  }
297
370
  createStream(procedure, ...args) {
298
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);
299
382
  const receive = createPipe();
300
383
  const writer = receive.writable.getWriter();
301
384
  const controller = Object.assign(createController({
@@ -305,9 +388,13 @@ export class Client extends Disposer {
305
388
  }, ()=>writer.close()), {
306
389
  receive: writer
307
390
  });
308
- const rid = config.id ?? this.#getRandomID();
309
391
  const providedSignal = config.signal;
310
392
  if (providedSignal?.aborted) {
393
+ span.setStatus({
394
+ code: SpanStatusCode.ERROR,
395
+ message: 'Aborted before send'
396
+ });
397
+ span.end();
311
398
  this.#logger.debug('reject aborted stream creation {procedure} with ID {rid}', {
312
399
  procedure,
313
400
  rid
@@ -321,6 +408,7 @@ export class Client extends Disposer {
321
408
  });
322
409
  }
323
410
  this.#controllers[rid] = controller;
411
+ this.#spans[rid] = span;
324
412
  const prm = config.param;
325
413
  const payload = prm ? {
326
414
  typ: 'stream',
@@ -332,12 +420,20 @@ export class Client extends Disposer {
332
420
  rid,
333
421
  prc: procedure
334
422
  };
335
- this.#logger.trace('create stream {procedure} with ID {rid}', {
336
- procedure,
337
- rid,
338
- param: prm
339
- });
340
- const sent = this.#write(payload, config.header);
423
+ if (prm == null) {
424
+ this.#logger.trace('create stream {procedure} with ID {rid}', {
425
+ procedure,
426
+ rid
427
+ });
428
+ } else {
429
+ this.#logger.trace('create stream {procedure} with ID {rid} and param: {param}', {
430
+ procedure,
431
+ rid,
432
+ param: prm
433
+ });
434
+ }
435
+ const sent = withActiveContext(spanCtx, ()=>this.#write(payload, config.header));
436
+ this.#endSpanOnResult(span, controller.result, rid);
341
437
  const signal = this.#handleSignal(rid, controller, providedSignal);
342
438
  return createStream({
343
439
  id: rid,
@@ -349,6 +445,16 @@ export class Client extends Disposer {
349
445
  }
350
446
  createChannel(procedure, ...args) {
351
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);
352
458
  const receive = createPipe();
353
459
  const writer = receive.writable.getWriter();
354
460
  const controller = Object.assign(createController({
@@ -358,9 +464,13 @@ export class Client extends Disposer {
358
464
  }, ()=>writer.close()), {
359
465
  receive: writer
360
466
  });
361
- const rid = config.id ?? this.#getRandomID();
362
467
  const providedSignal = config.signal;
363
468
  if (providedSignal?.aborted) {
469
+ span.setStatus({
470
+ code: SpanStatusCode.ERROR,
471
+ message: 'Aborted before send'
472
+ });
473
+ span.end();
364
474
  this.#logger.debug('reject aborted channel creation {procedure} with ID {rid}', {
365
475
  procedure,
366
476
  rid
@@ -379,6 +489,7 @@ export class Client extends Disposer {
379
489
  });
380
490
  }
381
491
  this.#controllers[rid] = controller;
492
+ this.#spans[rid] = span;
382
493
  const prm = config.param;
383
494
  const payload = prm ? {
384
495
  typ: 'channel',
@@ -390,15 +501,29 @@ export class Client extends Disposer {
390
501
  rid,
391
502
  prc: procedure
392
503
  };
393
- this.#logger.trace('create channel {procedure} with ID {rid}', {
394
- procedure,
395
- rid,
396
- param: prm
397
- });
398
- const sent = this.#write(payload, config.header);
504
+ if (prm == null) {
505
+ this.#logger.trace('create channel {procedure} with ID {rid}', {
506
+ procedure,
507
+ rid
508
+ });
509
+ } else {
510
+ this.#logger.trace('create channel {procedure} with ID {rid} and param: {param}', {
511
+ procedure,
512
+ rid,
513
+ param: prm
514
+ });
515
+ }
516
+ const sent = withActiveContext(spanCtx, ()=>this.#write(payload, config.header));
517
+ this.#endSpanOnResult(span, controller.result, rid);
399
518
  const signal = this.#handleSignal(rid, controller, providedSignal);
400
519
  const send = async (val)=>{
401
- this.#logger.trace('send value to channel {procedure} with ID {rid}', {
520
+ const channelSpan = this.#spans[rid];
521
+ if (channelSpan != null) {
522
+ channelSpan.addEvent('channel.message.sent', {
523
+ [AttributeKeys.MESSAGE_DIRECTION]: 'send'
524
+ });
525
+ }
526
+ this.#logger.trace('send value to channel {procedure} with ID {rid}: {value}', {
402
527
  procedure,
403
528
  rid,
404
529
  value: val
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enkaku/client",
3
- "version": "0.13.0",
3
+ "version": "0.14.0",
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/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"
29
+ "@enkaku/async": "^0.14.0",
30
+ "@enkaku/execution": "^0.14.0",
31
+ "@enkaku/log": "^0.14.0",
32
+ "@enkaku/stream": "^0.14.0",
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.0"
37
+ "@enkaku/transport": "^0.14.0",
38
+ "@enkaku/protocol": "^0.14.0"
38
39
  },
39
40
  "scripts": {
40
41
  "build:clean": "del lib",