@fluojs/microservices 1.0.0-beta.4 → 1.0.0-beta.6
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 +3 -2
- package/README.md +4 -3
- package/dist/module.js +1 -1
- package/dist/transports/grpc-transport.d.ts.map +1 -1
- package/dist/transports/grpc-transport.js +42 -12
- package/dist/transports/tcp-transport.d.ts +5 -0
- package/dist/transports/tcp-transport.d.ts.map +1 -1
- package/dist/transports/tcp-transport.js +39 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -4
package/README.ko.md
CHANGED
|
@@ -91,6 +91,8 @@ await microservice.listen();
|
|
|
91
91
|
- RabbitMQ 요청-응답은 기본적으로 인스턴스별 response queue를 사용합니다. 공유 reply topology를 의도적으로 운영할 때만 `responseQueue`를 명시적으로 지정하세요.
|
|
92
92
|
- caller-owned broker collaborator는 shutdown 중에도 caller-owned로 유지됩니다. NATS, Kafka, RabbitMQ transport는 subscription/consumer를 분리하고 in-flight 요청을 reject하지만, 애플리케이션이 넘긴 client, producer, consumer, publisher, 외부 connection 객체를 close/disconnect하지 않습니다.
|
|
93
93
|
- `AbortSignal`을 받는 요청-응답 transport는 이미 abort된 send를 publish 전에 reject하고, 나중에 abort된 in-flight send도 reject합니다. `close()`가 시작된 뒤에는 shutdown 중인 lifecycle에 새 작업을 publish하지 않고 `send()`/`emit()`을 reject합니다.
|
|
94
|
+
- TCP는 테스트와 ephemeral listener를 위해 `port: 0`을 허용하고, listen 중에는 OS가 할당한 포트로 outbound `send()`/`emit()`을 라우팅합니다.
|
|
95
|
+
- gRPC shutdown은 가능하면 server-level `tryShutdown()`을 사용하고, graceful shutdown을 제공하지 않는 런타임에서만 `forceShutdown()`으로 fallback합니다. Active unary/streaming call의 AbortSignal 취소는 call-level `cancel()` 또는 stream end 경로를 사용하며, stream이 end/error/early return으로 끝나면 abort listener를 제거합니다.
|
|
94
96
|
- transport logger를 통해 이벤트 핸들러 실패를 기록하는 경로(`RedisPubSubMicroserviceTransport`, `RedisStreamsMicroserviceTransport`, `NatsMicroserviceTransport`, `MqttMicroserviceTransport`, gRPC event emit)는 끝까지 logger-driven observability를 유지합니다. transport logger를 주입하지 않으면 fluo는 해당 실패를 raw `console.error` fallback으로 복제하지 않습니다.
|
|
95
97
|
|
|
96
98
|
## 공통 패턴
|
|
@@ -188,5 +190,4 @@ Payload는 dispatch 전에 clone되고, 동시 `listen()` 호출은 dedupe되며
|
|
|
188
190
|
- `packages/microservices/src/public-api.test.ts`: 모듈 등록 override와 `createMicroservicesProviders(...)`를 포함한 루트 배럴 export 계약을 검증합니다.
|
|
189
191
|
- `packages/microservices/src/public-surface.test.ts`: 문서화된 공개 surface를 검증합니다.
|
|
190
192
|
- `packages/microservices/src/public-subpaths.test.ts`: 문서화된 트랜스포트 서브패스 export map 계약을 검증합니다.
|
|
191
|
-
-
|
|
192
|
-
- `examples/microservices-kafka`: Kafka 기반 분산 아키텍처 예제입니다.
|
|
193
|
+
- 실행 가능한 스타터 예제는 지원되는 TCP, Redis Streams, NATS, Kafka, RabbitMQ, MQTT, gRPC 트랜스포트 변형에 대해 `fluo new --shape microservice --transport <transport> --runtime node --platform none`로 생성합니다.
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
<p><strong><kbd>English</kbd></strong> <a href="./README.ko.md"><kbd>한국어</kbd></a></p>
|
|
4
4
|
|
|
5
|
-
Transport-driven microservices for fluo. Build scalable, message-driven architectures with deep DI integration and support for multiple transport protocols including TCP, Redis, NATS, Kafka, RabbitMQ, and gRPC.
|
|
5
|
+
Transport-driven microservices for fluo. Build scalable, message-driven architectures with deep DI integration and support for multiple transport protocols including TCP, Redis, NATS, Kafka, RabbitMQ, MQTT, and gRPC.
|
|
6
6
|
|
|
7
7
|
## Table of Contents
|
|
8
8
|
|
|
@@ -88,6 +88,8 @@ Microservice handlers fully support fluo's DI scopes. Request-scoped providers a
|
|
|
88
88
|
- RabbitMQ request/reply uses an instance-scoped response queue by default. Pass `responseQueue` explicitly only when you intentionally own and coordinate a shared reply topology.
|
|
89
89
|
- Caller-owned broker collaborators stay caller-owned during shutdown. NATS, Kafka, and RabbitMQ transports detach their subscriptions/consumers and reject in-flight requests, but they do not close or disconnect the client, producer, consumer, publisher, or external connection objects supplied by the application.
|
|
90
90
|
- Request-response transports that accept `AbortSignal` reject already-aborted sends before publishing and reject in-flight sends on later abort. Once `close()` starts, transports reject new `send()`/`emit()` calls instead of publishing work into a shutting-down lifecycle.
|
|
91
|
+
- TCP accepts `port: 0` for tests and ephemeral listeners, then routes outbound `send()`/`emit()` calls through the OS-assigned port while the transport is listening.
|
|
92
|
+
- gRPC shutdown uses server-level `tryShutdown()` when available and falls back to `forceShutdown()` only for runtimes without graceful shutdown support. AbortSignal cancellation for active unary or streaming calls uses the call-level `cancel()`/stream end path and removes abort listeners when streams end, error, or are returned early.
|
|
91
93
|
- Event-handler failures that flow through the transport logger (`RedisPubSubMicroserviceTransport`, `RedisStreamsMicroserviceTransport`, `NatsMicroserviceTransport`, `MqttMicroserviceTransport`, and gRPC event emits) remain logger-driven. If you do not inject a transport logger, fluo does not mirror those failures through a raw `console.error` fallback.
|
|
92
94
|
|
|
93
95
|
## Common Patterns
|
|
@@ -185,5 +187,4 @@ Payloads are cloned before dispatch, concurrent `listen()` calls are deduped, re
|
|
|
185
187
|
- `packages/microservices/src/public-api.test.ts`: Root-barrel export coverage, including module registration overrides and `createMicroservicesProviders(...)`.
|
|
186
188
|
- `packages/microservices/src/public-surface.test.ts`: Root-barrel snapshot coverage for the documented public surface.
|
|
187
189
|
- `packages/microservices/src/public-subpaths.test.ts`: Export-map coverage for documented transport subpaths.
|
|
188
|
-
-
|
|
189
|
-
- `examples/microservices-kafka`: Distributed Kafka-based architecture example.
|
|
190
|
+
- Runnable starter examples are generated with `fluo new --shape microservice --transport <transport> --runtime node --platform none` for the supported TCP, Redis Streams, NATS, Kafka, RabbitMQ, MQTT, and gRPC transport variants.
|
package/dist/module.js
CHANGED
|
@@ -43,7 +43,7 @@ export class MicroservicesModule {
|
|
|
43
43
|
class MicroservicesModuleDefinition {}
|
|
44
44
|
const additionalExports = options.module?.additionalExports ?? [];
|
|
45
45
|
const additionalProviders = options.module?.providers ?? [];
|
|
46
|
-
const global = options.module?.global ?? true;
|
|
46
|
+
const global = options.global ?? options.module?.global ?? true;
|
|
47
47
|
return defineModule(MicroservicesModuleDefinition, {
|
|
48
48
|
exports: [MicroserviceLifecycleService, MICROSERVICE, ...additionalExports],
|
|
49
49
|
global,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grpc-transport.d.ts","sourceRoot":"","sources":["../../src/transports/grpc-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAGpN,KAAK,aAAa,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE7D,UAAU,gBAAgB;IACxB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAED,UAAU,gCAAgC;IACxC,cAAc,IAAI,OAAO,CAAC;CAC3B;AAED,UAAU,cAAc;IACtB,UAAU,CAAC,iBAAiB,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACtF,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC9G,aAAa,CAAC,IAAI,IAAI,CAAC;IACvB,KAAK,IAAI,IAAI,CAAC;IACd,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;CACvD;AAQD,UAAU,cAAc;IACtB,KAAK,CAAC,IAAI,IAAI,CAAC;IACf,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;CAC/B;
|
|
1
|
+
{"version":3,"file":"grpc-transport.d.ts","sourceRoot":"","sources":["../../src/transports/grpc-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -513,6 +513,15 @@ export class GrpcMicroserviceTransport {
|
|
|
513
513
|
let error;
|
|
514
514
|
let waiting;
|
|
515
515
|
let stream;
|
|
516
|
+
let removeAbortListener;
|
|
517
|
+
const cleanupAbortListener = () => {
|
|
518
|
+
removeAbortListener?.();
|
|
519
|
+
removeAbortListener = undefined;
|
|
520
|
+
};
|
|
521
|
+
const finish = () => {
|
|
522
|
+
done = true;
|
|
523
|
+
cleanupAbortListener();
|
|
524
|
+
};
|
|
516
525
|
const startStream = () => {
|
|
517
526
|
if (stream) {
|
|
518
527
|
return;
|
|
@@ -531,7 +540,7 @@ export class GrpcMicroserviceTransport {
|
|
|
531
540
|
}
|
|
532
541
|
});
|
|
533
542
|
stream.on('end', () => {
|
|
534
|
-
|
|
543
|
+
finish();
|
|
535
544
|
if (waiting) {
|
|
536
545
|
const w = waiting;
|
|
537
546
|
waiting = undefined;
|
|
@@ -542,7 +551,7 @@ export class GrpcMicroserviceTransport {
|
|
|
542
551
|
}
|
|
543
552
|
});
|
|
544
553
|
stream.on('error', err => {
|
|
545
|
-
|
|
554
|
+
finish();
|
|
546
555
|
if (signal?.aborted) {
|
|
547
556
|
error = new Error('gRPC server stream aborted.');
|
|
548
557
|
} else {
|
|
@@ -556,13 +565,13 @@ export class GrpcMicroserviceTransport {
|
|
|
556
565
|
});
|
|
557
566
|
if (signal) {
|
|
558
567
|
if (signal.aborted) {
|
|
559
|
-
|
|
568
|
+
finish();
|
|
560
569
|
error = new Error('gRPC server stream aborted.');
|
|
561
570
|
stream.cancel?.();
|
|
562
571
|
return;
|
|
563
572
|
}
|
|
564
573
|
const onAbort = () => {
|
|
565
|
-
|
|
574
|
+
finish();
|
|
566
575
|
error = new Error('gRPC server stream aborted.');
|
|
567
576
|
stream?.cancel?.();
|
|
568
577
|
if (waiting) {
|
|
@@ -574,6 +583,7 @@ export class GrpcMicroserviceTransport {
|
|
|
574
583
|
signal.addEventListener('abort', onAbort, {
|
|
575
584
|
once: true
|
|
576
585
|
});
|
|
586
|
+
removeAbortListener = () => signal.removeEventListener('abort', onAbort);
|
|
577
587
|
}
|
|
578
588
|
};
|
|
579
589
|
void transport;
|
|
@@ -603,7 +613,7 @@ export class GrpcMicroserviceTransport {
|
|
|
603
613
|
});
|
|
604
614
|
},
|
|
605
615
|
return() {
|
|
606
|
-
|
|
616
|
+
finish();
|
|
607
617
|
stream?.cancel?.();
|
|
608
618
|
return Promise.resolve({
|
|
609
619
|
value: undefined,
|
|
@@ -623,12 +633,18 @@ export class GrpcMicroserviceTransport {
|
|
|
623
633
|
const metadata = this.createMetadata(grpcKinds.message);
|
|
624
634
|
let callStream;
|
|
625
635
|
let ended = false;
|
|
636
|
+
let cleanupAbortListener;
|
|
637
|
+
const cleanup = () => {
|
|
638
|
+
cleanupAbortListener?.();
|
|
639
|
+
cleanupAbortListener = undefined;
|
|
640
|
+
};
|
|
626
641
|
const result = new Promise((resolve, reject) => {
|
|
627
642
|
if (signal?.aborted) {
|
|
628
643
|
reject(new Error('gRPC client stream aborted before dispatch.'));
|
|
629
644
|
return;
|
|
630
645
|
}
|
|
631
646
|
callStream = method.call(runtime.client, metadata, (error, response) => {
|
|
647
|
+
cleanup();
|
|
632
648
|
if (error) {
|
|
633
649
|
if (signal?.aborted) {
|
|
634
650
|
reject(new Error('gRPC client stream aborted.'));
|
|
@@ -651,6 +667,7 @@ export class GrpcMicroserviceTransport {
|
|
|
651
667
|
signal.addEventListener('abort', onAbort, {
|
|
652
668
|
once: true
|
|
653
669
|
});
|
|
670
|
+
cleanupAbortListener = () => signal.removeEventListener('abort', onAbort);
|
|
654
671
|
}
|
|
655
672
|
});
|
|
656
673
|
const writer = {
|
|
@@ -687,6 +704,7 @@ export class GrpcMicroserviceTransport {
|
|
|
687
704
|
const metadata = this.createMetadata(grpcKinds.message);
|
|
688
705
|
const duplexStream = method.call(runtime.client, metadata);
|
|
689
706
|
let writerEnded = false;
|
|
707
|
+
let cleanupAbortListener;
|
|
690
708
|
if (signal) {
|
|
691
709
|
if (signal.aborted) {
|
|
692
710
|
duplexStream.cancel?.();
|
|
@@ -701,9 +719,10 @@ export class GrpcMicroserviceTransport {
|
|
|
701
719
|
signal.addEventListener('abort', onAbort, {
|
|
702
720
|
once: true
|
|
703
721
|
});
|
|
722
|
+
cleanupAbortListener = () => signal.removeEventListener('abort', onAbort);
|
|
704
723
|
}
|
|
705
724
|
}
|
|
706
|
-
const reader = grpcReadableToAsyncIterable(duplexStream, signal);
|
|
725
|
+
const reader = grpcReadableToAsyncIterable(duplexStream, signal, cleanupAbortListener);
|
|
707
726
|
const writer = {
|
|
708
727
|
write(data) {
|
|
709
728
|
if (!writerEnded) {
|
|
@@ -913,13 +932,23 @@ export class GrpcMicroserviceTransport {
|
|
|
913
932
|
logTransportEventHandlerFailure(this.logger, 'GrpcMicroserviceTransport', error);
|
|
914
933
|
}
|
|
915
934
|
}
|
|
916
|
-
function grpcReadableToAsyncIterable(stream, signal) {
|
|
935
|
+
function grpcReadableToAsyncIterable(stream, signal, externalAbortCleanup) {
|
|
917
936
|
return {
|
|
918
937
|
[Symbol.asyncIterator]() {
|
|
919
938
|
const buffer = [];
|
|
920
939
|
let done = false;
|
|
921
940
|
let error;
|
|
922
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
|
+
};
|
|
923
952
|
stream.on('data', data => {
|
|
924
953
|
if (waiting) {
|
|
925
954
|
const w = waiting;
|
|
@@ -933,7 +962,7 @@ function grpcReadableToAsyncIterable(stream, signal) {
|
|
|
933
962
|
}
|
|
934
963
|
});
|
|
935
964
|
stream.on('end', () => {
|
|
936
|
-
|
|
965
|
+
finish();
|
|
937
966
|
if (waiting) {
|
|
938
967
|
const w = waiting;
|
|
939
968
|
waiting = undefined;
|
|
@@ -944,7 +973,7 @@ function grpcReadableToAsyncIterable(stream, signal) {
|
|
|
944
973
|
}
|
|
945
974
|
});
|
|
946
975
|
stream.on('error', err => {
|
|
947
|
-
|
|
976
|
+
finish();
|
|
948
977
|
if (signal?.aborted) {
|
|
949
978
|
error = new Error('gRPC stream aborted.');
|
|
950
979
|
} else {
|
|
@@ -958,12 +987,12 @@ function grpcReadableToAsyncIterable(stream, signal) {
|
|
|
958
987
|
});
|
|
959
988
|
if (signal) {
|
|
960
989
|
if (signal.aborted) {
|
|
961
|
-
|
|
990
|
+
finish();
|
|
962
991
|
error = new Error('gRPC stream aborted.');
|
|
963
992
|
stream.cancel?.();
|
|
964
993
|
} else {
|
|
965
994
|
const onAbort = () => {
|
|
966
|
-
|
|
995
|
+
finish();
|
|
967
996
|
error = new Error('gRPC stream aborted.');
|
|
968
997
|
stream.cancel?.();
|
|
969
998
|
if (waiting) {
|
|
@@ -975,6 +1004,7 @@ function grpcReadableToAsyncIterable(stream, signal) {
|
|
|
975
1004
|
signal.addEventListener('abort', onAbort, {
|
|
976
1005
|
once: true
|
|
977
1006
|
});
|
|
1007
|
+
removeAbortListener = () => signal.removeEventListener('abort', onAbort);
|
|
978
1008
|
}
|
|
979
1009
|
}
|
|
980
1010
|
return {
|
|
@@ -1002,7 +1032,7 @@ function grpcReadableToAsyncIterable(stream, signal) {
|
|
|
1002
1032
|
});
|
|
1003
1033
|
},
|
|
1004
1034
|
return() {
|
|
1005
|
-
|
|
1035
|
+
finish();
|
|
1006
1036
|
stream.cancel?.();
|
|
1007
1037
|
return Promise.resolve({
|
|
1008
1038
|
value: undefined,
|
|
@@ -13,6 +13,8 @@ interface TcpMicroserviceTransportOptions {
|
|
|
13
13
|
*/
|
|
14
14
|
export declare class TcpMicroserviceTransport implements MicroserviceTransport {
|
|
15
15
|
private readonly options;
|
|
16
|
+
private boundPort;
|
|
17
|
+
private closing;
|
|
16
18
|
private handler;
|
|
17
19
|
private listenPromise;
|
|
18
20
|
private readonly sockets;
|
|
@@ -58,6 +60,9 @@ export declare class TcpMicroserviceTransport implements MicroserviceTransport {
|
|
|
58
60
|
close(): Promise<void>;
|
|
59
61
|
private handleInboundPacket;
|
|
60
62
|
private sendWirePacket;
|
|
63
|
+
private assertAcceptingOutbound;
|
|
64
|
+
private resolveConnectPort;
|
|
65
|
+
private resolveBoundPort;
|
|
61
66
|
private bindSocketParser;
|
|
62
67
|
private writeLine;
|
|
63
68
|
private serializeFrame;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tcp-transport.d.ts","sourceRoot":"","sources":["../../src/transports/tcp-transport.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAmB,MAAM,aAAa,CAAC;AAQ5F,UAAU,+BAA+B;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAID;;;;;GAKG;AACH,qBAAa,wBAAyB,YAAW,qBAAqB;
|
|
1
|
+
{"version":3,"file":"tcp-transport.d.ts","sourceRoot":"","sources":["../../src/transports/tcp-transport.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAmB,MAAM,aAAa,CAAC;AAQ5F,UAAU,+BAA+B;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAID;;;;;GAKG;AACH,qBAAa,wBAAyB,YAAW,qBAAqB;IAoBxD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAnBpC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAIpB;IAEH;;;;OAIG;gBAC0B,OAAO,EAAE,+BAA+B;IAMrE;;;;;OAKG;IACG,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCtD;;;;;;OAMG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D;;;;;;;OAOG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAMrF;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAgCd,mBAAmB;YA8BnB,cAAc;IA0G5B,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,gBAAgB;IAyCxB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,cAAc;CASvB"}
|
|
@@ -8,6 +8,8 @@ const DEFAULT_MAX_FRAME_BYTES = 1_048_576;
|
|
|
8
8
|
* simple first-party microservice setups where both sides can share the same framing contract.
|
|
9
9
|
*/
|
|
10
10
|
export class TcpMicroserviceTransport {
|
|
11
|
+
boundPort;
|
|
12
|
+
closing = false;
|
|
11
13
|
handler;
|
|
12
14
|
listenPromise;
|
|
13
15
|
sockets = new Set();
|
|
@@ -39,6 +41,9 @@ export class TcpMicroserviceTransport {
|
|
|
39
41
|
* @returns A promise that resolves once the TCP server is listening.
|
|
40
42
|
*/
|
|
41
43
|
async listen(handler) {
|
|
44
|
+
if (this.closing) {
|
|
45
|
+
throw new Error('TcpMicroserviceTransport is closing. Wait for close() to complete before listen().');
|
|
46
|
+
}
|
|
42
47
|
this.handler = handler;
|
|
43
48
|
if (this.server.listening) {
|
|
44
49
|
return;
|
|
@@ -51,6 +56,7 @@ export class TcpMicroserviceTransport {
|
|
|
51
56
|
this.server.once('error', reject);
|
|
52
57
|
this.server.listen(this.options.port, this.host, () => {
|
|
53
58
|
this.server.off('error', reject);
|
|
59
|
+
this.boundPort = this.resolveBoundPort();
|
|
54
60
|
resolve();
|
|
55
61
|
});
|
|
56
62
|
});
|
|
@@ -69,6 +75,7 @@ export class TcpMicroserviceTransport {
|
|
|
69
75
|
* @returns A promise that resolves after the event frame is written.
|
|
70
76
|
*/
|
|
71
77
|
async emit(pattern, payload) {
|
|
78
|
+
this.assertAcceptingOutbound('emit');
|
|
72
79
|
await this.sendWirePacket({
|
|
73
80
|
kind: 'event',
|
|
74
81
|
pattern,
|
|
@@ -85,6 +92,7 @@ export class TcpMicroserviceTransport {
|
|
|
85
92
|
* @returns The remote handler response payload.
|
|
86
93
|
*/
|
|
87
94
|
async send(pattern, payload, signal) {
|
|
95
|
+
this.assertAcceptingOutbound('send');
|
|
88
96
|
const requestId = randomRequestId();
|
|
89
97
|
return await this.sendWirePacket({
|
|
90
98
|
kind: 'message',
|
|
@@ -100,6 +108,7 @@ export class TcpMicroserviceTransport {
|
|
|
100
108
|
* @returns A promise that resolves once the server is fully closed.
|
|
101
109
|
*/
|
|
102
110
|
async close() {
|
|
111
|
+
this.closing = true;
|
|
103
112
|
if (this.listenPromise) {
|
|
104
113
|
await this.listenPromise;
|
|
105
114
|
}
|
|
@@ -108,6 +117,7 @@ export class TcpMicroserviceTransport {
|
|
|
108
117
|
}
|
|
109
118
|
this.sockets.clear();
|
|
110
119
|
if (!this.server.listening) {
|
|
120
|
+
this.boundPort = undefined;
|
|
111
121
|
return;
|
|
112
122
|
}
|
|
113
123
|
await new Promise((resolve, reject) => {
|
|
@@ -119,6 +129,7 @@ export class TcpMicroserviceTransport {
|
|
|
119
129
|
resolve();
|
|
120
130
|
});
|
|
121
131
|
});
|
|
132
|
+
this.boundPort = undefined;
|
|
122
133
|
}
|
|
123
134
|
async handleInboundPacket(socket, packet) {
|
|
124
135
|
if (!this.handler) {
|
|
@@ -231,9 +242,36 @@ export class TcpMicroserviceTransport {
|
|
|
231
242
|
});
|
|
232
243
|
}
|
|
233
244
|
socket.once('error', fail);
|
|
234
|
-
|
|
245
|
+
try {
|
|
246
|
+
this.assertAcceptingOutbound(packet.kind === 'event' ? 'emit' : 'send');
|
|
247
|
+
} catch (error) {
|
|
248
|
+
fail(error);
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
socket.connect(this.resolveConnectPort(), this.host);
|
|
235
252
|
});
|
|
236
253
|
}
|
|
254
|
+
assertAcceptingOutbound(operation) {
|
|
255
|
+
if (this.closing) {
|
|
256
|
+
throw new Error(`TcpMicroserviceTransport is closing. Wait for close() to complete before ${operation}().`);
|
|
257
|
+
}
|
|
258
|
+
if (!this.server.listening || typeof this.boundPort !== 'number') {
|
|
259
|
+
throw new Error(`TcpMicroserviceTransport is not listening. Call listen() before ${operation}().`);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
resolveConnectPort() {
|
|
263
|
+
if (typeof this.boundPort === 'number') {
|
|
264
|
+
return this.boundPort;
|
|
265
|
+
}
|
|
266
|
+
return this.options.port;
|
|
267
|
+
}
|
|
268
|
+
resolveBoundPort() {
|
|
269
|
+
const address = this.server.address();
|
|
270
|
+
if (address && typeof address === 'object') {
|
|
271
|
+
return address.port;
|
|
272
|
+
}
|
|
273
|
+
return this.options.port;
|
|
274
|
+
}
|
|
237
275
|
bindSocketParser(socket, onPacket) {
|
|
238
276
|
let buffer = '';
|
|
239
277
|
let bufferBytes = 0;
|
package/dist/types.d.ts
CHANGED
|
@@ -82,6 +82,8 @@ export interface MicroserviceModuleRegistrationOptions {
|
|
|
82
82
|
}
|
|
83
83
|
/** Module options accepted by {@link MicroservicesModule.forRoot}. */
|
|
84
84
|
export interface MicroserviceModuleOptions {
|
|
85
|
+
/** Whether microservice providers should be visible globally. Defaults to `true`. */
|
|
86
|
+
global?: boolean;
|
|
85
87
|
/** Optional module-definition overrides that provide a module-first alternative to raw provider-array composition. */
|
|
86
88
|
module?: MicroserviceModuleRegistrationOptions;
|
|
87
89
|
transport: MicroserviceTransport;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,4EAA4E;AAC5E,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AACtC,uEAAuE;AACvE,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,eAAe,GAAG,OAAO,GAAG,SAAS,GAAG,eAAe,CAAC;AAElG,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;CACd;AAED,iEAAiE;AACjE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,0EAA0E;AAC1E,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE7E,iFAAiF;AACjF,MAAM,WAAW,2BAA4B,SAAQ,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC;CAAG;AAExF,kFAAkF;AAClF,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,GAAG,IAAI,IAAI,CAAC;IACZ,KAAK,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,CAAC;CACzB;AAED,qDAAqD;AACrD,MAAM,MAAM,mBAAmB,GAAG,CAChC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,kBAAkB,KACvB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,mEAAmE;AACnE,MAAM,MAAM,4BAA4B,GAAG,CACzC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,kBAAkB,KACvB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,qDAAqD;AACrD,MAAM,MAAM,mBAAmB,GAAG,CAChC,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,KAC3B,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,mEAAmE;AACnE,MAAM,MAAM,4BAA4B,GAAG,CACzC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,KAC3B,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,4DAA4D;AAC5D,MAAM,MAAM,iBAAiB,GAAG,CAC9B,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,EAC9B,MAAM,EAAE,kBAAkB,KACvB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,0EAA0E;AAC1E,MAAM,MAAM,0BAA0B,GAAG,CACvC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,EAC9B,MAAM,EAAE,kBAAkB,KACvB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,8FAA8F;AAC9F,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG;QAAE,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QAAC,MAAM,EAAE,kBAAkB,CAAA;KAAE,CAAC;IACnH,YAAY,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG;QAAE,MAAM,EAAE,kBAAkB,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC;IAC/G,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,mBAAmB,CAAC,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI,CAAC;IAChE,qBAAqB,CAAC,CAAC,OAAO,EAAE,4BAA4B,GAAG,IAAI,CAAC;IACpE,qBAAqB,CAAC,CAAC,OAAO,EAAE,4BAA4B,GAAG,IAAI,CAAC;IACpE,SAAS,CAAC,CAAC,MAAM,EAAE,2BAA2B,GAAG,IAAI,CAAC;IACtD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChF,YAAY,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;CAChG;AAED,mGAAmG;AACnG,MAAM,WAAW,qCAAqC;IACpD,8FAA8F;IAC9F,iBAAiB,CAAC,EAAE,KAAK,EAAE,CAAC;IAC5B,+FAA+F;IAC/F,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oFAAoF;IACpF,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACxB;AAED,sEAAsE;AACtE,MAAM,WAAW,yBAAyB;IACxC,sHAAsH;IACtH,MAAM,CAAC,EAAE,qCAAqC,CAAC;IAC/C,SAAS,EAAE,qBAAqB,CAAC;CAClC;AAED,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG;QAAE,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QAAC,MAAM,EAAE,kBAAkB,CAAA;KAAE,CAAC;IACnH,YAAY,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG;QAAE,MAAM,EAAE,kBAAkB,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC;IAC/G,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChF,YAAY,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;CAChG"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"grpc",
|
|
14
14
|
"mqtt"
|
|
15
15
|
],
|
|
16
|
-
"version": "1.0.0-beta.
|
|
16
|
+
"version": "1.0.0-beta.6",
|
|
17
17
|
"private": false,
|
|
18
18
|
"license": "MIT",
|
|
19
19
|
"repository": {
|
|
@@ -68,9 +68,9 @@
|
|
|
68
68
|
"dist"
|
|
69
69
|
],
|
|
70
70
|
"dependencies": {
|
|
71
|
-
"@fluojs/core": "^1.0.0-beta.
|
|
72
|
-
"@fluojs/di": "^1.0.0-beta.
|
|
73
|
-
"@fluojs/runtime": "^1.0.0-beta.
|
|
71
|
+
"@fluojs/core": "^1.0.0-beta.5",
|
|
72
|
+
"@fluojs/di": "^1.0.0-beta.7",
|
|
73
|
+
"@fluojs/runtime": "^1.0.0-beta.12"
|
|
74
74
|
},
|
|
75
75
|
"peerDependencies": {
|
|
76
76
|
"@grpc/grpc-js": "^1.0.0",
|