@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.
- package/README.ko.md +64 -6
- package/README.md +64 -6
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +2 -1
- package/dist/service.d.ts +15 -5
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +96 -38
- package/dist/status.d.ts +3 -0
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +10 -2
- package/dist/transports/grpc-transport.d.ts +4 -2
- package/dist/transports/grpc-transport.d.ts.map +1 -1
- package/dist/transports/grpc-transport.js +241 -241
- package/dist/transports/kafka-transport.d.ts +9 -1
- package/dist/transports/kafka-transport.d.ts.map +1 -1
- package/dist/transports/kafka-transport.js +41 -21
- package/dist/transports/mqtt-transport.d.ts +1 -0
- package/dist/transports/mqtt-transport.d.ts.map +1 -1
- package/dist/transports/mqtt-transport.js +22 -1
- package/dist/transports/nats-transport.d.ts +3 -0
- package/dist/transports/nats-transport.d.ts.map +1 -1
- package/dist/transports/nats-transport.js +83 -30
- package/dist/transports/rabbitmq-transport.d.ts +10 -1
- package/dist/transports/rabbitmq-transport.d.ts.map +1 -1
- package/dist/transports/rabbitmq-transport.js +80 -30
- package/dist/transports/redis-streams-transport.d.ts +18 -0
- package/dist/transports/redis-streams-transport.d.ts.map +1 -1
- package/dist/transports/redis-streams-transport.js +46 -3
- package/dist/transports/redis-transport.d.ts +1 -1
- package/dist/transports/redis-transport.d.ts.map +1 -1
- package/dist/transports/redis-transport.js +32 -16
- package/dist/transports/tcp-transport.d.ts +1 -0
- package/dist/transports/tcp-transport.d.ts.map +1 -1
- package/dist/transports/tcp-transport.js +45 -44
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +11 -7
package/dist/service.js
CHANGED
|
@@ -4,7 +4,7 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
|
4
4
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
5
5
|
function _setFunctionName(e, t, n) { "symbol" == typeof t && (t = (t = t.description) ? "[" + t + "]" : ""); try { Object.defineProperty(e, "name", { configurable: !0, value: n ? n + " " + t : t }); } catch (e) {} return e; }
|
|
6
6
|
function _checkInRHS(e) { if (Object(e) !== e) throw TypeError("right-hand side of 'in' should be an object, got " + (null !== e ? typeof e : "null")); return e; }
|
|
7
|
-
import { Inject } from '@fluojs/core';
|
|
7
|
+
import { Inject, InvariantError } from '@fluojs/core';
|
|
8
8
|
import { cloneWithFallback, getClassDiMetadata } from '@fluojs/core/internal';
|
|
9
9
|
import { APPLICATION_LOGGER, COMPILED_MODULES, RUNTIME_CONTAINER } from '@fluojs/runtime/internal';
|
|
10
10
|
import { getHandlerMetadataEntries } from './metadata.js';
|
|
@@ -39,6 +39,9 @@ class MicroserviceLifecycleService {
|
|
|
39
39
|
}
|
|
40
40
|
descriptors = [];
|
|
41
41
|
handlerInstances = new Map();
|
|
42
|
+
closeStarted = false;
|
|
43
|
+
closePromise;
|
|
44
|
+
inboundWork = new Set();
|
|
42
45
|
lifecycleState = 'created';
|
|
43
46
|
lastListenError;
|
|
44
47
|
listening = false;
|
|
@@ -56,6 +59,7 @@ class MicroserviceLifecycleService {
|
|
|
56
59
|
* @returns A promise that resolves once the configured transport is ready to accept traffic.
|
|
57
60
|
*/
|
|
58
61
|
async listen() {
|
|
62
|
+
this.assertTransportIngressOpen('listen');
|
|
59
63
|
if (this.listening) {
|
|
60
64
|
return;
|
|
61
65
|
}
|
|
@@ -63,32 +67,7 @@ class MicroserviceLifecycleService {
|
|
|
63
67
|
await this.listenPromise;
|
|
64
68
|
return;
|
|
65
69
|
}
|
|
66
|
-
this.listenPromise = (
|
|
67
|
-
this.lifecycleState = 'starting';
|
|
68
|
-
this.lastListenError = undefined;
|
|
69
|
-
this.descriptors.length = 0;
|
|
70
|
-
this.descriptors.push(...this.discoverHandlerDescriptors());
|
|
71
|
-
const transport = this.moduleOptions.transport;
|
|
72
|
-
transport.setLogger?.(this.logger);
|
|
73
|
-
if (transport.listenServerStreaming) {
|
|
74
|
-
transport.listenServerStreaming(async (pattern, payload, writer) => {
|
|
75
|
-
await this.dispatchServerStream(pattern, cloneWithFallback(payload), writer);
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
if (transport.listenClientStreaming) {
|
|
79
|
-
transport.listenClientStreaming(async (pattern, reader) => {
|
|
80
|
-
return await this.dispatchClientStream(pattern, reader);
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
if (transport.listenBidiStreaming) {
|
|
84
|
-
transport.listenBidiStreaming(async (pattern, reader, writer) => {
|
|
85
|
-
await this.dispatchBidiStream(pattern, reader, writer);
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
await transport.listen(async packet => this.dispatchPacket(packet));
|
|
89
|
-
this.listening = true;
|
|
90
|
-
this.lifecycleState = 'ready';
|
|
91
|
-
})();
|
|
70
|
+
this.listenPromise = this.startListening();
|
|
92
71
|
try {
|
|
93
72
|
await this.listenPromise;
|
|
94
73
|
} catch (error) {
|
|
@@ -99,13 +78,56 @@ class MicroserviceLifecycleService {
|
|
|
99
78
|
this.listenPromise = undefined;
|
|
100
79
|
}
|
|
101
80
|
}
|
|
81
|
+
async startListening() {
|
|
82
|
+
this.assertTransportIngressOpen('listen');
|
|
83
|
+
this.lifecycleState = 'starting';
|
|
84
|
+
this.lastListenError = undefined;
|
|
85
|
+
this.descriptors.length = 0;
|
|
86
|
+
this.descriptors.push(...this.discoverHandlerDescriptors());
|
|
87
|
+
const transport = this.moduleOptions.transport;
|
|
88
|
+
transport.setLogger?.(this.logger);
|
|
89
|
+
if (transport.listenServerStreaming) {
|
|
90
|
+
transport.listenServerStreaming(async (pattern, payload, writer) => {
|
|
91
|
+
await this.trackInboundWork(() => this.dispatchServerStream(pattern, cloneWithFallback(payload), writer));
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
if (transport.listenClientStreaming) {
|
|
95
|
+
transport.listenClientStreaming(async (pattern, reader) => {
|
|
96
|
+
return await this.trackInboundWork(() => this.dispatchClientStream(pattern, reader));
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
if (transport.listenBidiStreaming) {
|
|
100
|
+
transport.listenBidiStreaming(async (pattern, reader, writer) => {
|
|
101
|
+
await this.trackInboundWork(() => this.dispatchBidiStream(pattern, reader, writer));
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
await transport.listen(async packet => await this.trackInboundWork(() => this.dispatchPacket(packet)));
|
|
105
|
+
this.listening = true;
|
|
106
|
+
this.lifecycleState = 'ready';
|
|
107
|
+
}
|
|
102
108
|
|
|
103
109
|
/**
|
|
104
110
|
* Closes the configured transport and stops accepting microservice traffic.
|
|
105
111
|
*
|
|
112
|
+
* @param signal Optional shutdown signal reported by the runtime lifecycle hook.
|
|
106
113
|
* @returns A promise that resolves once shutdown completes.
|
|
107
114
|
*/
|
|
108
|
-
|
|
115
|
+
close(signal) {
|
|
116
|
+
void signal;
|
|
117
|
+
this.closeStarted = true;
|
|
118
|
+
if (this.closePromise) {
|
|
119
|
+
return this.closePromise;
|
|
120
|
+
}
|
|
121
|
+
let resolveClose;
|
|
122
|
+
let rejectClose;
|
|
123
|
+
this.closePromise = new Promise((resolve, reject) => {
|
|
124
|
+
resolveClose = resolve;
|
|
125
|
+
rejectClose = reject;
|
|
126
|
+
});
|
|
127
|
+
void this.closeTransport().then(resolveClose, rejectClose);
|
|
128
|
+
return this.closePromise;
|
|
129
|
+
}
|
|
130
|
+
async closeTransport() {
|
|
109
131
|
let listenError;
|
|
110
132
|
if (this.listenPromise) {
|
|
111
133
|
try {
|
|
@@ -116,6 +138,9 @@ class MicroserviceLifecycleService {
|
|
|
116
138
|
}
|
|
117
139
|
this.lifecycleState = 'stopping';
|
|
118
140
|
try {
|
|
141
|
+
if (this.inboundWork.size > 0) {
|
|
142
|
+
await this.drainInboundWork();
|
|
143
|
+
}
|
|
119
144
|
await this.moduleOptions.transport.close();
|
|
120
145
|
this.listening = false;
|
|
121
146
|
if (listenError) {
|
|
@@ -130,8 +155,25 @@ class MicroserviceLifecycleService {
|
|
|
130
155
|
throw error;
|
|
131
156
|
}
|
|
132
157
|
}
|
|
133
|
-
async
|
|
134
|
-
|
|
158
|
+
async drainInboundWork() {
|
|
159
|
+
while (this.inboundWork.size > 0) {
|
|
160
|
+
await Promise.allSettled(this.inboundWork);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
trackInboundWork(operation) {
|
|
164
|
+
if (this.closeStarted) {
|
|
165
|
+
return Promise.reject(new InvariantError('Microservice cannot accept inbound work after shutdown has started.'));
|
|
166
|
+
}
|
|
167
|
+
const work = Promise.resolve().then(operation);
|
|
168
|
+
this.inboundWork.add(work);
|
|
169
|
+
void work.then(() => this.inboundWork.delete(work), () => this.inboundWork.delete(work));
|
|
170
|
+
return work;
|
|
171
|
+
}
|
|
172
|
+
markShutdownStarted() {
|
|
173
|
+
this.closeStarted = true;
|
|
174
|
+
}
|
|
175
|
+
async onApplicationShutdown(signal) {
|
|
176
|
+
await this.close(signal);
|
|
135
177
|
}
|
|
136
178
|
|
|
137
179
|
/**
|
|
@@ -157,7 +199,8 @@ class MicroserviceLifecycleService {
|
|
|
157
199
|
send: typeof this.moduleOptions.transport.send === 'function',
|
|
158
200
|
serverStream: typeof this.moduleOptions.transport.serverStream === 'function'
|
|
159
201
|
},
|
|
160
|
-
transportOwnsResources: this.moduleOptions.transport.ownsResources
|
|
202
|
+
transportOwnsResources: this.moduleOptions.transport.ownsResources,
|
|
203
|
+
transportResourceOwnership: this.moduleOptions.transport.resourceOwnership
|
|
161
204
|
});
|
|
162
205
|
}
|
|
163
206
|
|
|
@@ -170,6 +213,7 @@ class MicroserviceLifecycleService {
|
|
|
170
213
|
* @returns The transport response payload.
|
|
171
214
|
*/
|
|
172
215
|
async send(pattern, payload, signal) {
|
|
216
|
+
this.assertTransportIngressOpen('send');
|
|
173
217
|
return this.moduleOptions.transport.send(pattern, cloneWithFallback(payload), signal);
|
|
174
218
|
}
|
|
175
219
|
|
|
@@ -181,8 +225,14 @@ class MicroserviceLifecycleService {
|
|
|
181
225
|
* @returns A promise that resolves once the transport accepts the event.
|
|
182
226
|
*/
|
|
183
227
|
async emit(pattern, payload) {
|
|
228
|
+
this.assertTransportIngressOpen('emit');
|
|
184
229
|
await this.moduleOptions.transport.emit(pattern, cloneWithFallback(payload));
|
|
185
230
|
}
|
|
231
|
+
assertTransportIngressOpen(operation) {
|
|
232
|
+
if (this.closeStarted) {
|
|
233
|
+
throw new InvariantError(`Microservice cannot ${operation} after shutdown has started.`);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
186
236
|
|
|
187
237
|
/**
|
|
188
238
|
* Opens a server-streaming request through the configured transport.
|
|
@@ -192,9 +242,10 @@ class MicroserviceLifecycleService {
|
|
|
192
242
|
* @param signal Optional abort signal passed to the transport.
|
|
193
243
|
* @returns An async iterable of stream messages.
|
|
194
244
|
*
|
|
195
|
-
* @throws {Error} When the configured transport does not implement `serverStream()`.
|
|
245
|
+
* @throws {Error} When shutdown has started or the configured transport does not implement `serverStream()`.
|
|
196
246
|
*/
|
|
197
247
|
serverStream(pattern, payload, signal) {
|
|
248
|
+
this.assertTransportIngressOpen('serverStream');
|
|
198
249
|
const transport = this.moduleOptions.transport;
|
|
199
250
|
if (!transport.serverStream) {
|
|
200
251
|
throw new Error('The configured transport does not support server streaming. Use a transport that implements serverStream().');
|
|
@@ -209,9 +260,10 @@ class MicroserviceLifecycleService {
|
|
|
209
260
|
* @param signal Optional abort signal passed to the transport.
|
|
210
261
|
* @returns A writer for request chunks plus a promise for the final response.
|
|
211
262
|
*
|
|
212
|
-
* @throws {Error} When the configured transport does not implement `clientStream()`.
|
|
263
|
+
* @throws {Error} When shutdown has started or the configured transport does not implement `clientStream()`.
|
|
213
264
|
*/
|
|
214
265
|
clientStream(pattern, signal) {
|
|
266
|
+
this.assertTransportIngressOpen('clientStream');
|
|
215
267
|
const transport = this.moduleOptions.transport;
|
|
216
268
|
if (!transport.clientStream) {
|
|
217
269
|
throw new Error('The configured transport does not support client streaming. Use a transport that implements clientStream().');
|
|
@@ -226,9 +278,10 @@ class MicroserviceLifecycleService {
|
|
|
226
278
|
* @param signal Optional abort signal passed to the transport.
|
|
227
279
|
* @returns A reader for response chunks and a writer for outbound chunks.
|
|
228
280
|
*
|
|
229
|
-
* @throws {Error} When the configured transport does not implement `bidiStream()`.
|
|
281
|
+
* @throws {Error} When shutdown has started or the configured transport does not implement `bidiStream()`.
|
|
230
282
|
*/
|
|
231
283
|
bidiStream(pattern, signal) {
|
|
284
|
+
this.assertTransportIngressOpen('bidiStream');
|
|
232
285
|
const transport = this.moduleOptions.transport;
|
|
233
286
|
if (!transport.bidiStream) {
|
|
234
287
|
throw new Error('The configured transport does not support bidirectional streaming. Use a transport that implements bidiStream().');
|
|
@@ -434,7 +487,7 @@ class MicroserviceLifecycleService {
|
|
|
434
487
|
const entries = getHandlerMetadataEntries(candidate.targetType.prototype);
|
|
435
488
|
for (const entry of entries) {
|
|
436
489
|
const dedupeKey = this.dedupeKey(entry.metadata.kind, entry.metadata.pattern);
|
|
437
|
-
if (this.isDuplicate(seen, candidate.targetType, entry.propertyKey, dedupeKey)) {
|
|
490
|
+
if (this.isDuplicate(seen, candidate.targetType, candidate.token, entry.propertyKey, dedupeKey)) {
|
|
438
491
|
this.logger.warn(`Duplicate microservice handler registration for ${dedupeKey} on ${candidate.targetType.name}.${methodKeyToName(entry.propertyKey)} was ignored.`, 'MicroserviceLifecycleService');
|
|
439
492
|
continue;
|
|
440
493
|
}
|
|
@@ -458,11 +511,16 @@ class MicroserviceLifecycleService {
|
|
|
458
511
|
}
|
|
459
512
|
return `${kind}:${pattern}`;
|
|
460
513
|
}
|
|
461
|
-
isDuplicate(seen, targetType, methodKey, dedupeKey) {
|
|
462
|
-
let
|
|
514
|
+
isDuplicate(seen, targetType, token, methodKey, dedupeKey) {
|
|
515
|
+
let methodsByToken = seen.get(targetType);
|
|
516
|
+
if (!methodsByToken) {
|
|
517
|
+
methodsByToken = new Map();
|
|
518
|
+
seen.set(targetType, methodsByToken);
|
|
519
|
+
}
|
|
520
|
+
let methodsByKey = methodsByToken.get(token);
|
|
463
521
|
if (!methodsByKey) {
|
|
464
522
|
methodsByKey = new Map();
|
|
465
|
-
|
|
523
|
+
methodsByToken.set(token, methodsByKey);
|
|
466
524
|
}
|
|
467
525
|
let seenPatterns = methodsByKey.get(methodKey);
|
|
468
526
|
if (!seenPatterns) {
|
package/dist/status.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { PlatformHealthReport, PlatformReadinessReport, PlatformSnapshot } from '@fluojs/runtime';
|
|
2
|
+
import type { MicroserviceTransport } from './types.js';
|
|
2
3
|
/**
|
|
3
4
|
* Defines the microservice lifecycle state type.
|
|
4
5
|
*/
|
|
@@ -33,6 +34,8 @@ export interface MicroserviceStatusAdapterInput {
|
|
|
33
34
|
transportCapabilities: MicroserviceTransportCapabilities;
|
|
34
35
|
/** Whether the configured transport owns listener/client resources it must close. */
|
|
35
36
|
transportOwnsResources?: boolean;
|
|
37
|
+
/** Per-resource ownership details for transports that mix caller and framework ownership. */
|
|
38
|
+
transportResourceOwnership?: NonNullable<MicroserviceTransport['resourceOwnership']>;
|
|
36
39
|
}
|
|
37
40
|
/**
|
|
38
41
|
* Describes the microservice platform status snapshot contract.
|
package/dist/status.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEvG;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE9G;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,iCAAiC;IAChD,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C,aAAa,EAAE,yBAAyB,CAAC;IACzC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,0BAA0B,CAAC;IAC3C,qBAAqB,EAAE,iCAAiC,CAAC;IACzD,qFAAqF;IACrF,sBAAsB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEvG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE9G;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,iCAAiC;IAChD,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C,aAAa,EAAE,yBAAyB,CAAC;IACzC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,0BAA0B,CAAC;IAC3C,qBAAqB,EAAE,iCAAiC,CAAC;IACzD,qFAAqF;IACrF,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,6FAA6F;IAC7F,0BAA0B,CAAC,EAAE,WAAW,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,CAAC,CAAC;CACtF;AAED;;GAEG;AACH,MAAM,WAAW,kCAAkC;IACjD,SAAS,EAAE,uBAAuB,CAAC;IACnC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAqED;;;;;GAKG;AACH,wBAAgB,wCAAwC,CACtD,KAAK,EAAE,8BAA8B,GACpC,kCAAkC,CA6BpC"}
|
package/dist/status.js
CHANGED
|
@@ -84,7 +84,10 @@ function createHealth(input) {
|
|
|
84
84
|
* @returns The create microservice platform status snapshot result.
|
|
85
85
|
*/
|
|
86
86
|
export function createMicroservicePlatformStatusSnapshot(input) {
|
|
87
|
-
const
|
|
87
|
+
const transportResourceOwnership = input.transportResourceOwnership;
|
|
88
|
+
const resourceOwners = transportResourceOwnership ? Object.values(transportResourceOwnership) : [];
|
|
89
|
+
const transportOwnsResources = input.transportOwnsResources ?? resourceOwners.includes('framework');
|
|
90
|
+
const hasExternallyManagedResources = resourceOwners.length > 0 ? resourceOwners.includes('caller') : !transportOwnsResources;
|
|
88
91
|
return {
|
|
89
92
|
details: {
|
|
90
93
|
dependencies: ['transport.external'],
|
|
@@ -96,11 +99,16 @@ export function createMicroservicePlatformStatusSnapshot(input) {
|
|
|
96
99
|
transportCapabilities: {
|
|
97
100
|
...input.transportCapabilities
|
|
98
101
|
},
|
|
102
|
+
...(transportResourceOwnership ? {
|
|
103
|
+
transportResourceOwnership: {
|
|
104
|
+
...transportResourceOwnership
|
|
105
|
+
}
|
|
106
|
+
} : {}),
|
|
99
107
|
transportOwnsResources
|
|
100
108
|
},
|
|
101
109
|
health: createHealth(input),
|
|
102
110
|
ownership: {
|
|
103
|
-
externallyManaged:
|
|
111
|
+
externallyManaged: hasExternallyManagedResources,
|
|
104
112
|
ownsResources: transportOwnsResources
|
|
105
113
|
},
|
|
106
114
|
readiness: createReadiness(input)
|
|
@@ -61,8 +61,10 @@ export interface GrpcMicroserviceTransportOptions {
|
|
|
61
61
|
*/
|
|
62
62
|
export declare class GrpcMicroserviceTransport implements MicroserviceTransport {
|
|
63
63
|
private readonly options;
|
|
64
|
-
/** Indicates
|
|
65
|
-
readonly ownsResources
|
|
64
|
+
/** Indicates that gRPC closes the cached outbound clients it creates. */
|
|
65
|
+
readonly ownsResources = true;
|
|
66
|
+
/** Reports server and cached outbound client ownership independently. */
|
|
67
|
+
readonly resourceOwnership: NonNullable<MicroserviceTransport['resourceOwnership']>;
|
|
66
68
|
private bidiStreamHandler;
|
|
67
69
|
private clientStreamHandler;
|
|
68
70
|
private closePromise;
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"grpc-transport.d.ts","sourceRoot":"","sources":["../../src/transports/grpc-transport.ts"],"names":[],"mappings":"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"}
|