@fluojs/microservices 1.0.4 → 2.0.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.
Files changed (37) hide show
  1. package/README.ko.md +64 -6
  2. package/README.md +64 -6
  3. package/dist/module.d.ts.map +1 -1
  4. package/dist/module.js +2 -1
  5. package/dist/service.d.ts +15 -5
  6. package/dist/service.d.ts.map +1 -1
  7. package/dist/service.js +96 -38
  8. package/dist/status.d.ts +3 -0
  9. package/dist/status.d.ts.map +1 -1
  10. package/dist/status.js +10 -2
  11. package/dist/transports/grpc-transport.d.ts +4 -2
  12. package/dist/transports/grpc-transport.d.ts.map +1 -1
  13. package/dist/transports/grpc-transport.js +241 -241
  14. package/dist/transports/kafka-transport.d.ts +9 -1
  15. package/dist/transports/kafka-transport.d.ts.map +1 -1
  16. package/dist/transports/kafka-transport.js +41 -21
  17. package/dist/transports/mqtt-transport.d.ts +1 -0
  18. package/dist/transports/mqtt-transport.d.ts.map +1 -1
  19. package/dist/transports/mqtt-transport.js +22 -1
  20. package/dist/transports/nats-transport.d.ts +3 -0
  21. package/dist/transports/nats-transport.d.ts.map +1 -1
  22. package/dist/transports/nats-transport.js +83 -30
  23. package/dist/transports/rabbitmq-transport.d.ts +10 -1
  24. package/dist/transports/rabbitmq-transport.d.ts.map +1 -1
  25. package/dist/transports/rabbitmq-transport.js +80 -30
  26. package/dist/transports/redis-streams-transport.d.ts +18 -0
  27. package/dist/transports/redis-streams-transport.d.ts.map +1 -1
  28. package/dist/transports/redis-streams-transport.js +46 -3
  29. package/dist/transports/redis-transport.d.ts +1 -1
  30. package/dist/transports/redis-transport.d.ts.map +1 -1
  31. package/dist/transports/redis-transport.js +32 -16
  32. package/dist/transports/tcp-transport.d.ts +1 -0
  33. package/dist/transports/tcp-transport.d.ts.map +1 -1
  34. package/dist/transports/tcp-transport.js +45 -44
  35. package/dist/types.d.ts +7 -0
  36. package/dist/types.d.ts.map +1 -1
  37. package/package.json +11 -7
@@ -16,8 +16,10 @@ 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
+ /** Indicates that gRPC closes the cached outbound clients it creates. */
20
+ ownsResources = true;
21
+ /** Reports server and cached outbound client ownership independently. */
22
+ resourceOwnership;
21
23
  bidiStreamHandler;
22
24
  clientStreamHandler;
23
25
  closePromise;
@@ -46,7 +48,10 @@ export class GrpcMicroserviceTransport {
46
48
  this.requestTimeoutMs = options.requestTimeoutMs ?? 3_000;
47
49
  this.server = options.server;
48
50
  this.ownsServer = !options.server;
49
- this.ownsResources = this.ownsServer;
51
+ this.resourceOwnership = {
52
+ outboundClients: 'framework',
53
+ server: this.ownsServer ? 'framework' : 'caller'
54
+ };
50
55
  }
