@fluojs/microservices 1.0.3 → 1.0.5

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.
Files changed (34) hide show
  1. package/README.ko.md +50 -4
  2. package/README.md +50 -4
  3. package/dist/index.d.ts +1 -1
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/module.js +1 -1
  6. package/dist/service.d.ts +3 -2
  7. package/dist/service.d.ts.map +1 -1
  8. package/dist/service.js +7 -4
  9. package/dist/status.d.ts +2 -0
  10. package/dist/status.d.ts.map +1 -1
  11. package/dist/status.js +5 -3
  12. package/dist/transports/grpc-transport.d.ts +4 -0
  13. package/dist/transports/grpc-transport.d.ts.map +1 -1
  14. package/dist/transports/grpc-transport.js +226 -260
  15. package/dist/transports/kafka-transport.d.ts +1 -0
  16. package/dist/transports/kafka-transport.d.ts.map +1 -1
  17. package/dist/transports/kafka-transport.js +56 -36
  18. package/dist/transports/mqtt-transport.d.ts +4 -0
  19. package/dist/transports/mqtt-transport.d.ts.map +1 -1
  20. package/dist/transports/mqtt-transport.js +91 -32
  21. package/dist/transports/nats-transport.d.ts +1 -0
  22. package/dist/transports/nats-transport.d.ts.map +1 -1
  23. package/dist/transports/nats-transport.js +53 -23
  24. package/dist/transports/rabbitmq-transport.d.ts +1 -0
  25. package/dist/transports/rabbitmq-transport.d.ts.map +1 -1
  26. package/dist/transports/rabbitmq-transport.js +54 -29
  27. package/dist/transports/redis-streams-transport.d.ts.map +1 -1
  28. package/dist/transports/redis-streams-transport.js +22 -2
  29. package/dist/transports/tcp-transport.d.ts +8 -2
  30. package/dist/transports/tcp-transport.d.ts.map +1 -1
  31. package/dist/transports/tcp-transport.js +4 -0
  32. package/dist/types.d.ts +2 -0
  33. package/dist/types.d.ts.map +1 -1
  34. package/package.json +4 -4
