@ebarahona/loopback-transport-core 1.0.0 → 1.1.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 +442 -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 +132 -46
- package/dist/keys.js +131 -68
- package/dist/keys.js.map +1 -1
- package/dist/registry/handler-registry.d.ts +94 -24
- package/dist/registry/handler-registry.js +195 -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 +40 -18
- package/dist/transport.component.js.map +1 -1
- package/dist/transport.observer.d.ts +87 -0
- package/dist/transport.observer.js +296 -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
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed error classes for the transport core.
|
|
3
|
+
*
|
|
4
|
+
* Each class extends `Error` and overrides `name` so consumers can match
|
|
5
|
+
* failures either by `instanceof` or by `error.name`. Throw the most
|
|
6
|
+
* specific subclass for the failure category — never raw `Error`.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* General transport-level failure that does not match a more specific
|
|
10
|
+
* category. Prefer one of the specific subclasses below when applicable.
|
|
11
|
+
*
|
|
12
|
+
* @public
|
|
13
|
+
*/
|
|
14
|
+
export declare class TransportError extends Error {
|
|
15
|
+
readonly name = "TransportError";
|
|
16
|
+
constructor(message: string);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Configuration/registration error. Thrown when a binding, tag, or
|
|
20
|
+
* registration is invalid — e.g. a transport server is registered
|
|
21
|
+
* without the required transport-name tag, or a handler is registered
|
|
22
|
+
* twice for the same pattern.
|
|
23
|
+
*
|
|
24
|
+
* @public
|
|
25
|
+
*/
|
|
26
|
+
export declare class TransportConfigError extends Error {
|
|
27
|
+
readonly name = "TransportConfigError";
|
|
28
|
+
constructor(message: string);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Pattern validation error. Thrown when a pattern object contains a
|
|
32
|
+
* value that cannot be normalized — non-JSON-serializable primitives,
|
|
33
|
+
* non-plain objects, or circular references.
|
|
34
|
+
*
|
|
35
|
+
* @public
|
|
36
|
+
*/
|
|
37
|
+
export declare class TransportPatternError extends Error {
|
|
38
|
+
readonly name = "TransportPatternError";
|
|
39
|
+
constructor(message: string);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Serialization or deserialization failure. Always wraps the original
|
|
43
|
+
* cause via `ErrorOptions.cause` so consumers can inspect the underlying
|
|
44
|
+
* runtime error (`SyntaxError`, `TypeError`, etc.).
|
|
45
|
+
*
|
|
46
|
+
* @public
|
|
47
|
+
*/
|
|
48
|
+
export declare class TransportSerializationError extends Error {
|
|
49
|
+
readonly name = "TransportSerializationError";
|
|
50
|
+
constructor(message: string, options?: ErrorOptions);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Timeout error surfaced to handlers and callers when an Observable or
|
|
54
|
+
* async operation does not settle within the configured budget.
|
|
55
|
+
*
|
|
56
|
+
* @public
|
|
57
|
+
*/
|
|
58
|
+
export declare class TransportTimeoutError extends Error {
|
|
59
|
+
readonly name = "TransportTimeoutError";
|
|
60
|
+
constructor(message: string);
|
|
61
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Typed error classes for the transport core.
|
|
4
|
+
*
|
|
5
|
+
* Each class extends `Error` and overrides `name` so consumers can match
|
|
6
|
+
* failures either by `instanceof` or by `error.name`. Throw the most
|
|
7
|
+
* specific subclass for the failure category — never raw `Error`.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.TransportTimeoutError = exports.TransportSerializationError = exports.TransportPatternError = exports.TransportConfigError = exports.TransportError = void 0;
|
|
11
|
+
/**
|
|
12
|
+
* General transport-level failure that does not match a more specific
|
|
13
|
+
* category. Prefer one of the specific subclasses below when applicable.
|
|
14
|
+
*
|
|
15
|
+
* @public
|
|
16
|
+
*/
|
|
17
|
+
class TransportError extends Error {
|
|
18
|
+
name = 'TransportError';
|
|
19
|
+
constructor(message) {
|
|
20
|
+
super(message);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.TransportError = TransportError;
|
|
24
|
+
/**
|
|
25
|
+
* Configuration/registration error. Thrown when a binding, tag, or
|
|
26
|
+
* registration is invalid — e.g. a transport server is registered
|
|
27
|
+
* without the required transport-name tag, or a handler is registered
|
|
28
|
+
* twice for the same pattern.
|
|
29
|
+
*
|
|
30
|
+
* @public
|
|
31
|
+
*/
|
|
32
|
+
class TransportConfigError extends Error {
|
|
33
|
+
name = 'TransportConfigError';
|
|
34
|
+
constructor(message) {
|
|
35
|
+
super(message);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.TransportConfigError = TransportConfigError;
|
|
39
|
+
/**
|
|
40
|
+
* Pattern validation error. Thrown when a pattern object contains a
|
|
41
|
+
* value that cannot be normalized — non-JSON-serializable primitives,
|
|
42
|
+
* non-plain objects, or circular references.
|
|
43
|
+
*
|
|
44
|
+
* @public
|
|
45
|
+
*/
|
|
46
|
+
class TransportPatternError extends Error {
|
|
47
|
+
name = 'TransportPatternError';
|
|
48
|
+
constructor(message) {
|
|
49
|
+
super(message);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.TransportPatternError = TransportPatternError;
|
|
53
|
+
/**
|
|
54
|
+
* Serialization or deserialization failure. Always wraps the original
|
|
55
|
+
* cause via `ErrorOptions.cause` so consumers can inspect the underlying
|
|
56
|
+
* runtime error (`SyntaxError`, `TypeError`, etc.).
|
|
57
|
+
*
|
|
58
|
+
* @public
|
|
59
|
+
*/
|
|
60
|
+
class TransportSerializationError extends Error {
|
|
61
|
+
name = 'TransportSerializationError';
|
|
62
|
+
constructor(message, options) {
|
|
63
|
+
super(message, options);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.TransportSerializationError = TransportSerializationError;
|
|
67
|
+
/**
|
|
68
|
+
* Timeout error surfaced to handlers and callers when an Observable or
|
|
69
|
+
* async operation does not settle within the configured budget.
|
|
70
|
+
*
|
|
71
|
+
* @public
|
|
72
|
+
*/
|
|
73
|
+
class TransportTimeoutError extends Error {
|
|
74
|
+
name = 'TransportTimeoutError';
|
|
75
|
+
constructor(message) {
|
|
76
|
+
super(message);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.TransportTimeoutError = TransportTimeoutError;
|
|
80
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/helpers/errors.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH;;;;;GAKG;AACH,MAAa,cAAe,SAAQ,KAAK;IACrB,IAAI,GAAG,gBAAgB,CAAC;IAC1C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AALD,wCAKC;AAED;;;;;;;GAOG;AACH,MAAa,oBAAqB,SAAQ,KAAK;IAC3B,IAAI,GAAG,sBAAsB,CAAC;IAChD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AALD,oDAKC;AAED;;;;;;GAMG;AACH,MAAa,qBAAsB,SAAQ,KAAK;IAC5B,IAAI,GAAG,uBAAuB,CAAC;IACjD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AALD,sDAKC;AAED;;;;;;GAMG;AACH,MAAa,2BAA4B,SAAQ,KAAK;IAClC,IAAI,GAAG,6BAA6B,CAAC;IACvD,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;CACF;AALD,kEAKC;AAED;;;;;GAKG;AACH,MAAa,qBAAsB,SAAQ,KAAK;IAC5B,IAAI,GAAG,uBAAuB,CAAC;IACjD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AALD,sDAKC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerServerProvider = exports.registerServerClass = exports.registerServer = exports.TransportTimeoutError = exports.TransportSerializationError = exports.TransportPatternError = exports.TransportConfigError = exports.TransportError = void 0;
|
|
4
|
+
var errors_1 = require("./errors");
|
|
5
|
+
Object.defineProperty(exports, "TransportError", { enumerable: true, get: function () { return errors_1.TransportError; } });
|
|
6
|
+
Object.defineProperty(exports, "TransportConfigError", { enumerable: true, get: function () { return errors_1.TransportConfigError; } });
|
|
7
|
+
Object.defineProperty(exports, "TransportPatternError", { enumerable: true, get: function () { return errors_1.TransportPatternError; } });
|
|
8
|
+
Object.defineProperty(exports, "TransportSerializationError", { enumerable: true, get: function () { return errors_1.TransportSerializationError; } });
|
|
9
|
+
Object.defineProperty(exports, "TransportTimeoutError", { enumerable: true, get: function () { return errors_1.TransportTimeoutError; } });
|
|
10
|
+
var register_server_1 = require("./register-server");
|
|
11
|
+
Object.defineProperty(exports, "registerServer", { enumerable: true, get: function () { return register_server_1.registerServer; } });
|
|
12
|
+
Object.defineProperty(exports, "registerServerClass", { enumerable: true, get: function () { return register_server_1.registerServerClass; } });
|
|
13
|
+
Object.defineProperty(exports, "registerServerProvider", { enumerable: true, get: function () { return register_server_1.registerServerProvider; } });
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":";;;AAAA,mCAMkB;AALhB,wGAAA,cAAc,OAAA;AACd,8GAAA,oBAAoB,OAAA;AACpB,+GAAA,qBAAqB,OAAA;AACrB,qHAAA,2BAA2B,OAAA;AAC3B,+GAAA,qBAAqB,OAAA;AAEvB,qDAI2B;AAHzB,iHAAA,cAAc,OAAA;AACd,sHAAA,mBAAmB,OAAA;AACnB,yHAAA,sBAAsB,OAAA"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { Application, Binding, Constructor, Provider } from '@loopback/core';
|
|
2
|
+
import type { TransportServer } from '../interfaces';
|
|
3
|
+
/**
|
|
4
|
+
* Register a concrete transport server instance.
|
|
5
|
+
*
|
|
6
|
+
* Use when the server is already constructed (for example in tests or
|
|
7
|
+
* when no DI is needed).
|
|
8
|
+
*
|
|
9
|
+
* @public
|
|
10
|
+
* @param app - The LoopBack application
|
|
11
|
+
* @param transport - Transport name (e.g. `'kafka'`, `'rabbitmq'`)
|
|
12
|
+
* @param instance - A concrete transport server instance
|
|
13
|
+
* @returns The created binding.
|
|
14
|
+
*/
|
|
15
|
+
export declare function registerServer(app: Application, transport: string, instance: TransportServer): Binding<TransportServer>;
|
|
16
|
+
/**
|
|
17
|
+
* Register a transport server class with the IoC container.
|
|
18
|
+
*
|
|
19
|
+
* The class is instantiated by the container, enabling constructor
|
|
20
|
+
* injection of config, clients, health checks, and other dependencies.
|
|
21
|
+
* This is the recommended registration method for transport adapters.
|
|
22
|
+
*
|
|
23
|
+
* @public
|
|
24
|
+
* @param app - The LoopBack application
|
|
25
|
+
* @param transport - Transport name (e.g. `'kafka'`, `'rabbitmq'`)
|
|
26
|
+
* @param serverClass - A transport server class constructor
|
|
27
|
+
* @returns The created binding.
|
|
28
|
+
*/
|
|
29
|
+
export declare function registerServerClass(app: Application, transport: string, serverClass: Constructor<TransportServer>): Binding<TransportServer>;
|
|
30
|
+
/**
|
|
31
|
+
* Register a transport server provider.
|
|
32
|
+
*
|
|
33
|
+
* Providers enable async factory patterns with full DI support. Use
|
|
34
|
+
* when server construction requires async initialization or complex
|
|
35
|
+
* setup logic. The binding is singleton-scoped so every resolution
|
|
36
|
+
* returns the same server instance.
|
|
37
|
+
*
|
|
38
|
+
* @public
|
|
39
|
+
* @param app - The LoopBack application
|
|
40
|
+
* @param transport - Transport name (e.g. `'kafka'`, `'rabbitmq'`)
|
|
41
|
+
* @param serverProvider - A provider class that produces a {@link TransportServer}
|
|
42
|
+
* @returns The created binding.
|
|
43
|
+
*/
|
|
44
|
+
export declare function registerServerProvider(app: Application, transport: string, serverProvider: Constructor<Provider<TransportServer>>): Binding<TransportServer>;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerServer = registerServer;
|
|
4
|
+
exports.registerServerClass = registerServerClass;
|
|
5
|
+
exports.registerServerProvider = registerServerProvider;
|
|
6
|
+
const core_1 = require("@loopback/core");
|
|
7
|
+
const keys_1 = require("../keys");
|
|
8
|
+
/**
|
|
9
|
+
* Tag a transport server binding for booter discovery.
|
|
10
|
+
*
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
function tagServerBinding(binding, transport) {
|
|
14
|
+
return binding
|
|
15
|
+
.tag(keys_1.TRANSPORT_SERVER_TAG)
|
|
16
|
+
.tag({ [keys_1.TRANSPORT_NAME_TAG]: transport });
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Register a concrete transport server instance.
|
|
20
|
+
*
|
|
21
|
+
* Use when the server is already constructed (for example in tests or
|
|
22
|
+
* when no DI is needed).
|
|
23
|
+
*
|
|
24
|
+
* @public
|
|
25
|
+
* @param app - The LoopBack application
|
|
26
|
+
* @param transport - Transport name (e.g. `'kafka'`, `'rabbitmq'`)
|
|
27
|
+
* @param instance - A concrete transport server instance
|
|
28
|
+
* @returns The created binding.
|
|
29
|
+
*/
|
|
30
|
+
function registerServer(app, transport, instance) {
|
|
31
|
+
return tagServerBinding(app.bind(keys_1.TransportBindings.server(transport)).to(instance), transport);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Register a transport server class with the IoC container.
|
|
35
|
+
*
|
|
36
|
+
* The class is instantiated by the container, enabling constructor
|
|
37
|
+
* injection of config, clients, health checks, and other dependencies.
|
|
38
|
+
* This is the recommended registration method for transport adapters.
|
|
39
|
+
*
|
|
40
|
+
* @public
|
|
41
|
+
* @param app - The LoopBack application
|
|
42
|
+
* @param transport - Transport name (e.g. `'kafka'`, `'rabbitmq'`)
|
|
43
|
+
* @param serverClass - A transport server class constructor
|
|
44
|
+
* @returns The created binding.
|
|
45
|
+
*/
|
|
46
|
+
function registerServerClass(app, transport, serverClass) {
|
|
47
|
+
return tagServerBinding(app
|
|
48
|
+
.bind(keys_1.TransportBindings.server(transport))
|
|
49
|
+
.toClass(serverClass)
|
|
50
|
+
.inScope(core_1.BindingScope.SINGLETON), transport);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Register a transport server provider.
|
|
54
|
+
*
|
|
55
|
+
* Providers enable async factory patterns with full DI support. Use
|
|
56
|
+
* when server construction requires async initialization or complex
|
|
57
|
+
* setup logic. The binding is singleton-scoped so every resolution
|
|
58
|
+
* returns the same server instance.
|
|
59
|
+
*
|
|
60
|
+
* @public
|
|
61
|
+
* @param app - The LoopBack application
|
|
62
|
+
* @param transport - Transport name (e.g. `'kafka'`, `'rabbitmq'`)
|
|
63
|
+
* @param serverProvider - A provider class that produces a {@link TransportServer}
|
|
64
|
+
* @returns The created binding.
|
|
65
|
+
*/
|
|
66
|
+
function registerServerProvider(app, transport, serverProvider) {
|
|
67
|
+
return tagServerBinding(app
|
|
68
|
+
.bind(keys_1.TransportBindings.server(transport))
|
|
69
|
+
.toProvider(serverProvider)
|
|
70
|
+
.inScope(core_1.BindingScope.SINGLETON), transport);
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=register-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-server.js","sourceRoot":"","sources":["../../src/helpers/register-server.ts"],"names":[],"mappings":";;AAmCA,wCASC;AAeD,kDAYC;AAgBD,wDAYC;AAlGD,yCAA4C;AAE5C,kCAIiB;AAEjB;;;;GAIG;AACH,SAAS,gBAAgB,CACvB,OAAiC,EACjC,SAAiB;IAEjB,OAAO,OAAO;SACX,GAAG,CAAC,2BAAoB,CAAC;SACzB,GAAG,CAAC,EAAC,CAAC,yBAAkB,CAAC,EAAE,SAAS,EAAC,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,cAAc,CAC5B,GAAgB,EAChB,SAAiB,EACjB,QAAyB;IAEzB,OAAO,gBAAgB,CACrB,GAAG,CAAC,IAAI,CAAC,wBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAC1D,SAAS,CACV,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,mBAAmB,CACjC,GAAgB,EAChB,SAAiB,EACjB,WAAyC;IAEzC,OAAO,gBAAgB,CACrB,GAAG;SACA,IAAI,CAAC,wBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACzC,OAAO,CAAC,WAAW,CAAC;SACpB,OAAO,CAAC,mBAAY,CAAC,SAAS,CAAC,EAClC,SAAS,CACV,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,sBAAsB,CACpC,GAAgB,EAChB,SAAiB,EACjB,cAAsD;IAEtD,OAAO,gBAAgB,CACrB,GAAG;SACA,IAAI,CAAC,wBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACzC,UAAU,CAAC,cAAc,CAAC;SAC1B,OAAO,CAAC,mBAAY,CAAC,SAAS,CAAC,EAClC,SAAS,CACV,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
export { TransportComponent } from './transport.component';
|
|
2
|
-
export { TransportBooter } from './transport
|
|
3
|
-
export {
|
|
2
|
+
export { TransportBooter } from './transport.observer';
|
|
3
|
+
export { DESERIALIZER_TAG, HANDLER_DISCOVERER_TAG, SERIALIZER_TAG, TransportBindings, TRANSPORT_NAME_TAG, TRANSPORT_SERVER_TAG, } from './keys';
|
|
4
|
+
export { registerServer, registerServerClass, registerServerProvider, } from './helpers/register-server';
|
|
5
|
+
export { TransportConfigError, TransportError, TransportPatternError, TransportSerializationError, TransportTimeoutError, } from './helpers/errors';
|
|
4
6
|
export { HandlerRegistry } from './registry';
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
7
|
+
export { DiscoveryService, EventHandlerDiscoverer, HANDLER_KIND_EVENT, HANDLER_KIND_REQUEST, MessageHandlerDiscoverer, } from './discovery';
|
|
8
|
+
export type { DiscoveredHandler, HandlerDiscoverer, HandlerKind, RegisteredHandler, } from './discovery';
|
|
9
|
+
export type { IncomingEvent, IncomingRequest, IncomingResponse, MessageHandler, OutgoingEvent, OutgoingRequest, PacketId, ReadPacket, TransportClient, TransportServer, TransportStatus, WritePacket, } from './interfaces';
|
|
10
|
+
export { ExecutionContext } from './context';
|
|
11
|
+
export type { ContextType, ControllerClass, EventContext, HandlerFunction, HttpContext, RpcContext, } from './context';
|
|
12
|
+
export { EVENT_HANDLER_METADATA, MESSAGE_HANDLER_METADATA, eventHandler, messageHandler, payload, transportCtx, } from './decorators';
|
|
13
|
+
export type { EventHandlerMetadata, HandlerOptions, MessageHandlerMetadata, } from './decorators';
|
|
8
14
|
export { normalizePattern } from './utils';
|
|
9
15
|
export { ClientProxy } from './client';
|
|
10
|
-
export { ServerBase
|
|
11
|
-
export {
|
|
16
|
+
export { ServerBase } from './server';
|
|
17
|
+
export type { HandlerResult } from './server';
|
|
18
|
+
export { CloudEventsDeserializer, CloudEventsSerializer, JsonDeserializer, JsonSerializer, } from './serializers';
|
|
19
|
+
export type { CloudEventsSerializerOptions, Deserializer, Serializer, TransportPacket, } from './serializers';
|
package/dist/index.js
CHANGED
|
@@ -1,31 +1,53 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.JsonDeserializer = exports.
|
|
3
|
+
exports.JsonSerializer = exports.JsonDeserializer = exports.CloudEventsSerializer = exports.CloudEventsDeserializer = exports.ServerBase = exports.ClientProxy = exports.normalizePattern = exports.transportCtx = exports.payload = exports.messageHandler = exports.eventHandler = exports.MESSAGE_HANDLER_METADATA = exports.EVENT_HANDLER_METADATA = exports.ExecutionContext = exports.MessageHandlerDiscoverer = exports.HANDLER_KIND_REQUEST = exports.HANDLER_KIND_EVENT = exports.EventHandlerDiscoverer = exports.DiscoveryService = exports.HandlerRegistry = exports.TransportTimeoutError = exports.TransportSerializationError = exports.TransportPatternError = exports.TransportError = exports.TransportConfigError = exports.registerServerProvider = exports.registerServerClass = exports.registerServer = exports.TRANSPORT_SERVER_TAG = exports.TRANSPORT_NAME_TAG = exports.TransportBindings = exports.SERIALIZER_TAG = exports.HANDLER_DISCOVERER_TAG = exports.DESERIALIZER_TAG = exports.TransportBooter = exports.TransportComponent = void 0;
|
|
4
4
|
// Component
|
|
5
5
|
var transport_component_1 = require("./transport.component");
|
|
6
6
|
Object.defineProperty(exports, "TransportComponent", { enumerable: true, get: function () { return transport_component_1.TransportComponent; } });
|
|
7
|
-
//
|
|
8
|
-
var
|
|
9
|
-
Object.defineProperty(exports, "TransportBooter", { enumerable: true, get: function () { return
|
|
7
|
+
// Lifecycle observer (was: transport-booter)
|
|
8
|
+
var transport_observer_1 = require("./transport.observer");
|
|
9
|
+
Object.defineProperty(exports, "TransportBooter", { enumerable: true, get: function () { return transport_observer_1.TransportBooter; } });
|
|
10
10
|
// Binding keys and tags
|
|
11
11
|
var keys_1 = require("./keys");
|
|
12
|
+
Object.defineProperty(exports, "DESERIALIZER_TAG", { enumerable: true, get: function () { return keys_1.DESERIALIZER_TAG; } });
|
|
13
|
+
Object.defineProperty(exports, "HANDLER_DISCOVERER_TAG", { enumerable: true, get: function () { return keys_1.HANDLER_DISCOVERER_TAG; } });
|
|
14
|
+
Object.defineProperty(exports, "SERIALIZER_TAG", { enumerable: true, get: function () { return keys_1.SERIALIZER_TAG; } });
|
|
12
15
|
Object.defineProperty(exports, "TransportBindings", { enumerable: true, get: function () { return keys_1.TransportBindings; } });
|
|
13
|
-
Object.defineProperty(exports, "TRANSPORT_SERVER_TAG", { enumerable: true, get: function () { return keys_1.TRANSPORT_SERVER_TAG; } });
|
|
14
16
|
Object.defineProperty(exports, "TRANSPORT_NAME_TAG", { enumerable: true, get: function () { return keys_1.TRANSPORT_NAME_TAG; } });
|
|
17
|
+
Object.defineProperty(exports, "TRANSPORT_SERVER_TAG", { enumerable: true, get: function () { return keys_1.TRANSPORT_SERVER_TAG; } });
|
|
18
|
+
// Server registration helpers
|
|
19
|
+
var register_server_1 = require("./helpers/register-server");
|
|
20
|
+
Object.defineProperty(exports, "registerServer", { enumerable: true, get: function () { return register_server_1.registerServer; } });
|
|
21
|
+
Object.defineProperty(exports, "registerServerClass", { enumerable: true, get: function () { return register_server_1.registerServerClass; } });
|
|
22
|
+
Object.defineProperty(exports, "registerServerProvider", { enumerable: true, get: function () { return register_server_1.registerServerProvider; } });
|
|
23
|
+
// Typed errors
|
|
24
|
+
var errors_1 = require("./helpers/errors");
|
|
25
|
+
Object.defineProperty(exports, "TransportConfigError", { enumerable: true, get: function () { return errors_1.TransportConfigError; } });
|
|
26
|
+
Object.defineProperty(exports, "TransportError", { enumerable: true, get: function () { return errors_1.TransportError; } });
|
|
27
|
+
Object.defineProperty(exports, "TransportPatternError", { enumerable: true, get: function () { return errors_1.TransportPatternError; } });
|
|
28
|
+
Object.defineProperty(exports, "TransportSerializationError", { enumerable: true, get: function () { return errors_1.TransportSerializationError; } });
|
|
29
|
+
Object.defineProperty(exports, "TransportTimeoutError", { enumerable: true, get: function () { return errors_1.TransportTimeoutError; } });
|
|
15
30
|
// Registry
|
|
16
31
|
var registry_1 = require("./registry");
|
|
17
32
|
Object.defineProperty(exports, "HandlerRegistry", { enumerable: true, get: function () { return registry_1.HandlerRegistry; } });
|
|
33
|
+
// Handler discovery extension point
|
|
34
|
+
var discovery_1 = require("./discovery");
|
|
35
|
+
Object.defineProperty(exports, "DiscoveryService", { enumerable: true, get: function () { return discovery_1.DiscoveryService; } });
|
|
36
|
+
Object.defineProperty(exports, "EventHandlerDiscoverer", { enumerable: true, get: function () { return discovery_1.EventHandlerDiscoverer; } });
|
|
37
|
+
Object.defineProperty(exports, "HANDLER_KIND_EVENT", { enumerable: true, get: function () { return discovery_1.HANDLER_KIND_EVENT; } });
|
|
38
|
+
Object.defineProperty(exports, "HANDLER_KIND_REQUEST", { enumerable: true, get: function () { return discovery_1.HANDLER_KIND_REQUEST; } });
|
|
39
|
+
Object.defineProperty(exports, "MessageHandlerDiscoverer", { enumerable: true, get: function () { return discovery_1.MessageHandlerDiscoverer; } });
|
|
18
40
|
// Context
|
|
19
41
|
var context_1 = require("./context");
|
|
20
42
|
Object.defineProperty(exports, "ExecutionContext", { enumerable: true, get: function () { return context_1.ExecutionContext; } });
|
|
21
43
|
// Decorators
|
|
22
44
|
var decorators_1 = require("./decorators");
|
|
23
|
-
Object.defineProperty(exports, "
|
|
45
|
+
Object.defineProperty(exports, "EVENT_HANDLER_METADATA", { enumerable: true, get: function () { return decorators_1.EVENT_HANDLER_METADATA; } });
|
|
46
|
+
Object.defineProperty(exports, "MESSAGE_HANDLER_METADATA", { enumerable: true, get: function () { return decorators_1.MESSAGE_HANDLER_METADATA; } });
|
|
24
47
|
Object.defineProperty(exports, "eventHandler", { enumerable: true, get: function () { return decorators_1.eventHandler; } });
|
|
48
|
+
Object.defineProperty(exports, "messageHandler", { enumerable: true, get: function () { return decorators_1.messageHandler; } });
|
|
25
49
|
Object.defineProperty(exports, "payload", { enumerable: true, get: function () { return decorators_1.payload; } });
|
|
26
50
|
Object.defineProperty(exports, "transportCtx", { enumerable: true, get: function () { return decorators_1.transportCtx; } });
|
|
27
|
-
Object.defineProperty(exports, "MESSAGE_HANDLER_METADATA", { enumerable: true, get: function () { return decorators_1.MESSAGE_HANDLER_METADATA; } });
|
|
28
|
-
Object.defineProperty(exports, "EVENT_HANDLER_METADATA", { enumerable: true, get: function () { return decorators_1.EVENT_HANDLER_METADATA; } });
|
|
29
51
|
// Utils
|
|
30
52
|
var utils_1 = require("./utils");
|
|
31
53
|
Object.defineProperty(exports, "normalizePattern", { enumerable: true, get: function () { return utils_1.normalizePattern; } });
|
|
@@ -37,6 +59,8 @@ var server_1 = require("./server");
|
|
|
37
59
|
Object.defineProperty(exports, "ServerBase", { enumerable: true, get: function () { return server_1.ServerBase; } });
|
|
38
60
|
// Serializers
|
|
39
61
|
var serializers_1 = require("./serializers");
|
|
40
|
-
Object.defineProperty(exports, "
|
|
62
|
+
Object.defineProperty(exports, "CloudEventsDeserializer", { enumerable: true, get: function () { return serializers_1.CloudEventsDeserializer; } });
|
|
63
|
+
Object.defineProperty(exports, "CloudEventsSerializer", { enumerable: true, get: function () { return serializers_1.CloudEventsSerializer; } });
|
|
41
64
|
Object.defineProperty(exports, "JsonDeserializer", { enumerable: true, get: function () { return serializers_1.JsonDeserializer; } });
|
|
65
|
+
Object.defineProperty(exports, "JsonSerializer", { enumerable: true, get: function () { return serializers_1.JsonSerializer; } });
|
|
42
66
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,YAAY;AACZ,6DAAyD;AAAjD,yHAAA,kBAAkB,OAAA;AAE1B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,YAAY;AACZ,6DAAyD;AAAjD,yHAAA,kBAAkB,OAAA;AAE1B,6CAA6C;AAC7C,2DAAqD;AAA7C,qHAAA,eAAe,OAAA;AAEvB,wBAAwB;AACxB,+BAOgB;AANd,wGAAA,gBAAgB,OAAA;AAChB,8GAAA,sBAAsB,OAAA;AACtB,sGAAA,cAAc,OAAA;AACd,yGAAA,iBAAiB,OAAA;AACjB,0GAAA,kBAAkB,OAAA;AAClB,4GAAA,oBAAoB,OAAA;AAGtB,8BAA8B;AAC9B,6DAImC;AAHjC,iHAAA,cAAc,OAAA;AACd,sHAAA,mBAAmB,OAAA;AACnB,yHAAA,sBAAsB,OAAA;AAGxB,eAAe;AACf,2CAM0B;AALxB,8GAAA,oBAAoB,OAAA;AACpB,wGAAA,cAAc,OAAA;AACd,+GAAA,qBAAqB,OAAA;AACrB,qHAAA,2BAA2B,OAAA;AAC3B,+GAAA,qBAAqB,OAAA;AAGvB,WAAW;AACX,uCAA2C;AAAnC,2GAAA,eAAe,OAAA;AAEvB,oCAAoC;AACpC,yCAMqB;AALnB,6GAAA,gBAAgB,OAAA;AAChB,mHAAA,sBAAsB,OAAA;AACtB,+GAAA,kBAAkB,OAAA;AAClB,iHAAA,oBAAoB,OAAA;AACpB,qHAAA,wBAAwB,OAAA;AAyB1B,UAAU;AACV,qCAA2C;AAAnC,2GAAA,gBAAgB,OAAA;AAUxB,aAAa;AACb,2CAOsB;AANpB,oHAAA,sBAAsB,OAAA;AACtB,sHAAA,wBAAwB,OAAA;AACxB,0GAAA,YAAY,OAAA;AACZ,4GAAA,cAAc,OAAA;AACd,qGAAA,OAAO,OAAA;AACP,0GAAA,YAAY,OAAA;AAQd,QAAQ;AACR,iCAAyC;AAAjC,yGAAA,gBAAgB,OAAA;AAExB,SAAS;AACT,mCAAqC;AAA7B,qGAAA,WAAW,OAAA;AAEnB,SAAS;AACT,mCAAoC;AAA5B,oGAAA,UAAU,OAAA;AAGlB,cAAc;AACd,6CAKuB;AAJrB,sHAAA,uBAAuB,OAAA;AACvB,oHAAA,qBAAqB,OAAA;AACrB,+GAAA,gBAAgB,OAAA;AAChB,6GAAA,cAAc,OAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
1
|
+
export type { IncomingEvent, IncomingRequest, IncomingResponse, OutgoingEvent, OutgoingRequest, PacketId, ReadPacket, WritePacket, } from './packet.interface';
|
|
2
|
+
export type { TransportServer, TransportStatus, } from './transport-server.interface';
|
|
3
|
+
export type { TransportClient } from './transport-client.interface';
|
|
4
|
+
export type { MessageHandler } from './message-handler.interface';
|
package/dist/interfaces/index.js
CHANGED
|
@@ -1,21 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./packet.interface"), exports);
|
|
18
|
-
__exportStar(require("./transport-server.interface"), exports);
|
|
19
|
-
__exportStar(require("./transport-client.interface"), exports);
|
|
20
|
-
__exportStar(require("./message-handler.interface"), exports);
|
|
21
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":""}
|
|
@@ -1,21 +1,27 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
1
|
+
import type { Observable } from 'rxjs';
|
|
2
2
|
/**
|
|
3
3
|
* Function that handles an incoming message.
|
|
4
|
+
*
|
|
5
|
+
* @public
|
|
6
|
+
* @typeParam TInput - Payload shape passed to the handler.
|
|
7
|
+
* @typeParam TContext - Transport-specific context shape.
|
|
8
|
+
* @typeParam TResult - Handler return shape.
|
|
4
9
|
*/
|
|
5
10
|
export interface MessageHandler<TInput = unknown, TContext = unknown, TResult = unknown> {
|
|
6
11
|
(data: TInput, ctx?: TContext): Promise<TResult> | Promise<Observable<TResult>> | TResult | Observable<TResult>;
|
|
7
12
|
/**
|
|
8
|
-
*
|
|
13
|
+
* `true` for `@eventHandler`, `false` for `@messageHandler`.
|
|
9
14
|
*/
|
|
10
15
|
isEventHandler?: boolean;
|
|
11
16
|
/**
|
|
12
|
-
* Target transport name (e.g
|
|
13
|
-
*
|
|
17
|
+
* Target transport name (e.g. `'kafka'`, `'rabbitmq'`). First-class
|
|
18
|
+
* property for routing, not buried in `extras`.
|
|
14
19
|
*/
|
|
15
20
|
transport?: string;
|
|
16
21
|
/**
|
|
17
|
-
* Transport-specific metadata (e.g
|
|
18
|
-
* Does not contain framework routing metadata
|
|
22
|
+
* Transport-specific metadata (e.g. QoS for MQTT, consumer group for
|
|
23
|
+
* Kafka). Does not contain framework routing metadata — use the
|
|
24
|
+
* `transport` field instead.
|
|
19
25
|
*/
|
|
20
26
|
extras?: Readonly<Record<string, unknown>>;
|
|
21
27
|
}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Unique identifier for correlating request/response messages.
|
|
3
|
+
*
|
|
4
|
+
* @public
|
|
3
5
|
*/
|
|
4
6
|
export interface PacketId {
|
|
5
7
|
id: string;
|
|
6
8
|
}
|
|
7
9
|
/**
|
|
8
|
-
* Inbound message envelope. Used for both requests and events.
|
|
9
|
-
*
|
|
10
|
+
* Inbound message envelope. Used for both requests and events. Events
|
|
11
|
+
* omit the `id` field.
|
|
12
|
+
*
|
|
13
|
+
* @public
|
|
14
|
+
* @typeParam T - Payload shape.
|
|
10
15
|
*/
|
|
11
16
|
export interface ReadPacket<T = unknown> {
|
|
12
17
|
pattern: string;
|
|
@@ -14,6 +19,9 @@ export interface ReadPacket<T = unknown> {
|
|
|
14
19
|
}
|
|
15
20
|
/**
|
|
16
21
|
* Outbound response envelope. Sent back for request/response patterns.
|
|
22
|
+
*
|
|
23
|
+
* @public
|
|
24
|
+
* @typeParam T - Response value shape.
|
|
17
25
|
*/
|
|
18
26
|
export interface WritePacket<T = unknown> {
|
|
19
27
|
err?: Error | string | Record<string, unknown>;
|
|
@@ -22,21 +30,31 @@ export interface WritePacket<T = unknown> {
|
|
|
22
30
|
}
|
|
23
31
|
/**
|
|
24
32
|
* A request with a correlation ID for response matching.
|
|
33
|
+
*
|
|
34
|
+
* @public
|
|
25
35
|
*/
|
|
26
36
|
export type OutgoingRequest = ReadPacket & PacketId;
|
|
27
37
|
/**
|
|
28
38
|
* An event with no correlation ID (fire-and-forget).
|
|
39
|
+
*
|
|
40
|
+
* @public
|
|
29
41
|
*/
|
|
30
42
|
export type OutgoingEvent = ReadPacket;
|
|
31
43
|
/**
|
|
32
44
|
* Server receives a request with correlation ID.
|
|
45
|
+
*
|
|
46
|
+
* @public
|
|
33
47
|
*/
|
|
34
48
|
export type IncomingRequest = ReadPacket & PacketId;
|
|
35
49
|
/**
|
|
36
50
|
* Server receives an event (no correlation).
|
|
51
|
+
*
|
|
52
|
+
* @public
|
|
37
53
|
*/
|
|
38
54
|
export type IncomingEvent = ReadPacket;
|
|
39
55
|
/**
|
|
40
56
|
* Response correlated to a request by ID.
|
|
57
|
+
*
|
|
58
|
+
* @public
|
|
41
59
|
*/
|
|
42
60
|
export type IncomingResponse = WritePacket & PacketId;
|
|
@@ -1,33 +1,43 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
2
|
-
import { TransportStatus } from './transport-server.interface';
|
|
1
|
+
import type { Observable } from 'rxjs';
|
|
2
|
+
import type { TransportStatus } from './transport-server.interface';
|
|
3
3
|
/**
|
|
4
|
-
* Interface that all transport clients must implement.
|
|
5
|
-
*
|
|
4
|
+
* Interface that all transport clients must implement. Used for
|
|
5
|
+
* sending messages to brokers (producer side).
|
|
6
|
+
*
|
|
7
|
+
* @public
|
|
6
8
|
*/
|
|
7
9
|
export interface TransportClient {
|
|
8
10
|
/**
|
|
9
|
-
* Establish connection to the broker.
|
|
10
|
-
*
|
|
11
|
+
* Establish connection to the broker. Called lazily on first
|
|
12
|
+
* send/emit, or explicitly for eager connection.
|
|
13
|
+
*
|
|
14
|
+
* @returns Resolves when the connection is healthy.
|
|
11
15
|
*/
|
|
12
16
|
connect(): Promise<void>;
|
|
13
17
|
/**
|
|
14
18
|
* Close the connection.
|
|
19
|
+
*
|
|
20
|
+
* @returns Resolves once the connection has been torn down.
|
|
15
21
|
*/
|
|
16
22
|
close(): Promise<void>;
|
|
17
23
|
/**
|
|
18
|
-
* Send a request and wait for a response (request/response
|
|
19
|
-
* Returns a cold Observable: the message is sent when
|
|
24
|
+
* Send a request and wait for a response (request/response
|
|
25
|
+
* pattern). Returns a cold Observable: the message is sent when
|
|
26
|
+
* subscribed.
|
|
20
27
|
*
|
|
21
|
-
* @
|
|
22
|
-
* @
|
|
28
|
+
* @typeParam TResult - Expected response shape.
|
|
29
|
+
* @typeParam TInput - Caller-provided payload shape.
|
|
30
|
+
* @param pattern - String or object pattern to match on the server side.
|
|
31
|
+
* @param data - The message payload.
|
|
23
32
|
*/
|
|
24
33
|
send<TResult = unknown, TInput = unknown>(pattern: string | Record<string, unknown>, data: TInput): Observable<TResult>;
|
|
25
34
|
/**
|
|
26
35
|
* Emit an event with no response expected (fire-and-forget pattern).
|
|
27
36
|
* Returns a Promise that resolves when the event is dispatched.
|
|
28
37
|
*
|
|
29
|
-
* @
|
|
30
|
-
* @param
|
|
38
|
+
* @typeParam TInput - Caller-provided payload shape.
|
|
39
|
+
* @param pattern - String or object event pattern.
|
|
40
|
+
* @param data - The event payload.
|
|
31
41
|
*/
|
|
32
42
|
emit<TInput = unknown>(pattern: string | Record<string, unknown>, data: TInput): Promise<void>;
|
|
33
43
|
/**
|
|
@@ -35,7 +45,9 @@ export interface TransportClient {
|
|
|
35
45
|
*/
|
|
36
46
|
readonly status$: Observable<TransportStatus>;
|
|
37
47
|
/**
|
|
38
|
-
* Access the underlying native client (e.g
|
|
48
|
+
* Access the underlying native client (e.g. a KafkaJS `Producer`).
|
|
49
|
+
*
|
|
50
|
+
* @typeParam T - Caller-asserted native client shape.
|
|
39
51
|
*/
|
|
40
52
|
unwrap<T>(): T;
|
|
41
53
|
}
|