51
56
  setLogger(logger) {
52
57
  this.logger = logger;
@@ -536,124 +541,11 @@ export class GrpcMicroserviceTransport {
536
541
  throw new Error(`GrpcMicroserviceTransport could not resolve server-streaming method "${parsedPattern.serviceName}.${parsedPattern.methodName}".`);
537
542
  }
538
543
  const metadata = this.createMetadata(grpcKinds.message);
539
- const transport = this;
540
- return {
541
- [Symbol.asyncIterator]() {
542
- const buffer = [];
543
- let done = false;
544
- let error;
545
- let waiting;
546
- let stream;
547
- let removeAbortListener;
548
- const cleanupAbortListener = () => {
549
- removeAbortListener?.();
550
- removeAbortListener = undefined;
551
- };
552
- const finish = () => {
553
- done = true;
554
- cleanupAbortListener();
555
- };
556
- const startStream = () => {
557
- if (stream) {
558
- return;
559
- }
560
- stream = method.call(runtime.client, payload, metadata);
561
- stream.on('data', data => {
562
- if (waiting) {
563
- const w = waiting;
564
- waiting = undefined;
565
- w.resolve({
566
- value: data,
567
- done: false
568
- });
569
- } else {
570
- buffer.push(data);
571
- }
572
- });
573
- stream.on('end', () => {
574
- finish();
575
- if (waiting) {
576
- const w = waiting;
577
- waiting = undefined;
578
- w.resolve({
579
- value: undefined,
580
- done: true
581
- });
582
- }
583
- });
584
- stream.on('error', err => {
585
- finish();
586
- if (signal?.aborted) {
587
- error = new Error('gRPC server stream aborted.');
588
- } else {
589
- error = err instanceof Error ? err : new Error('gRPC server stream error.');
590
- }
591
- if (waiting) {
592
- const w = waiting;
593
- waiting = undefined;
594
- w.reject(error);
595
- }
596
- });
597
- if (signal) {
598
- if (signal.aborted) {
599
- finish();
600
- error = new Error('gRPC server stream aborted.');
601
- stream.cancel?.();
602
- return;
603
- }
604
- const onAbort = () => {
605
- finish();
606
- error = new Error('gRPC server stream aborted.');
607
- stream?.cancel?.();
608
- if (waiting) {
609
- const w = waiting;
610
- waiting = undefined;
611
- w.reject(error);
612
- }
613
- };
614
- signal.addEventListener('abort', onAbort, {
615
- once: true
616
- });
617
- removeAbortListener = () => signal.removeEventListener('abort', onAbort);
618
- }
619
- };
620
- void transport;
621
- return {
622
- next() {
623
- startStream();
624
- if (buffer.length > 0) {
625
- return Promise.resolve({
626
- value: buffer.shift(),
627
- done: false
628
- });
629
- }
630
- if (error) {
631
- return Promise.reject(error);
632
- }
633
- if (done) {
634
- return Promise.resolve({
635
- value: undefined,
636
- done: true
637
- });
638
- }
639
- return new Promise((resolve, reject) => {
640
- waiting = {
641
- resolve,
642
- reject
643
- };
644
- });
645
- },
646
- return() {
647
- finish();
648
- stream?.cancel?.();
649
- return Promise.resolve({
650
- value: undefined,
651
- done: true
652
- });
653
- }
654
- };
655
- }
656
- };
544
+ const stream = method.call(runtime.client, payload, metadata);
545
+ return grpcReadableToAsyncIterable(stream, {
546
+ abortErrorMessage: 'gRPC server stream aborted.',
547
+ signal
548
+ });
657
549
  }