@@ -16,8 +16,11 @@ const grpcKinds = {
16
16
  * and exposes matching unary/server-stream/client-stream/bidi-stream client calls through one transport surface.
17
17
  */
18
18
  export class GrpcMicroserviceTransport {
19
+ /** Indicates whether gRPC owns server shutdown in addition to cached client cleanup. */
20
+ ownsResources;
19
21
  bidiStreamHandler;
20
22
  clientStreamHandler;
23
+ closePromise;
21
24
  closing = false;
22
25
  clients = new Map();
23
26
  grpc;
@@ -29,6 +32,7 @@ export class GrpcMicroserviceTransport {
29
32
  packageRoot;
30
33
  requestTimeoutMs;
31
34
  server;
35
+ ownsServer;
32
36
  resolvedServer;
33
37
  serverStreamHandler;
34
38
 
@@ -41,6 +45,8 @@ export class GrpcMicroserviceTransport {
41
45
  this.options = options;
42
46
  this.requestTimeoutMs = options.requestTimeoutMs ?? 3_000;
43
47
  this.server = options.server;
48
+ this.ownsServer = !options.server;
49
+ this.ownsResources = this.ownsServer;
44
50
  }
45
51
  setLogger(logger) {
46
52
  this.logger = logger;
@@ -53,7 +59,12 @@ export class GrpcMicroserviceTransport {
53
59
  * @returns A promise that resolves once the gRPC server is bound and ready.
54
60
  */
55
61
  async listen(handler) {
56
- this.closing = false;
62
+ if (this.closing) {
63
+ if (this.closePromise) {
64
+ throw new Error('GrpcMicroserviceTransport is closing. Wait for close() to complete before listen().');
65
+ }
66
+ this.closing = false;
67
+ }
57
68
  this.handler = handler;
58
69
  if (this.listening) {
59
70
  return;
@@ -85,7 +96,9 @@ export class GrpcMicroserviceTransport {
85
96
  }
86
97
  await this.bindServer(server, grpc);
87
98
  } catch (error) {
88
- await this.shutdownServer(server);
99
+ if (this.ownsServer) {
100
+ await this.shutdownServer(server);
101
+ }
89
102
  throw error;
90
103
  }
91
104
  this.grpc = grpc;
@@ -225,39 +238,50 @@ export class GrpcMicroserviceTransport {
225
238
  * @returns A promise that resolves once shutdown cleanup completes.
226
239
  */
227
240
  async close() {
228
- this.closing = true;
229
- let closeError;
230
- if (this.listenPromise) {
231
- await this.listenPromise;
241
+ if (this.closePromise) {
242
+ await this.closePromise;
243
+ return;
232
244
  }
233
- try {
234
- if (this.resolvedServer) {
235
- await this.shutdownServer(this.resolvedServer);
245
+ this.closing = true;
246
+ this.closePromise = (async () => {
247
+ let closeError;
248
+ if (this.listenPromise) {
249
+ await this.listenPromise;
236
250
  }
237
- for (const service of this.clients.values()) {
238
- try {
239
- service.client.close?.();
240
- } catch (error) {
241
- closeError ??= error;
251
+ try {
252
+ if (this.resolvedServer && this.ownsServer) {
253
+ await this.shutdownServer(this.resolvedServer);
254
+ }
255
+ for (const service of this.clients.values()) {
256
+ try {
257
+ service.client.close?.();
258
+ } catch (error) {
259
+ closeError ??= error;
260
+ }
261
+ }
262
+ } catch (error) {
263
+ closeError ??= error;
264
+ } finally {
265
+ this.handler = undefined;
266
+ this.serverStreamHandler = undefined;
267
+ this.clientStreamHandler = undefined;
268
+ this.bidiStreamHandler = undefined;
269
+ this.listening = false;
270
+ this.resolvedServer = undefined;
271
+ this.clients.clear();
272
+ this.packageRoot = undefined;
273
+ for (const pending of [...this.pending.values()]) {
274
+ pending.reject(new Error('gRPC microservice transport closed before response.'));
242
275
  }
243
276
  }
244
- } catch (error) {
245
- closeError ??= error;
246
- } finally {
247
- this.handler = undefined;
248
- this.serverStreamHandler = undefined;
249
- this.clientStreamHandler = undefined;
250
- this.bidiStreamHandler = undefined;
251
- this.listening = false;
252
- this.resolvedServer = undefined;
253
- this.clients.clear();
254
- this.packageRoot = undefined;
255
- for (const pending of [...this.pending.values()]) {
256
- pending.reject(new Error('gRPC microservice transport closed before response.'));
277
+ if (closeError) {
278
+ throw closeError;
257
279
  }
258
- }
259
- if (closeError) {
260
- throw closeError;
280
+ })();
281
+ try {
282
+ await this.closePromise;
283
+ } finally {
284
+ this.closePromise = undefined;
261
285
  }
262
286
  }
263
287
  buildServiceImplementation(serviceName, serviceConstructor) {
@@ -471,6 +495,13 @@ export class GrpcMicroserviceTransport {
471
495
  });
472
496
  }
473
497
  void Promise.resolve().then(() => {
498
+ if (!this.pending.has(requestId)) {
499
+ return;
500
+ }
501
+ if (signal?.aborted) {
502
+ entry.reject(new Error('gRPC request aborted before dispatch.'));
503
+ return;
504
+ }
474
505
  if (this.closing) {
475
506
  entry.reject(new Error('gRPC microservice transport closed before response.'));
476
507
  return;
@@ -505,124 +536,11 @@ export class GrpcMicroserviceTransport {
505
536
  throw new Error(`GrpcMicroserviceTransport could not resolve server-streaming method "${parsedPattern.serviceName}.${parsedPattern.methodName}".`);
506
537
  }
507
538
  const metadata = this.createMetadata(grpcKinds.message);
508
- const transport = this;
509
- return {
510
- [Symbol.asyncIterator]() {
511
- const buffer = [];
512
- let done = false;
513
- let error;
514
- let waiting;
515
- let stream;
516
- let removeAbortListener;
517
- const cleanupAbortListener = () => {
518
- removeAbortListener?.();
519
- removeAbortListener = undefined;
520
- };
521
- const finish = () => {
522
- done = true;
523
- cleanupAbortListener();
524
- };
525
- const startStream = () => {
526
- if (stream) {
527
- return;
528
- }
529
- stream = method.call(runtime.client, payload, metadata);
530
- stream.on('data', data => {
531
- if (waiting) {
532
- const w = waiting;
533
- waiting = undefined;
534
- w.resolve({
535
- value: data,
536
- done: false
537
- });
538
- } else {
539
- buffer.push(data);
540
- }
541
- });
542
- stream.on('end', () => {
543
- finish();
544
- if (waiting) {
545
- const w = waiting;
546
- waiting = undefined;
547
- w.resolve({
548
- value: undefined,
549
- done: true
550
- });
551
- }
552
- });
553
- stream.on('error', err => {
554
- finish();
555
- if (signal?.aborted) {
556
- error = new Error('gRPC server stream aborted.');
557
- } else {
558
- error = err instanceof Error ? err : new Error('gRPC server stream error.');
559
- }
560
- if (waiting) {
561
- const w = waiting;
562
- waiting = undefined;
563
- w.reject(error);
564
- }
565
- });
566
- if (signal) {
567
- if (signal.aborted) {
568
- finish();
569
- error = new Error('gRPC server stream aborted.');
570
- stream.cancel?.();
571
- return;
572
- }
573
- const onAbort = () => {
574
- finish();
575
- error = new Error('gRPC server stream aborted.');
576
- stream?.cancel?.();
577
- if (waiting) {
578
- const w = waiting;
579
- waiting = undefined;
580
- w.reject(error);
581
- }
582
- };
583
- signal.addEventListener('abort', onAbort, {
584
- once: true
585
- });
586
- removeAbortListener = () => signal.removeEventListener('abort', onAbort);
587
- }
588
- };
589
- void transport;
590
- return {
591
- next() {
592
- startStream();
593
- if (buffer.length > 0) {
594
- return Promise.resolve({
595
- value: buffer.shift(),
596
- done: false
597
- });
598
- }
599
- if (error) {
600
- return Promise.reject(error);
601
- }
602
- if (done) {
603
- return Promise.resolve({
604
- value: undefined,
605
- done: true
606
- });
607
- }
608
- return new Promise((resolve, reject) => {
609
- waiting = {
610
- resolve,
611
- reject
612
- };
613
- });
614
- },
615
- return() {
616
- finish();
617
- stream?.cancel?.();
618
- return Promise.resolve({
619
- value: undefined,
620
- done: true
621
- });
622
- }
623
- };
624
- }
625
- };
539
+ const stream = method.call(runtime.client, payload, metadata);
540
+ return grpcReadableToAsyncIterable(stream, {
541
+ abortErrorMessage: 'gRPC server stream aborted.',
542
+ signal
543
+ });
626
544
  }
627
545
  callClientStream(parsedPattern, signal) {
628
546
  const runtime = this.getServiceRuntime(parsedPattern.serviceName);
@@ -634,40 +552,54 @@ export class GrpcMicroserviceTransport {
634
552
  let callStream;
635
553
  let ended = false;
636
554
  let cleanupAbortListener;
555
+ let settled = false;
637
556
  const cleanup = () => {
638
557
  cleanupAbortListener?.();
639
558
  cleanupAbortListener = undefined;
640
559
  };
641
560
  const result = new Promise((resolve, reject) => {
642
561
  if (signal?.aborted) {
562
+ settled = true;
643
563
  reject(new Error('gRPC client stream aborted before dispatch.'));
644
564
  return;
645
565
  }
646
- callStream = method.call(runtime.client, metadata, (error, response) => {
566
+ const settle = complete => {
567
+ if (settled) {
568
+ return;
569
+ }
570
+ settled = true;
647
571
  cleanup();
572
+ complete();
573
+ };
574
+ callStream = method.call(runtime.client, metadata, (error, response) => {
648
575
  if (error) {
649
576
  if (signal?.aborted) {
650
- reject(new Error('gRPC client stream aborted.'));
577
+ settle(() => reject(new Error('gRPC client stream aborted.')));
651
578
  return;
652
579
  }
653
580
  const message = typeof error.message === 'string' && error.message.length > 0 ? error.message : 'Unhandled gRPC client stream error';
654
- reject(new Error(message));
581
+ settle(() => reject(new Error(message)));
655
582
  return;
656
583
  }
657
- resolve(response);
584
+ settle(() => resolve(response));
658
585
  });
659
- if (signal) {
586
+ if (signal && !settled) {
660
587
  const onAbort = () => {
661
- if (!ended) {
662
- ended = true;
663
- callStream?.end();
664
- }
665
- reject(new Error('gRPC client stream aborted.'));
588
+ settle(() => {
589
+ if (!ended) {
590
+ ended = true;
591
+ callStream?.end();
592
+ }
593
+ reject(new Error('gRPC client stream aborted.'));
594
+ });
666
595
  };
667
596
  signal.addEventListener('abort', onAbort, {
668
597
  once: true
669
598
  });
670
599
  cleanupAbortListener = () => signal.removeEventListener('abort', onAbort);
600
+ if (signal.aborted) {
601
+ onAbort();
602
+ }
671
603
  }
672
604
  });
673
605
  const writer = {
@@ -722,7 +654,10 @@ export class GrpcMicroserviceTransport {
722
654
  cleanupAbortListener = () => signal.removeEventListener('abort', onAbort);
723
655
  }
724
656
  }
725
- const reader = grpcReadableToAsyncIterable(duplexStream, signal, cleanupAbortListener);
657
+ const reader = grpcReadableToAsyncIterable(duplexStream, {
658
+ externalAbortCleanup: cleanupAbortListener,
659
+ signal
660
+ });
726
661
  const writer = {
727
662
  write(data) {
728
663
  if (!writerEnded) {
@@ -932,114 +867,145 @@ export class GrpcMicroserviceTransport {
932
867
  logTransportEventHandlerFailure(this.logger, 'GrpcMicroserviceTransport', error);
933
868
  }
934
869
  }
935
- function grpcReadableToAsyncIterable(stream, signal, externalAbortCleanup) {
936
- return {
937
- [Symbol.asyncIterator]() {
938
- const buffer = [];
939
- let done = false;
940
- let error;
941
- let waiting;
942
- let removeAbortListener;
943
- const cleanupAbortListeners = () => {
944
- removeAbortListener?.();
945
- removeAbortListener = undefined;
946
- externalAbortCleanup?.();
947
- };
948
- const finish = () => {
949
- done = true;
950
- cleanupAbortListeners();
951
- };
952
- stream.on('data', data => {
953
- if (waiting) {
954
- const w = waiting;
955
- waiting = undefined;
956
- w.resolve({
957
- value: data,
958
- done: false
959
- });
960
- } else {
961
- buffer.push(data);
870
+ function grpcReadableToAsyncIterable(stream, options = {}) {
871
+ const {
872
+ signal
873
+ } = options;
874
+ const abortErrorMessage = options.abortErrorMessage ?? 'gRPC stream aborted.';
875
+ const buffer = [];
876
+ let cleanupExternalAbortListener = options.externalAbortCleanup;
877
+ let done = false;
878
+ let error;
879
+ let waiting;
880
+ let removeAbortListener;
881
+ const cleanupAbortListeners = () => {
882
+ const cleanupLocal = removeAbortListener;
883
+ const cleanupExternal = cleanupExternalAbortListener;
884
+ removeAbortListener = undefined;
885
+ cleanupExternalAbortListener = undefined;
886
+ cleanupLocal?.();
887
+ cleanupExternal?.();
888
+ };
889
+ const finish = () => {
890
+ if (done) {
891
+ return false;
892
+ }
893
+ done = true;
894
+ cleanupAbortListeners();
895
+ return true;
896
+ };
897
+ if (signal) {
898
+ if (signal.aborted) {
899
+ error = new Error(abortErrorMessage);
900
+ finish();
901
+ stream.cancel?.();
902
+ } else {
903
+ const onAbort = () => {
904
+ const abortError = new Error(abortErrorMessage);
905
+ if (!finish()) {
906
+ return;
962
907
  }
963
- });
964
- stream.on('end', () => {
965
- finish();
908
+ error = abortError;
909
+ stream.cancel?.();
966
910
  if (waiting) {
967
- const w = waiting;
911
+ const current = waiting;
968
912
  waiting = undefined;
969
- w.resolve({
970
- value: undefined,
971
- done: true
972
- });
913
+ current.reject(abortError);
973
914
  }
915
+ };
916
+ signal.addEventListener('abort', onAbort, {
917
+ once: true
974
918
  });
975
- stream.on('error', err => {
976
- finish();
977
- if (signal?.aborted) {
978
- error = new Error('gRPC stream aborted.');
979
- } else {
980
- error = err instanceof Error ? err : new Error('gRPC stream error.');
981
- }
982
- if (waiting) {
983
- const w = waiting;
984
- waiting = undefined;
985
- w.reject(error);
986
- }
919
+ removeAbortListener = () => signal.removeEventListener('abort', onAbort);
920
+ }
921
+ }
922
+ stream.on('data', data => {
923
+ if (done) {
924
+ return;
925
+ }
926
+ if (waiting) {
927
+ const current = waiting;
928
+ waiting = undefined;
929
+ current.resolve({
930
+ value: data,
931
+ done: false
987
932
  });
988
- if (signal) {
989
- if (signal.aborted) {
990
- finish();
991
- error = new Error('gRPC stream aborted.');
992
- stream.cancel?.();
993
- } else {
994
- const onAbort = () => {
995
- finish();
996
- error = new Error('gRPC stream aborted.');
997
- stream.cancel?.();
998
- if (waiting) {
999
- const w = waiting;
1000
- waiting = undefined;
1001
- w.reject(error);
1002
- }
1003
- };
1004
- signal.addEventListener('abort', onAbort, {
1005
- once: true
1006
- });
1007
- removeAbortListener = () => signal.removeEventListener('abort', onAbort);
1008
- }
933
+ } else {
934
+ buffer.push(data);
935
+ }
936
+ });
937
+ stream.on('end', () => {
938
+ if (!finish()) {
939
+ return;
940
+ }
941
+ if (waiting) {
942
+ const current = waiting;
943
+ waiting = undefined;
944
+ current.resolve({
945
+ value: undefined,
946
+ done: true
947
+ });
948
+ }
949
+ });
950
+ stream.on('error', err => {
951
+ const streamError = signal?.aborted ? new Error(abortErrorMessage) : err;
952
+ if (!finish()) {
953
+ return;
954
+ }
955
+ error = streamError;
956
+ if (waiting) {
957
+ const current = waiting;
958
+ waiting = undefined;
959
+ current.reject(streamError);
960
+ }
961
+ });
962
+ const iterator = {
963
+ next() {
964
+ if (buffer.length > 0) {
965
+ return Promise.resolve({
966
+ value: buffer.shift(),
967
+ done: false
968
+ });
1009
969
  }
1010
- return {
1011
- next() {
1012
- if (buffer.length > 0) {
1013
- return Promise.resolve({
1014
- value: buffer.shift(),
1015
- done: false
1016
- });
1017
- }
1018
- if (error) {
1019
- return Promise.reject(error);
1020
- }
1021
- if (done) {
1022
- return Promise.resolve({
1023
- value: undefined,
1024
- done: true
1025
- });
1026
- }
1027
- return new Promise((resolve, reject) => {
1028
- waiting = {
1029
- resolve,
1030
- reject
1031
- };
1032
- });
1033
- },
1034
- return() {
1035
- finish();
1036
- stream.cancel?.();
1037
- return Promise.resolve({
1038
- value: undefined,
1039
- done: true
1040
- });
1041
- }
1042
- };
970
+ if (error) {
971
+ return Promise.reject(error);
972
+ }
973
+ if (done) {
974
+ return Promise.resolve({
975
+ value: undefined,
976
+ done: true
977
+ });
978
+ }
979
+ return new Promise((resolve, reject) => {
980
+ waiting = {
981
+ resolve,
982
+ reject
983
+ };
984
+ });
985
+ },
986
+ return() {
987
+ const shouldCancel = finish();
988
+ buffer.length = 0;
989
+ if (waiting) {
990
+ const current = waiting;
991
+ waiting = undefined;
992
+ current.resolve({
993
+ value: undefined,
994
+ done: true
995
+ });
996
+ }
997
+ if (shouldCancel) {
998
+ stream.cancel?.();
999
+ }
1000
+ return Promise.resolve({
1001
+ value: undefined,
1002
+ done: true
1003
+ });
1004
+ }
1005
+ };
1006
+ return {
1007
+ [Symbol.asyncIterator]() {
1008
+ return iterator;
1043
1009
  }
1044
1010
  };
1045
1011
  }
@@ -23,6 +23,7 @@ export interface KafkaMicroserviceTransportOptions {
23
23
  */
24
24
  export declare class KafkaMicroserviceTransport implements MicroserviceTransport {
25
25
  private readonly options;
26
+ private closePromise;
26
27
  private closing;
27
28
  private handler;
28
29
  private listening;
@@ -1 +1 @@
1
- {"version":3,"file":"kafka-transport.d.ts","sourceRoot":"","sources":["../../src/transports/kafka-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE3E,UAAU,iBAAiB;IACzB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5F,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAED,UAAU,iBAAiB;IACzB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD;AAgBD,gEAAgE;AAChE,MAAM,WAAW,iCAAiC;IAChD,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,qBAAa,0BAA2B,YAAW,qBAAqB;IAgB1D,OAAO,CAAC,QAAQ,CAAC,OAAO;IAfpC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC;;;;OAIG;gBAC0B,OAAO,EAAE,iCAAiC;IAOvE;;;;;OAKG;IACG,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiDtD;;;;;;;OAOG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IA6ErF;;;;;;OAMG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5D;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAgCd,kBAAkB;YAkBlB,oBAAoB;YAwCpB,qBAAqB;IAqBnC,OAAO,CAAC,YAAY;CAqCrB"}
1
+ {"version":3,"file":"kafka-transport.d.ts","sourceRoot":"","sources":["../../src/transports/kafka-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE3E,UAAU,iBAAiB;IACzB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5F,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAED,UAAU,iBAAiB;IACzB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD;AAgBD,gEAAgE;AAChE,MAAM,WAAW,iCAAiC;IAChD,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,qBAAa,0BAA2B,YAAW,qBAAqB;IAiB1D,OAAO,CAAC,QAAQ,CAAC,OAAO;IAhBpC,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC;;;;OAIG;gBAC0B,OAAO,EAAE,iCAAiC;IAOvE;;;;;OAKG;IACG,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkDtD;;;;;;;OAOG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAsFrF;;;;;;OAMG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5D;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YA6Cd,kBAAkB;YAkBlB,oBAAoB;YA2CpB,qBAAqB;IAqBnC,OAAO,CAAC,YAAY;CAqCrB"}