@ebarahona/loopback-transport-core 1.0.0 → 1.2.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.md +472 -35
- package/dist/client/client-proxy.d.ts +73 -42
- package/dist/client/client-proxy.js +71 -42
- package/dist/client/client-proxy.js.map +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.js +3 -15
- package/dist/client/index.js.map +1 -1
- package/dist/context/execution-context.d.ts +58 -11
- package/dist/context/execution-context.js +62 -17
- package/dist/context/execution-context.js.map +1 -1
- package/dist/context/index.d.ts +2 -1
- package/dist/context/index.js +3 -15
- package/dist/context/index.js.map +1 -1
- package/dist/decorators/constants.d.ts +20 -10
- package/dist/decorators/constants.js +6 -2
- package/dist/decorators/constants.js.map +1 -1
- package/dist/decorators/event-handler.decorator.d.ts +10 -7
- package/dist/decorators/event-handler.decorator.js +18 -13
- package/dist/decorators/event-handler.decorator.js.map +1 -1
- package/dist/decorators/index.d.ts +5 -4
- package/dist/decorators/index.js +11 -18
- package/dist/decorators/index.js.map +1 -1
- package/dist/decorators/message-handler.decorator.d.ts +8 -5
- package/dist/decorators/message-handler.decorator.js +16 -11
- package/dist/decorators/message-handler.decorator.js.map +1 -1
- package/dist/decorators/payload.decorator.d.ts +16 -7
- package/dist/decorators/payload.decorator.js +16 -8
- package/dist/decorators/payload.decorator.js.map +1 -1
- package/dist/discovery/discovery.service.d.ts +143 -0
- package/dist/discovery/discovery.service.js +165 -0
- package/dist/discovery/discovery.service.js.map +1 -0
- package/dist/discovery/event-handler-discoverer.d.ts +19 -0
- package/dist/discovery/event-handler-discoverer.js +50 -0
- package/dist/discovery/event-handler-discoverer.js.map +1 -0
- package/dist/discovery/handler-discoverer.d.ts +48 -0
- package/dist/discovery/handler-discoverer.js +3 -0
- package/dist/discovery/handler-discoverer.js.map +1 -0
- package/dist/discovery/handler-kind.d.ts +23 -0
- package/dist/discovery/handler-kind.js +14 -0
- package/dist/discovery/handler-kind.js.map +1 -0
- package/dist/discovery/index.d.ts +7 -0
- package/dist/discovery/index.js +13 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/discovery/message-handler-discoverer.d.ts +19 -0
- package/dist/discovery/message-handler-discoverer.js +50 -0
- package/dist/discovery/message-handler-discoverer.js.map +1 -0
- package/dist/discovery/registered-handler.d.ts +35 -0
- package/dist/discovery/registered-handler.js +3 -0
- package/dist/discovery/registered-handler.js.map +1 -0
- package/dist/helpers/errors.d.ts +61 -0
- package/dist/helpers/errors.js +80 -0
- package/dist/helpers/errors.js.map +1 -0
- package/dist/helpers/index.d.ts +2 -0
- package/dist/helpers/index.js +14 -0
- package/dist/helpers/index.js.map +1 -0
- package/dist/helpers/register-server.d.ts +44 -0
- package/dist/helpers/register-server.js +72 -0
- package/dist/helpers/register-server.js.map +1 -0
- package/dist/index.d.ts +15 -7
- package/dist/index.js +33 -9
- package/dist/index.js.map +1 -1
- package/dist/interfaces/index.d.ts +4 -4
- package/dist/interfaces/index.js +0 -18
- package/dist/interfaces/index.js.map +1 -1
- package/dist/interfaces/message-handler.interface.d.ts +12 -6
- package/dist/interfaces/packet.interface.d.ts +20 -2
- package/dist/interfaces/transport-client.interface.d.ts +25 -13
- package/dist/interfaces/transport-server.interface.d.ts +36 -10
- package/dist/keys.d.ts +143 -46
- package/dist/keys.js +142 -68
- package/dist/keys.js.map +1 -1
- package/dist/registry/handler-registry.d.ts +94 -24
- package/dist/registry/handler-registry.js +279 -89
- package/dist/registry/handler-registry.js.map +1 -1
- package/dist/registry/index.d.ts +1 -1
- package/dist/registry/index.js +3 -15
- package/dist/registry/index.js.map +1 -1
- package/dist/serializers/cloudevents-serializer.d.ts +107 -0
- package/dist/serializers/cloudevents-serializer.js +130 -0
- package/dist/serializers/cloudevents-serializer.js.map +1 -0
- package/dist/serializers/index.d.ts +4 -1
- package/dist/serializers/index.js +7 -15
- package/dist/serializers/index.js.map +1 -1
- package/dist/serializers/serializer.interface.d.ts +49 -16
- package/dist/serializers/serializer.interface.js +41 -15
- package/dist/serializers/serializer.interface.js.map +1 -1
- package/dist/server/index.d.ts +2 -1
- package/dist/server/index.js +3 -15
- package/dist/server/index.js.map +1 -1
- package/dist/server/server-base.d.ts +125 -52
- package/dist/server/server-base.js +168 -57
- package/dist/server/server-base.js.map +1 -1
- package/dist/transport.component.d.ts +21 -8
- package/dist/transport.component.js +41 -18
- package/dist/transport.component.js.map +1 -1
- package/dist/transport.observer.d.ts +91 -0
- package/dist/transport.observer.js +297 -0
- package/dist/transport.observer.js.map +1 -0
- package/dist/utils/normalize-pattern.d.ts +11 -6
- package/dist/utils/normalize-pattern.js +18 -13
- package/dist/utils/normalize-pattern.js.map +1 -1
- package/package.json +58 -16
- package/dist/transport-booter.d.ts +0 -31
- package/dist/transport-booter.js +0 -117
- package/dist/transport-booter.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-base.js","sourceRoot":"","sources":["../../src/server/server-base.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server-base.js","sourceRoot":"","sources":["../../src/server/server-base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +1,37 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Component, Constructor, LifeCycleObserver } from '@loopback/core';
|
|
2
|
+
import { Binding } from '@loopback/core';
|
|
2
3
|
/**
|
|
3
4
|
* LoopBack 4 component that enables transport-agnostic microservices.
|
|
4
5
|
*
|
|
5
6
|
* Registers the core transport extension points:
|
|
6
|
-
* - HandlerRegistry (singleton): discovers and manages transport handlers
|
|
7
|
-
* - TransportBooter (lifecycle observer): wires handlers to servers at boot
|
|
8
7
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
8
|
+
* - `HandlerRegistry` (singleton): discovers and manages transport handlers.
|
|
9
|
+
* - `MessageHandlerDiscoverer` and `EventHandlerDiscoverer` (singletons):
|
|
10
|
+
* default `HandlerDiscoverer` implementations tagged with
|
|
11
|
+
* `TransportBindings.tags.HANDLER_DISCOVERER`. Plugins contributing a
|
|
12
|
+
* custom decorator vocabulary bind their own discoverer under the
|
|
13
|
+
* same tag.
|
|
14
|
+
* - `DiscoveryService` (singleton): universal read-only enumeration of
|
|
15
|
+
* every discovered handler. Populated by `TransportBooter` after
|
|
16
|
+
* discovery and wrapping complete.
|
|
17
|
+
* - `TransportBooter` (lifecycle observer): wires handlers to servers at boot.
|
|
18
|
+
*
|
|
19
|
+
* The component intentionally stays thin. Discovery, validation, server
|
|
20
|
+
* binding, and listener lifecycle management live in the
|
|
21
|
+
* `TransportBooter` / `HandlerRegistry` layer so the component remains
|
|
22
|
+
* a stable package boundary for transport adapters.
|
|
13
23
|
*
|
|
14
24
|
* Usage:
|
|
25
|
+
*
|
|
15
26
|
* ```typescript
|
|
16
27
|
* const app = new Application();
|
|
17
28
|
* app.component(TransportComponent);
|
|
18
29
|
* ```
|
|
19
30
|
*
|
|
20
31
|
* Transport adapters can build on top of this component by contributing
|
|
21
|
-
* server bindings and configuration under TransportBindings
|
|
32
|
+
* server bindings and configuration under `TransportBindings`.
|
|
33
|
+
*
|
|
34
|
+
* @public
|
|
22
35
|
*/
|
|
23
36
|
export declare class TransportComponent implements Component {
|
|
24
37
|
readonly bindings: Binding<unknown>[];
|
|
@@ -2,41 +2,64 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TransportComponent = void 0;
|
|
4
4
|
const core_1 = require("@loopback/core");
|
|
5
|
+
const discovery_1 = require("./discovery");
|
|
5
6
|
const keys_1 = require("./keys");
|
|
6
7
|
const registry_1 = require("./registry");
|
|
7
|
-
const
|
|
8
|
+
const transport_observer_1 = require("./transport.observer");
|
|
8
9
|
/**
|
|
9
10
|
* LoopBack 4 component that enables transport-agnostic microservices.
|
|
10
11
|
*
|
|
11
12
|
* Registers the core transport extension points:
|
|
12
|
-
* - HandlerRegistry (singleton): discovers and manages transport handlers
|
|
13
|
-
* - TransportBooter (lifecycle observer): wires handlers to servers at boot
|
|
14
13
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
14
|
+
* - `HandlerRegistry` (singleton): discovers and manages transport handlers.
|
|
15
|
+
* - `MessageHandlerDiscoverer` and `EventHandlerDiscoverer` (singletons):
|
|
16
|
+
* default `HandlerDiscoverer` implementations tagged with
|
|
17
|
+
* `TransportBindings.tags.HANDLER_DISCOVERER`. Plugins contributing a
|
|
18
|
+
* custom decorator vocabulary bind their own discoverer under the
|
|
19
|
+
* same tag.
|
|
20
|
+
* - `DiscoveryService` (singleton): universal read-only enumeration of
|
|
21
|
+
* every discovered handler. Populated by `TransportBooter` after
|
|
22
|
+
* discovery and wrapping complete.
|
|
23
|
+
* - `TransportBooter` (lifecycle observer): wires handlers to servers at boot.
|
|
24
|
+
*
|
|
25
|
+
* The component intentionally stays thin. Discovery, validation, server
|
|
26
|
+
* binding, and listener lifecycle management live in the
|
|
27
|
+
* `TransportBooter` / `HandlerRegistry` layer so the component remains
|
|
28
|
+
* a stable package boundary for transport adapters.
|
|
19
29
|
*
|
|
20
30
|
* Usage:
|
|
31
|
+
*
|
|
21
32
|
* ```typescript
|
|
22
33
|
* const app = new Application();
|
|
23
34
|
* app.component(TransportComponent);
|
|
24
35
|
* ```
|
|
25
36
|
*
|
|
26
37
|
* Transport adapters can build on top of this component by contributing
|
|
27
|
-
* server bindings and configuration under TransportBindings
|
|
38
|
+
* server bindings and configuration under `TransportBindings`.
|
|
39
|
+
*
|
|
40
|
+
* @public
|
|
28
41
|
*/
|
|
29
42
|
class TransportComponent {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
43
|
+
bindings = [
|
|
44
|
+
core_1.Binding.bind(keys_1.TransportBindings.HANDLER_REGISTRY)
|
|
45
|
+
.toClass(registry_1.HandlerRegistry)
|
|
46
|
+
.inScope(core_1.BindingScope.SINGLETON),
|
|
47
|
+
core_1.Binding.bind(keys_1.TransportBindings.DISCOVERY_SERVICE)
|
|
48
|
+
.toClass(discovery_1.DiscoveryService)
|
|
49
|
+
.inScope(core_1.BindingScope.SINGLETON),
|
|
50
|
+
core_1.Binding.bind('transport.discoverer.message')
|
|
51
|
+
.toClass(discovery_1.MessageHandlerDiscoverer)
|
|
52
|
+
.tag(keys_1.TransportBindings.tags.HANDLER_DISCOVERER)
|
|
53
|
+
.inScope(core_1.BindingScope.SINGLETON),
|
|
54
|
+
core_1.Binding.bind('transport.discoverer.event')
|
|
55
|
+
.toClass(discovery_1.EventHandlerDiscoverer)
|
|
56
|
+
.tag(keys_1.TransportBindings.tags.HANDLER_DISCOVERER)
|
|
57
|
+
.inScope(core_1.BindingScope.SINGLETON),
|
|
58
|
+
core_1.Binding.bind(keys_1.TransportBindings.STRICT_BINDING).to(true),
|
|
59
|
+
];
|
|
60
|
+
lifeCycleObservers = [
|
|
61
|
+
transport_observer_1.TransportBooter,
|
|
62
|
+
];
|
|
40
63
|
}
|
|
41
64
|
exports.TransportComponent = TransportComponent;
|
|
42
65
|
//# sourceMappingURL=transport.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.component.js","sourceRoot":"","sources":["../src/transport.component.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"transport.component.js","sourceRoot":"","sources":["../src/transport.component.ts"],"names":[],"mappings":";;;AACA,yCAAqD;AACrD,2CAIqB;AACrB,iCAAyC;AACzC,yCAA2C;AAC3C,6DAAqD;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAa,kBAAkB;IACpB,QAAQ,GAAuB;QACtC,cAAO,CAAC,IAAI,CAAC,wBAAiB,CAAC,gBAAgB,CAAC;aAC7C,OAAO,CAAC,0BAAe,CAAC;aACxB,OAAO,CAAC,mBAAY,CAAC,SAAS,CAAC;QAClC,cAAO,CAAC,IAAI,CAAC,wBAAiB,CAAC,iBAAiB,CAAC;aAC9C,OAAO,CAAC,4BAAgB,CAAC;aACzB,OAAO,CAAC,mBAAY,CAAC,SAAS,CAAC;QAClC,cAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC;aACzC,OAAO,CAAC,oCAAwB,CAAC;aACjC,GAAG,CAAC,wBAAiB,CAAC,IAAI,CAAC,kBAAkB,CAAC;aAC9C,OAAO,CAAC,mBAAY,CAAC,SAAS,CAAC;QAClC,cAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC;aACvC,OAAO,CAAC,kCAAsB,CAAC;aAC/B,GAAG,CAAC,wBAAiB,CAAC,IAAI,CAAC,kBAAkB,CAAC;aAC9C,OAAO,CAAC,mBAAY,CAAC,SAAS,CAAC;QAClC,cAAO,CAAC,IAAI,CAAC,wBAAiB,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;KACxD,CAAC;IAEO,kBAAkB,GAAqC;QAC9D,oCAAe;KAChB,CAAC;CACH;AAtBD,gDAsBC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { type Application, LifeCycleObserver } from '@loopback/core';
|
|
2
|
+
import type { HandlerRegistry } from './registry';
|
|
3
|
+
/**
|
|
4
|
+
* Lifecycle observer that discovers transport handlers after boot and
|
|
5
|
+
* starts/stops transport servers.
|
|
6
|
+
*
|
|
7
|
+
* Runs after all controllers are registered (boot phase complete).
|
|
8
|
+
* Scans controllers for `@messageHandler` / `@eventHandler` metadata,
|
|
9
|
+
* registers handlers with transport servers, then starts listeners.
|
|
10
|
+
*
|
|
11
|
+
* Boot sequence:
|
|
12
|
+
*
|
|
13
|
+
* 1. Discover handlers from every bound `HandlerDiscoverer`.
|
|
14
|
+
* 2. Populate the `DiscoveryService` snapshot.
|
|
15
|
+
* 3. Bind the handlers to their transport servers.
|
|
16
|
+
* 4. Start servers sequentially.
|
|
17
|
+
*
|
|
18
|
+
* Startup behavior: sequential with deterministic rollback. Servers
|
|
19
|
+
* start one at a time. If any fails, every server that has already
|
|
20
|
+
* been started — including the failing one — is closed in reverse
|
|
21
|
+
* order. No race between concurrent starts.
|
|
22
|
+
*
|
|
23
|
+
* Shutdown behavior: best-effort parallel. All servers stop
|
|
24
|
+
* concurrently. Individual errors are logged but do not prevent other
|
|
25
|
+
* servers from stopping.
|
|
26
|
+
*
|
|
27
|
+
* Restart safety: servers are cleared of handlers before rebinding to
|
|
28
|
+
* prevent duplicate registration on stop/start cycles.
|
|
29
|
+
*
|
|
30
|
+
* Idempotency: `start()` and `stop()` are safe to call multiple times.
|
|
31
|
+
* Concurrent calls share the same in-flight promise.
|
|
32
|
+
*
|
|
33
|
+
* @public
|
|
34
|
+
*/
|
|
35
|
+
export declare class TransportBooter implements LifeCycleObserver {
|
|
36
|
+
private readonly app;
|
|
37
|
+
private readonly registry;
|
|
38
|
+
private state;
|
|
39
|
+
private startPromise;
|
|
40
|
+
private stopPromise;
|
|
41
|
+
constructor(app: Application, registry: HandlerRegistry);
|
|
42
|
+
/**
|
|
43
|
+
* Start every registered transport server.
|
|
44
|
+
*
|
|
45
|
+
* Idempotent and concurrency-safe: a second concurrent call shares
|
|
46
|
+
* the in-flight start promise, and calling `start()` on an already
|
|
47
|
+
* started booter is a no-op.
|
|
48
|
+
*
|
|
49
|
+
* @public
|
|
50
|
+
* @returns Resolves when every server has reported ready.
|
|
51
|
+
* @throws TransportError When any server fails to start. All
|
|
52
|
+
* partially-started servers are closed before the original error
|
|
53
|
+
* is re-thrown.
|
|
54
|
+
*/
|
|
55
|
+
start(): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Stop every registered transport server.
|
|
58
|
+
*
|
|
59
|
+
* Idempotent and concurrency-safe: a second concurrent call shares
|
|
60
|
+
* the in-flight stop promise, and calling `stop()` on an already
|
|
61
|
+
* stopped booter is a no-op.
|
|
62
|
+
*
|
|
63
|
+
* @public
|
|
64
|
+
* @returns Resolves once every server has closed (or its close has
|
|
65
|
+
* been attempted).
|
|
66
|
+
*/
|
|
67
|
+
stop(): Promise<void>;
|
|
68
|
+
private doStart;
|
|
69
|
+
private doStop;
|
|
70
|
+
/**
|
|
71
|
+
* Build the final `RegisteredHandler[]` snapshot from the registry
|
|
72
|
+
* and hand it to the `DiscoveryService` along with the bound
|
|
73
|
+
* discoverers and transport servers.
|
|
74
|
+
*
|
|
75
|
+
* `RegisteredHandler` entries and their `pattern` (when object-typed)
|
|
76
|
+
* and `options` are deep-frozen before being handed to
|
|
77
|
+
* `DiscoveryService` so consumers cannot mutate registry state.
|
|
78
|
+
*/
|
|
79
|
+
private populateDiscoveryService;
|
|
80
|
+
/**
|
|
81
|
+
* Resolve all registered transport servers with their names.
|
|
82
|
+
*
|
|
83
|
+
* Bindings tagged as transport servers but missing the transport-name
|
|
84
|
+
* tag are skipped with a debug log. The registry's Guard 4 in
|
|
85
|
+
* `bindToServers` also surfaces this misconfiguration. Skipped servers
|
|
86
|
+
* are not started and do not receive handlers; register them via
|
|
87
|
+
* `registerServer` / `registerServerClass` / `registerServerProvider`
|
|
88
|
+
* to opt in to the lifecycle.
|
|
89
|
+
*/
|
|
90
|
+
private getServerEntries;
|
|
91
|
+
}
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
15
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
16
|
+
};
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.TransportBooter = void 0;
|
|
19
|
+
const core_1 = require("@loopback/core");
|
|
20
|
+
const debug_1 = __importDefault(require("debug"));
|
|
21
|
+
const keys_1 = require("./keys");
|
|
22
|
+
const debug = (0, debug_1.default)('loopback:transport:booter');
|
|
23
|
+
/**
|
|
24
|
+
* Recursively freeze a value and every nested object/array property.
|
|
25
|
+
* File-private; used to harden the `RegisteredHandler` snapshot handed
|
|
26
|
+
* to `DiscoveryService` so consumers cannot mutate registry state.
|
|
27
|
+
*/
|
|
28
|
+
function deepFreeze(value) {
|
|
29
|
+
if (value === null || typeof value !== 'object' || Object.isFrozen(value)) {
|
|
30
|
+
return value;
|
|
31
|
+
}
|
|
32
|
+
for (const key of Object.keys(value)) {
|
|
33
|
+
deepFreeze(value[key]);
|
|
34
|
+
}
|
|
35
|
+
return Object.freeze(value);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Lifecycle observer that discovers transport handlers after boot and
|
|
39
|
+
* starts/stops transport servers.
|
|
40
|
+
*
|
|
41
|
+
* Runs after all controllers are registered (boot phase complete).
|
|
42
|
+
* Scans controllers for `@messageHandler` / `@eventHandler` metadata,
|
|
43
|
+
* registers handlers with transport servers, then starts listeners.
|
|
44
|
+
*
|
|
45
|
+
* Boot sequence:
|
|
46
|
+
*
|
|
47
|
+
* 1. Discover handlers from every bound `HandlerDiscoverer`.
|
|
48
|
+
* 2. Populate the `DiscoveryService` snapshot.
|
|
49
|
+
* 3. Bind the handlers to their transport servers.
|
|
50
|
+
* 4. Start servers sequentially.
|
|
51
|
+
*
|
|
52
|
+
* Startup behavior: sequential with deterministic rollback. Servers
|
|
53
|
+
* start one at a time. If any fails, every server that has already
|
|
54
|
+
* been started — including the failing one — is closed in reverse
|
|
55
|
+
* order. No race between concurrent starts.
|
|
56
|
+
*
|
|
57
|
+
* Shutdown behavior: best-effort parallel. All servers stop
|
|
58
|
+
* concurrently. Individual errors are logged but do not prevent other
|
|
59
|
+
* servers from stopping.
|
|
60
|
+
*
|
|
61
|
+
* Restart safety: servers are cleared of handlers before rebinding to
|
|
62
|
+
* prevent duplicate registration on stop/start cycles.
|
|
63
|
+
*
|
|
64
|
+
* Idempotency: `start()` and `stop()` are safe to call multiple times.
|
|
65
|
+
* Concurrent calls share the same in-flight promise.
|
|
66
|
+
*
|
|
67
|
+
* @public
|
|
68
|
+
*/
|
|
69
|
+
let TransportBooter = class TransportBooter {
|
|
70
|
+
app;
|
|
71
|
+
registry;
|
|
72
|
+
state = 'stopped';
|
|
73
|
+
startPromise;
|
|
74
|
+
stopPromise;
|
|
75
|
+
constructor(app, registry) {
|
|
76
|
+
this.app = app;
|
|
77
|
+
this.registry = registry;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Start every registered transport server.
|
|
81
|
+
*
|
|
82
|
+
* Idempotent and concurrency-safe: a second concurrent call shares
|
|
83
|
+
* the in-flight start promise, and calling `start()` on an already
|
|
84
|
+
* started booter is a no-op.
|
|
85
|
+
*
|
|
86
|
+
* @public
|
|
87
|
+
* @returns Resolves when every server has reported ready.
|
|
88
|
+
* @throws TransportError When any server fails to start. All
|
|
89
|
+
* partially-started servers are closed before the original error
|
|
90
|
+
* is re-thrown.
|
|
91
|
+
*/
|
|
92
|
+
async start() {
|
|
93
|
+
if (this.state === 'started')
|
|
94
|
+
return;
|
|
95
|
+
if (this.startPromise)
|
|
96
|
+
return this.startPromise;
|
|
97
|
+
this.state = 'starting';
|
|
98
|
+
this.startPromise = this.doStart().finally(() => {
|
|
99
|
+
this.startPromise = undefined;
|
|
100
|
+
});
|
|
101
|
+
try {
|
|
102
|
+
await this.startPromise;
|
|
103
|
+
this.state = 'started';
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
this.state = 'stopped';
|
|
107
|
+
throw err;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Stop every registered transport server.
|
|
112
|
+
*
|
|
113
|
+
* Idempotent and concurrency-safe: a second concurrent call shares
|
|
114
|
+
* the in-flight stop promise, and calling `stop()` on an already
|
|
115
|
+
* stopped booter is a no-op.
|
|
116
|
+
*
|
|
117
|
+
* @public
|
|
118
|
+
* @returns Resolves once every server has closed (or its close has
|
|
119
|
+
* been attempted).
|
|
120
|
+
*/
|
|
121
|
+
async stop() {
|
|
122
|
+
if (this.state === 'stopped')
|
|
123
|
+
return;
|
|
124
|
+
if (this.stopPromise)
|
|
125
|
+
return this.stopPromise;
|
|
126
|
+
this.state = 'stopping';
|
|
127
|
+
this.stopPromise = this.doStop().finally(() => {
|
|
128
|
+
this.stopPromise = undefined;
|
|
129
|
+
});
|
|
130
|
+
try {
|
|
131
|
+
await this.stopPromise;
|
|
132
|
+
}
|
|
133
|
+
finally {
|
|
134
|
+
this.state = 'stopped';
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
async doStart() {
|
|
138
|
+
debug('transport booter starting');
|
|
139
|
+
// Discover handlers from controllers (idempotent: clears first).
|
|
140
|
+
await this.registry.discoverHandlers(this.app);
|
|
141
|
+
// Populate the universal DiscoveryService snapshot so cross-cutting
|
|
142
|
+
// plugins can enumerate the discovered handler graph.
|
|
143
|
+
await this.populateDiscoveryService();
|
|
144
|
+
// Clear existing handlers from servers before rebinding so a
|
|
145
|
+
// restart cycle does not double-register.
|
|
146
|
+
const entries = await this.getServerEntries();
|
|
147
|
+
for (const { server } of entries) {
|
|
148
|
+
server.clearHandlers();
|
|
149
|
+
}
|
|
150
|
+
await this.registry.bindToServers(this.app);
|
|
151
|
+
// Resolve each server's serializer/deserializer pair from
|
|
152
|
+
// tag-based bindings (transport-scoped > generic > subclass
|
|
153
|
+
// default). Runs after `bindToServers` and before `listen()` so
|
|
154
|
+
// every adapter sees the final serializer choice in its
|
|
155
|
+
// `listen()` implementation. `resolveSerializer` is a required
|
|
156
|
+
// method on `TransportServer`; subclasses of `ServerBase` inherit
|
|
157
|
+
// the default implementation.
|
|
158
|
+
for (const { server } of entries) {
|
|
159
|
+
await server.resolveSerializer(this.app);
|
|
160
|
+
}
|
|
161
|
+
// Start servers sequentially. Push BEFORE awaiting listen() so
|
|
162
|
+
// rollback covers the failing server too — listen() may have
|
|
163
|
+
// partially opened sockets/consumers before throwing.
|
|
164
|
+
const started = [];
|
|
165
|
+
for (const { name, server } of entries) {
|
|
166
|
+
started.push(server);
|
|
167
|
+
try {
|
|
168
|
+
await server.listen();
|
|
169
|
+
debug('transport server [%s] started', name);
|
|
170
|
+
}
|
|
171
|
+
catch (err) {
|
|
172
|
+
debug('startup failed at [%s], rolling back %d server(s)', name, started.length);
|
|
173
|
+
for (const s of [...started].reverse()) {
|
|
174
|
+
try {
|
|
175
|
+
await s.close();
|
|
176
|
+
}
|
|
177
|
+
catch (closeErr) {
|
|
178
|
+
debug('rollback close failed: %O', closeErr);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
throw err;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
debug('transport booter started (%d handlers, %d servers)', this.registry.getHandlers().size, entries.length);
|
|
185
|
+
}
|
|
186
|
+
async doStop() {
|
|
187
|
+
debug('transport booter stopping');
|
|
188
|
+
const entries = await this.getServerEntries();
|
|
189
|
+
const results = await Promise.allSettled(entries.map(async ({ name, server }) => {
|
|
190
|
+
await server.close();
|
|
191
|
+
debug('transport server [%s] stopped', name);
|
|
192
|
+
}));
|
|
193
|
+
const failures = results.filter((r) => r.status === 'rejected');
|
|
194
|
+
if (failures.length > 0) {
|
|
195
|
+
debug('%d transport server(s) failed to stop cleanly', failures.length);
|
|
196
|
+
for (const failure of failures) {
|
|
197
|
+
debug('transport server shutdown failure: %O', failure.reason);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
debug('transport booter stopped');
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Build the final `RegisteredHandler[]` snapshot from the registry
|
|
204
|
+
* and hand it to the `DiscoveryService` along with the bound
|
|
205
|
+
* discoverers and transport servers.
|
|
206
|
+
*
|
|
207
|
+
* `RegisteredHandler` entries and their `pattern` (when object-typed)
|
|
208
|
+
* and `options` are deep-frozen before being handed to
|
|
209
|
+
* `DiscoveryService` so consumers cannot mutate registry state.
|
|
210
|
+
*/
|
|
211
|
+
async populateDiscoveryService() {
|
|
212
|
+
const handlers = [];
|
|
213
|
+
for (const entry of this.registry._getEntries()) {
|
|
214
|
+
const pattern = typeof entry.pattern === 'string'
|
|
215
|
+
? entry.pattern
|
|
216
|
+
: deepFreeze({ ...entry.pattern });
|
|
217
|
+
const options = entry.options === undefined
|
|
218
|
+
? undefined
|
|
219
|
+
: deepFreeze({ ...entry.options });
|
|
220
|
+
handlers.push(Object.freeze({
|
|
221
|
+
pattern,
|
|
222
|
+
transport: entry.transport,
|
|
223
|
+
kind: entry.kind,
|
|
224
|
+
controllerClass: entry.controllerClass,
|
|
225
|
+
methodName: entry.methodName,
|
|
226
|
+
discovererId: entry.discovererId,
|
|
227
|
+
...(options !== undefined ? { options } : {}),
|
|
228
|
+
invoke: entry.handler,
|
|
229
|
+
}));
|
|
230
|
+
}
|
|
231
|
+
const discovererBindings = this.app.findByTag(keys_1.HANDLER_DISCOVERER_TAG);
|
|
232
|
+
const discoverers = [];
|
|
233
|
+
for (const binding of discovererBindings) {
|
|
234
|
+
discoverers.push(await this.app.get(binding.key));
|
|
235
|
+
}
|
|
236
|
+
const servers = [];
|
|
237
|
+
for (const binding of this.app.findByTag(keys_1.TRANSPORT_SERVER_TAG)) {
|
|
238
|
+
servers.push(await this.app.get(binding.key));
|
|
239
|
+
}
|
|
240
|
+
const serializers = [];
|
|
241
|
+
for (const binding of this.app.findByTag(keys_1.SERIALIZER_TAG)) {
|
|
242
|
+
const instance = await this.app.get(binding.key);
|
|
243
|
+
const transport = binding.tagMap?.[keys_1.TRANSPORT_NAME_TAG];
|
|
244
|
+
serializers.push({
|
|
245
|
+
instance,
|
|
246
|
+
transport: typeof transport === 'string' && transport.length > 0
|
|
247
|
+
? transport
|
|
248
|
+
: undefined,
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
const deserializers = [];
|
|
252
|
+
for (const binding of this.app.findByTag(keys_1.DESERIALIZER_TAG)) {
|
|
253
|
+
const instance = await this.app.get(binding.key);
|
|
254
|
+
const transport = binding.tagMap?.[keys_1.TRANSPORT_NAME_TAG];
|
|
255
|
+
deserializers.push({
|
|
256
|
+
instance,
|
|
257
|
+
transport: typeof transport === 'string' && transport.length > 0
|
|
258
|
+
? transport
|
|
259
|
+
: undefined,
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
const service = await this.app.get(keys_1.TransportBindings.DISCOVERY_SERVICE);
|
|
263
|
+
service._populate(handlers, discoverers, servers, serializers, deserializers);
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Resolve all registered transport servers with their names.
|
|
267
|
+
*
|
|
268
|
+
* Bindings tagged as transport servers but missing the transport-name
|
|
269
|
+
* tag are skipped with a debug log. The registry's Guard 4 in
|
|
270
|
+
* `bindToServers` also surfaces this misconfiguration. Skipped servers
|
|
271
|
+
* are not started and do not receive handlers; register them via
|
|
272
|
+
* `registerServer` / `registerServerClass` / `registerServerProvider`
|
|
273
|
+
* to opt in to the lifecycle.
|
|
274
|
+
*/
|
|
275
|
+
async getServerEntries() {
|
|
276
|
+
const bindings = this.app.findByTag(keys_1.TRANSPORT_SERVER_TAG);
|
|
277
|
+
const entries = [];
|
|
278
|
+
for (const binding of bindings) {
|
|
279
|
+
const tag = binding.tagMap?.[keys_1.TRANSPORT_NAME_TAG];
|
|
280
|
+
if (typeof tag !== 'string' || tag.length === 0) {
|
|
281
|
+
debug('skipping transport server binding "%s": missing %s tag; will not be started or receive handlers', String(binding.key), keys_1.TRANSPORT_NAME_TAG);
|
|
282
|
+
continue;
|
|
283
|
+
}
|
|
284
|
+
const server = await this.app.get(binding.key);
|
|
285
|
+
entries.push({ name: tag, server });
|
|
286
|
+
}
|
|
287
|
+
return entries;
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
exports.TransportBooter = TransportBooter;
|
|
291
|
+
exports.TransportBooter = TransportBooter = __decorate([
|
|
292
|
+
(0, core_1.lifeCycleObserver)('transport'),
|
|
293
|
+
__param(0, (0, core_1.inject)(core_1.CoreBindings.APPLICATION_INSTANCE)),
|
|
294
|
+
__param(1, (0, core_1.inject)(keys_1.TransportBindings.HANDLER_REGISTRY)),
|
|
295
|
+
__metadata("design:paramtypes", [Function, Function])
|
|
296
|
+
], TransportBooter);
|
|
297
|
+
//# sourceMappingURL=transport.observer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.observer.js","sourceRoot":"","sources":["../src/transport.observer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Normalize a pattern to a consistent string key.
|
|
3
3
|
*
|
|
4
|
-
* Strings pass through as-is. Objects are deep-sorted by key
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Strings pass through as-is. Objects are deep-sorted by key and
|
|
5
|
+
* JSON-stringified for consistent lookup regardless of property
|
|
6
|
+
* insertion order.
|
|
7
7
|
*
|
|
8
8
|
* Only JSON-compatible values are accepted: strings, finite numbers,
|
|
9
9
|
* booleans, null, plain objects, and arrays. Non-JSON values
|
|
10
|
-
* (undefined
|
|
11
|
-
* RegExp
|
|
10
|
+
* (`undefined`, functions, symbols, `NaN`, `Infinity`, `BigInt`,
|
|
11
|
+
* `Date`, `RegExp`, `Map`, `Set`, class instances) are rejected
|
|
12
|
+
* deterministically.
|
|
12
13
|
*
|
|
13
14
|
* Shared (non-circular) object references are allowed. Only true
|
|
14
15
|
* cycles throw.
|
|
15
16
|
*
|
|
16
|
-
* @
|
|
17
|
+
* @public
|
|
18
|
+
* @param pattern - String or plain-object pattern.
|
|
19
|
+
* @returns A canonical string representation suitable as a registry key.
|
|
20
|
+
* @throws TransportPatternError On circular references, non-JSON
|
|
21
|
+
* values, or non-plain objects.
|
|
17
22
|
*/
|
|
18
23
|
export declare function normalizePattern(pattern: string | Record<string, unknown>): string;
|