658
550
  callClientStream(parsedPattern, signal) {
659
551
  const runtime = this.getServiceRuntime(parsedPattern.serviceName);
@@ -665,40 +557,63 @@ export class GrpcMicroserviceTransport {
665
557
  let callStream;
666
558
  let ended = false;
667
559
  let cleanupAbortListener;
560
+ let settled = false;
561
+ let writerError;
562
+ let rejectResult;
668
563
  const cleanup = () => {
669
564
  cleanupAbortListener?.();
670
565
  cleanupAbortListener = undefined;
671
566
  };
672
567
  const result = new Promise((resolve, reject) => {
673
568
  if (signal?.aborted) {
569
+ settled = true;
674
570
  reject(new Error('gRPC client stream aborted before dispatch.'));
675
571
  return;
676
572
  }
677
- callStream = method.call(runtime.client, metadata, (error, response) => {
573
+ rejectResult = reject;
574
+ const settle = complete => {
575
+ if (settled) {
576
+ return;
577
+ }
578
+ settled = true;
678
579
  cleanup();
580
+ complete();
581
+ };
582
+ callStream = method.call(runtime.client, metadata, (error, response) => {
583
+ // A local writer.error() failure is the authoritative cause: the transport-level
584
+ // status that follows an aborted call would otherwise mask it.
585
+ if (writerError) {
586
+ settle(() => reject(writerError));
587
+ return;
588
+ }
679
589
  if (error) {
680
590
  if (signal?.aborted) {
681
- reject(new Error('gRPC client stream aborted.'));
591
+ settle(() => reject(new Error('gRPC client stream aborted.')));
682
592
  return;
683
593
  }
684
594
  const message = typeof error.message === 'string' && error.message.length > 0 ? error.message : 'Unhandled gRPC client stream error';
685
- reject(new Error(message));
595
+ settle(() => reject(new Error(message)));
686
596
  return;
687
597
  }
688
- resolve(response);
598
+ settle(() => resolve(response));
689
599
  });
690
- if (signal) {
600
+ if (signal && !settled) {
691
601
  const onAbort = () => {
692
- if (!ended) {
693
- ended = true;
694
- callStream?.end();
695
- }
696
- reject(new Error('gRPC client stream aborted.'));
602
+ settle(() => {
603
+ if (!ended) {
604
+ ended = true;
605
+ callStream?.end();
606
+ }
607
+ reject(new Error('gRPC client stream aborted.'));
608
+ });
697
609
  };
698
610
  signal.addEventListener('abort', onAbort, {
699
611
  once: true
700
612
  });
701
613
  cleanupAbortListener = () => signal.removeEventListener('abort', onAbort);
614
+ if (signal.aborted) {
615
+ onAbort();
616
+ }
702
617
  }
703
618
  });
704
619
  const writer = {
@@ -714,10 +629,19 @@ export class GrpcMicroserviceTransport {
714
629
  }
715
630
  },
716
631
  error(err) {
717
- void err;
718
- if (!ended) {
719
- ended = true;
720
- callStream?.end();
632
+ if (ended) {
633
+ return;
634
+ }
635
+ ended = true;
636
+ writerError = err;
637
+ abortClientStreamCall(callStream, err);
638
+
639
+ // Runtimes without cancel()/destroy() cannot abort the call, so settle locally
640
+ // instead of leaving the caller with a silently successful stream.
641
+ if (!settled) {
642
+ settled = true;
643
+ cleanup();
644
+ rejectResult?.(err);
721
645
  }
722
646
  }
723
647
  };
@@ -736,6 +660,9 @@ export class GrpcMicroserviceTransport {
736
660
  const duplexStream = method.call(runtime.client, metadata);
737
661
  let writerEnded = false;
738
662
  let cleanupAbortListener;
663
+ const localFailure = {
664
+ error: undefined
665
+ };
739
666
  if (signal) {
740
667
  if (signal.aborted) {
741
668
  duplexStream.cancel?.();
@@ -753,7 +680,11 @@ export class GrpcMicroserviceTransport {
753
680
  cleanupAbortListener = () => signal.removeEventListener('abort', onAbort);
754
681
  }
755
682
  }
756
- const reader = grpcReadableToAsyncIterable(duplexStream, signal, cleanupAbortListener);
683
+ const reader = grpcReadableToAsyncIterable(duplexStream, {
684
+ externalAbortCleanup: cleanupAbortListener,
685
+ localFailure,
686
+ signal
687
+ });
757
688
  const writer = {
758
689
  write(data) {
759
690
  if (!writerEnded) {
@@ -767,11 +698,14 @@ export class GrpcMicroserviceTransport {
767
698
  }
768
699
  },
769
700
  error(err) {
770
- void err;
771
- if (!writerEnded) {
772
- writerEnded = true;
773
- duplexStream.end();
701
+ if (writerEnded) {
702
+ return;
774
703
  }
704
+ writerEnded = true;
705
+ // Recorded before cancelation so the reader reports the caller's cause rather than
706
+ // the CANCELLED status the aborted call raises.
707
+ localFailure.error = err;
708
+ abortDuplexStreamCall(duplexStream, err);
775
709
  }
776
710
  };
777
711
  return {
@@ -963,117 +897,183 @@ export class GrpcMicroserviceTransport {
963
897
  logTransportEventHandlerFailure(this.logger, 'GrpcMicroserviceTransport', error);
964
898
  }
965
899
  }
966
- function grpcReadableToAsyncIterable(stream, signal, externalAbortCleanup) {
967
- return {
968
- [Symbol.asyncIterator]() {
969
- const buffer = [];
970
- let done = false;
971
- let error;
972
- let waiting;
973
- let removeAbortListener;
974
- const cleanupAbortListeners = () => {
975
- removeAbortListener?.();
976
- removeAbortListener = undefined;
977
- externalAbortCleanup?.();
978
- };
979
- const finish = () => {
980
- done = true;
981
- cleanupAbortListeners();
982
- };
983
- stream.on('data', data => {
984
- if (waiting) {
985
- const w = waiting;
986
- waiting = undefined;
987
- w.resolve({
988
- value: data,
989
- done: false
990
- });
991
- } else {
992
- buffer.push(data);
900
+ function grpcReadableToAsyncIterable(stream, options = {}) {
901
+ const {
902
+ signal
903
+ } = options;
904
+ const abortErrorMessage = options.abortErrorMessage ?? 'gRPC stream aborted.';
905
+ const buffer = [];
906
+ let cleanupExternalAbortListener = options.externalAbortCleanup;
907
+ let done = false;
908
+ let error;
909
+ let waiting;
910
+ let removeAbortListener;
911
+ const cleanupAbortListeners = () => {
912
+ const cleanupLocal = removeAbortListener;
913
+ const cleanupExternal = cleanupExternalAbortListener;
914
+ removeAbortListener = undefined;
915
+ cleanupExternalAbortListener = undefined;
916
+ cleanupLocal?.();
917
+ cleanupExternal?.();
918
+ };
919
+ const finish = () => {
920
+ if (done) {
921
+ return false;
922
+ }
923
+ done = true;
924
+ cleanupAbortListeners();
925
+ return true;
926
+ };
927
+ if (signal) {
928
+ if (signal.aborted) {
929
+ error = new Error(abortErrorMessage);
930
+ finish();
931
+ stream.cancel?.();
932
+ } else {
933
+ const onAbort = () => {
934
+ const abortError = new Error(abortErrorMessage);
935
+ if (!finish()) {
936
+ return;
993
937
  }
994
- });
995
- stream.on('end', () => {
996
- finish();
938
+ error = abortError;
939
+ stream.cancel?.();
997
940
  if (waiting) {
998
- const w = waiting;
941
+ const current = waiting;
999
942
  waiting = undefined;
1000
- w.resolve({
1001
- value: undefined,
1002
- done: true
1003
- });
943
+ current.reject(abortError);
1004
944
  }
945
+ };
946
+ signal.addEventListener('abort', onAbort, {
947
+ once: true
1005
948
  });
1006
- stream.on('error', err => {
1007
- finish();
1008
- if (signal?.aborted) {
1009
- error = new Error('gRPC stream aborted.');
1010
- } else {
1011
- error = err instanceof Error ? err : new Error('gRPC stream error.');
1012
- }
1013
- if (waiting) {
1014
- const w = waiting;
1015
- waiting = undefined;
1016
- w.reject(error);
1017
- }
949
+ removeAbortListener = () => signal.removeEventListener('abort', onAbort);
950
+ }
951
+ }
952
+ stream.on('data', data => {
953
+ if (done) {
954
+ return;
955
+ }
956
+ if (waiting) {
957
+ const current = waiting;
958
+ waiting = undefined;
959
+ current.resolve({
960
+ value: data,
961
+ done: false
1018
962
  });
1019
- if (signal) {
1020
- if (signal.aborted) {
1021
- finish();
1022
- error = new Error('gRPC stream aborted.');
1023
- stream.cancel?.();
1024
- } else {
1025
- const onAbort = () => {
1026
- finish();
1027
- error = new Error('gRPC stream aborted.');
1028
- stream.cancel?.();
1029
- if (waiting) {
1030
- const w = waiting;
1031
- waiting = undefined;
1032
- w.reject(error);
1033
- }
1034
- };
1035
- signal.addEventListener('abort', onAbort, {
1036
- once: true
1037
- });
1038
- removeAbortListener = () => signal.removeEventListener('abort', onAbort);
1039
- }
963
+ } else {
964
+ buffer.push(data);
965
+ }
966
+ });
967
+ stream.on('end', () => {
968
+ if (!finish()) {
969
+ return;
970
+ }
971
+ if (waiting) {
972
+ const current = waiting;
973
+ waiting = undefined;
974
+ current.resolve({
975
+ value: undefined,
976
+ done: true
977
+ });
978
+ }
979
+ });
980
+ stream.on('error', err => {
981
+ const streamError = options.localFailure?.error ?? (signal?.aborted ? new Error(abortErrorMessage) : err);
982
+ if (!finish()) {
983
+ return;
984
+ }
985
+ error = streamError;
986
+ if (waiting) {
987
+ const current = waiting;
988
+ waiting = undefined;
989
+ current.reject(streamError);
990
+ }
991
+ });
992
+ const iterator = {
993
+ next() {
994
+ if (buffer.length > 0) {
995
+ return Promise.resolve({
996
+ value: buffer.shift(),
997
+ done: false
998
+ });
1040
999
  }
1041
- return {
1042
- next() {
1043
- if (buffer.length > 0) {
1044
- return Promise.resolve({
1045
- value: buffer.shift(),
1046
- done: false
1047
- });
1048
- }
1049
- if (error) {
1050
- return Promise.reject(error);
1051
- }
1052
- if (done) {
1053
- return Promise.resolve({
1054
- value: undefined,
1055
- done: true
1056
- });
1057
- }
1058
- return new Promise((resolve, reject) => {
1059
- waiting = {
1060
- resolve,
1061
- reject
1062
- };
1063
- });
1064
- },
1065
- return() {
1066
- finish();
1067
- stream.cancel?.();
1068
- return Promise.resolve({
1069
- value: undefined,
1070
- done: true
1071
- });
1072
- }
1073
- };
1000
+ if (error) {
1001
+ return Promise.reject(error);
1002
+ }
1003
+ if (done) {
1004
+ return Promise.resolve({
1005
+ value: undefined,
1006
+ done: true
1007
+ });
1008
+ }
1009
+ return new Promise((resolve, reject) => {
1010
+ waiting = {
1011
+ resolve,
1012
+ reject
1013
+ };
1014
+ });
1015
+ },
1016
+ return() {
1017
+ const shouldCancel = finish();
1018
+ buffer.length = 0;
1019
+ if (waiting) {
1020
+ const current = waiting;
1021
+ waiting = undefined;
1022
+ current.resolve({
1023
+ value: undefined,
1024
+ done: true
1025
+ });
1026
+ }
1027
+ if (shouldCancel) {
1028
+ stream.cancel?.();
1029
+ }
1030
+ return Promise.resolve({
1031
+ value: undefined,
1032
+ done: true
1033
+ });
1034
+ }
1035
+ };
1036
+ return {
1037
+ [Symbol.asyncIterator]() {
1038
+ return iterator;
1074
1039
  }
1075
1040
  };
1076
1041
  }
1042
+
1043
+ /**
1044
+ * Aborts an outbound client-streaming call so the peer observes a failure instead of a clean EOF.
1045
+ *
1046
+ * `destroy(err)` is preferred because it carries the cause; `cancel()` is the grpc-js fallback.
1047
+ */
1048
+ function abortClientStreamCall(stream, err) {
1049
+ if (!stream) {
1050
+ return;
1051
+ }
1052
+ if (stream.destroy) {
1053
+ stream.destroy(err);
1054
+ return;
1055
+ }
1056
+ if (stream.cancel) {
1057
+ stream.cancel();
1058
+ return;
1059
+ }
1060
+ stream.end();
1061
+ }
1062
+
1063
+ /**
1064
+ * Aborts an outbound bidirectional-streaming call so the peer observes a failure instead of a clean EOF.
1065
+ */
1066
+ function abortDuplexStreamCall(stream, err) {
1067
+ if (stream.destroy) {
1068
+ stream.destroy(err);
1069
+ return;
1070
+ }
1071
+ if (stream.cancel) {
1072
+ stream.cancel();
1073
+ return;
1074
+ }
1075
+ stream.end();
1076
+ }
1077
1077
  function parseGrpcPattern(pattern) {
1078
1078
  const segments = pattern.split('.');
1079
1079
  if (segments.length !== 2 || segments[0]?.length === 0 || segments[1]?.length === 0) {
@@ -1,4 +1,4 @@
1
- import type { MicroserviceTransport, TransportHandler } from '../types.js';
1
+ import type { MicroserviceTransport, MicroserviceTransportLogger, TransportHandler } from '../types.js';
2
2
  interface KafkaConsumerLike {
3
3
  subscribe(topic: string, handler: (message: string) => Promise<void> | void): Promise<void>;
4
4
  unsubscribe(topic: string): Promise<void>;
@@ -28,11 +28,19 @@ export declare class KafkaMicroserviceTransport implements MicroserviceTransport
28
28
  private handler;
29
29
  private listening;
30
30
  private listenPromise;
31
+ private logger;
31
32
  private readonly eventTopic;
32
33
  private readonly messageTopic;
33
34
  private readonly pending;
34
35
  private readonly requestTimeoutMs;
35
36
  private readonly responseTopic;
37
+ private logEventHandlerFailure;
38
+ /**
39
+ * Registers the runtime logger that receives inbound event handler failures.
40
+ *
41
+ * @param logger Logger used to report event handler failures.
42
+ */
43
+ setLogger(logger: MicroserviceTransportLogger): void;
36
44
  /**
37
45
  * Creates a Kafka transport with explicit producer and consumer collaborators.
38
46
  *
@@ -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;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;IAwDtD;;;;;;;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;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,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGxG,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;IAmC1D,OAAO,CAAC,QAAQ,CAAC,OAAO;IAlCpC,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,MAAM,CAA0C;IACxD,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,OAAO,CAAC,sBAAsB;IAQ9B;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,2BAA2B,GAAG,IAAI;IAIpD;;;;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;YAuBlB,oBAAoB;YA2CpB,qBAAqB;IAqBnC,OAAO,CAAC,YAAY;CAqCrB"}