@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.
- package/README.ko.md +50 -4
- package/README.md +50 -4
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/module.js +1 -1
- package/dist/service.d.ts +3 -2
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +7 -4
- package/dist/status.d.ts +2 -0
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +5 -3
- package/dist/transports/grpc-transport.d.ts +4 -0
- package/dist/transports/grpc-transport.d.ts.map +1 -1
- package/dist/transports/grpc-transport.js +226 -260
- package/dist/transports/kafka-transport.d.ts +1 -0
- package/dist/transports/kafka-transport.d.ts.map +1 -1
- package/dist/transports/kafka-transport.js +56 -36
- package/dist/transports/mqtt-transport.d.ts +4 -0
- package/dist/transports/mqtt-transport.d.ts.map +1 -1
- package/dist/transports/mqtt-transport.js +91 -32
- package/dist/transports/nats-transport.d.ts +1 -0
- package/dist/transports/nats-transport.d.ts.map +1 -1
- package/dist/transports/nats-transport.js +53 -23
- package/dist/transports/rabbitmq-transport.d.ts +1 -0
- package/dist/transports/rabbitmq-transport.d.ts.map +1 -1
- package/dist/transports/rabbitmq-transport.js +54 -29
- package/dist/transports/redis-streams-transport.d.ts.map +1 -1
- package/dist/transports/redis-streams-transport.js +22 -2
- package/dist/transports/tcp-transport.d.ts +8 -2
- package/dist/transports/tcp-transport.d.ts.map +1 -1
- package/dist/transports/tcp-transport.js +4 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- 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
|
|
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
|
-
|
|
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.
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
await this.listenPromise;
|
|
241
|
+
if (this.closePromise) {
|
|
242
|
+
await this.closePromise;
|
|
243
|
+
return;
|
|
232
244
|
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
245
|
+
this.closing = true;
|
|
246
|
+
this.closePromise = (async () => {
|
|
247
|
+
let closeError;
|
|
248
|
+
if (this.listenPromise) {
|
|
249
|
+
await this.listenPromise;
|
|
236
250
|
}
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
}
|
|
241
|
-
|
|
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
|
-
|
|
245
|
-
|
|
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
|
-
|
|
260
|
-
|
|
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
|
|
509
|
-
return {
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
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
|
-
|
|
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
|
-
|
|
662
|
-
ended
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
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,
|
|
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,
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
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
|
-
|
|
965
|
-
finish();
|
|
908
|
+
error = abortError;
|
|
909
|
+
stream.cancel?.();
|
|
966
910
|
if (waiting) {
|
|
967
|
-
const
|
|
911
|
+
const current = waiting;
|
|
968
912
|
waiting = undefined;
|
|
969
|
-
|
|
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
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
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
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
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
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
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
|
}
|
|
@@ -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;
|
|
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"}
|