@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.
Files changed (105) hide show
  1. package/README.md +442 -35
  2. package/dist/client/client-proxy.d.ts +73 -42
  3. package/dist/client/client-proxy.js +71 -42
  4. package/dist/client/client-proxy.js.map +1 -1
  5. package/dist/client/index.d.ts +1 -1
  6. package/dist/client/index.js +3 -15
  7. package/dist/client/index.js.map +1 -1
  8. package/dist/context/execution-context.d.ts +58 -11
  9. package/dist/context/execution-context.js +62 -17
  10. package/dist/context/execution-context.js.map +1 -1
  11. package/dist/context/index.d.ts +2 -1
  12. package/dist/context/index.js +3 -15
  13. package/dist/context/index.js.map +1 -1
  14. package/dist/decorators/constants.d.ts +20 -10
  15. package/dist/decorators/constants.js +6 -2
  16. package/dist/decorators/constants.js.map +1 -1
  17. package/dist/decorators/event-handler.decorator.d.ts +10 -7
  18. package/dist/decorators/event-handler.decorator.js +18 -13
  19. package/dist/decorators/event-handler.decorator.js.map +1 -1
  20. package/dist/decorators/index.d.ts +5 -4
  21. package/dist/decorators/index.js +11 -18
  22. package/dist/decorators/index.js.map +1 -1
  23. package/dist/decorators/message-handler.decorator.d.ts +8 -5
  24. package/dist/decorators/message-handler.decorator.js +16 -11
  25. package/dist/decorators/message-handler.decorator.js.map +1 -1
  26. package/dist/decorators/payload.decorator.d.ts +16 -7
  27. package/dist/decorators/payload.decorator.js +16 -8
  28. package/dist/decorators/payload.decorator.js.map +1 -1
  29. package/dist/discovery/discovery.service.d.ts +143 -0
  30. package/dist/discovery/discovery.service.js +165 -0
  31. package/dist/discovery/discovery.service.js.map +1 -0
  32. package/dist/discovery/event-handler-discoverer.d.ts +19 -0
  33. package/dist/discovery/event-handler-discoverer.js +50 -0
  34. package/dist/discovery/event-handler-discoverer.js.map +1 -0
  35. package/dist/discovery/handler-discoverer.d.ts +48 -0
  36. package/dist/discovery/handler-discoverer.js +3 -0
  37. package/dist/discovery/handler-discoverer.js.map +1 -0
  38. package/dist/discovery/handler-kind.d.ts +23 -0
  39. package/dist/discovery/handler-kind.js +14 -0
  40. package/dist/discovery/handler-kind.js.map +1 -0
  41. package/dist/discovery/index.d.ts +7 -0
  42. package/dist/discovery/index.js +13 -0
  43. package/dist/discovery/index.js.map +1 -0
  44. package/dist/discovery/message-handler-discoverer.d.ts +19 -0
  45. package/dist/discovery/message-handler-discoverer.js +50 -0
  46. package/dist/discovery/message-handler-discoverer.js.map +1 -0
  47. package/dist/discovery/registered-handler.d.ts +35 -0
  48. package/dist/discovery/registered-handler.js +3 -0
  49. package/dist/discovery/registered-handler.js.map +1 -0
  50. package/dist/helpers/errors.d.ts +61 -0
  51. package/dist/helpers/errors.js +80 -0
  52. package/dist/helpers/errors.js.map +1 -0
  53. package/dist/helpers/index.d.ts +2 -0
  54. package/dist/helpers/index.js +14 -0
  55. package/dist/helpers/index.js.map +1 -0
  56. package/dist/helpers/register-server.d.ts +44 -0
  57. package/dist/helpers/register-server.js +72 -0
  58. package/dist/helpers/register-server.js.map +1 -0
  59. package/dist/index.d.ts +15 -7
  60. package/dist/index.js +33 -9
  61. package/dist/index.js.map +1 -1
  62. package/dist/interfaces/index.d.ts +4 -4
  63. package/dist/interfaces/index.js +0 -18
  64. package/dist/interfaces/index.js.map +1 -1
  65. package/dist/interfaces/message-handler.interface.d.ts +12 -6
  66. package/dist/interfaces/packet.interface.d.ts +20 -2
  67. package/dist/interfaces/transport-client.interface.d.ts +25 -13
  68. package/dist/interfaces/transport-server.interface.d.ts +36 -10
  69. package/dist/keys.d.ts +132 -46
  70. package/dist/keys.js +131 -68
  71. package/dist/keys.js.map +1 -1
  72. package/dist/registry/handler-registry.d.ts +94 -24
  73. package/dist/registry/handler-registry.js +195 -89
  74. package/dist/registry/handler-registry.js.map +1 -1
  75. package/dist/registry/index.d.ts +1 -1
  76. package/dist/registry/index.js +3 -15
  77. package/dist/registry/index.js.map +1 -1
  78. package/dist/serializers/cloudevents-serializer.d.ts +107 -0
  79. package/dist/serializers/cloudevents-serializer.js +130 -0
  80. package/dist/serializers/cloudevents-serializer.js.map +1 -0
  81. package/dist/serializers/index.d.ts +4 -1
  82. package/dist/serializers/index.js +7 -15
  83. package/dist/serializers/index.js.map +1 -1
  84. package/dist/serializers/serializer.interface.d.ts +49 -16
  85. package/dist/serializers/serializer.interface.js +41 -15
  86. package/dist/serializers/serializer.interface.js.map +1 -1
  87. package/dist/server/index.d.ts +2 -1
  88. package/dist/server/index.js +3 -15
  89. package/dist/server/index.js.map +1 -1
  90. package/dist/server/server-base.d.ts +125 -52
  91. package/dist/server/server-base.js +168 -57
  92. package/dist/server/server-base.js.map +1 -1
  93. package/dist/transport.component.d.ts +21 -8
  94. package/dist/transport.component.js +40 -18
  95. package/dist/transport.component.js.map +1 -1
  96. package/dist/transport.observer.d.ts +87 -0
  97. package/dist/transport.observer.js +296 -0
  98. package/dist/transport.observer.js.map +1 -0
  99. package/dist/utils/normalize-pattern.d.ts +11 -6
  100. package/dist/utils/normalize-pattern.js +18 -13
  101. package/dist/utils/normalize-pattern.js.map +1 -1
  102. package/package.json +58 -16
  103. package/dist/transport-booter.d.ts +0 -31
  104. package/dist/transport-booter.js +0 -117
  105. 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,2 @@
1
+ export { TransportError, TransportConfigError, TransportPatternError, TransportSerializationError, TransportTimeoutError, } from './errors';
2
+ export { registerServer, registerServerClass, registerServerProvider, } from './register-server';
@@ -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-booter';
3
- export { TransportBindings, TRANSPORT_SERVER_TAG, TRANSPORT_NAME_TAG, } from './keys';
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 { PacketId, ReadPacket, WritePacket, OutgoingRequest, OutgoingEvent, IncomingRequest, IncomingEvent, IncomingResponse, TransportServer, TransportClient, TransportStatus, MessageHandler, } from './interfaces';
6
- export { ExecutionContext, ContextType, HttpContext, RpcContext, EventContext, } from './context';
7
- export { messageHandler, eventHandler, payload, transportCtx, HandlerOptions, MessageHandlerMetadata, EventHandlerMetadata, MESSAGE_HANDLER_METADATA, EVENT_HANDLER_METADATA, } from './decorators';
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, HandlerResult } from './server';
11
- export { Serializer, Deserializer, JsonSerializer, JsonDeserializer, TransportPacket, } from './serializers';
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.JsonSerializer = exports.ServerBase = exports.ClientProxy = exports.normalizePattern = exports.EVENT_HANDLER_METADATA = exports.MESSAGE_HANDLER_METADATA = exports.transportCtx = exports.payload = exports.eventHandler = exports.messageHandler = exports.ExecutionContext = exports.HandlerRegistry = exports.TRANSPORT_NAME_TAG = exports.TRANSPORT_SERVER_TAG = exports.TransportBindings = exports.TransportBooter = exports.TransportComponent = void 0;
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
- // Booter
8
- var transport_booter_1 = require("./transport-booter");
9
- Object.defineProperty(exports, "TransportBooter", { enumerable: true, get: function () { return transport_booter_1.TransportBooter; } });
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, "messageHandler", { enumerable: true, get: function () { return decorators_1.messageHandler; } });
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, "JsonSerializer", { enumerable: true, get: function () { return serializers_1.JsonSerializer; } });
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,SAAS;AACT,uDAAmD;AAA3C,mHAAA,eAAe,OAAA;AAEvB,wBAAwB;AACxB,+BAIgB;AAHd,yGAAA,iBAAiB,OAAA;AACjB,4GAAA,oBAAoB,OAAA;AACpB,0GAAA,kBAAkB,OAAA;AAGpB,WAAW;AACX,uCAA2C;AAAnC,2GAAA,eAAe,OAAA;AAkBvB,UAAU;AACV,qCAMmB;AALjB,2GAAA,gBAAgB,OAAA;AAOlB,aAAa;AACb,2CAUsB;AATpB,4GAAA,cAAc,OAAA;AACd,0GAAA,YAAY,OAAA;AACZ,qGAAA,OAAO,OAAA;AACP,0GAAA,YAAY,OAAA;AAIZ,sHAAA,wBAAwB,OAAA;AACxB,oHAAA,sBAAsB,OAAA;AAGxB,QAAQ;AACR,iCAAyC;AAAjC,yGAAA,gBAAgB,OAAA;AAExB,SAAS;AACT,mCAAqC;AAA7B,qGAAA,WAAW,OAAA;AAEnB,SAAS;AACT,mCAAmD;AAA3C,oGAAA,UAAU,OAAA;AAElB,cAAc;AACd,6CAMuB;AAHrB,6GAAA,cAAc,OAAA;AACd,+GAAA,gBAAgB,OAAA"}
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 * from './packet.interface';
2
- export * from './transport-server.interface';
3
- export * from './transport-client.interface';
4
- export * from './message-handler.interface';
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';
@@ -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":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,+DAA6C;AAC7C,+DAA6C;AAC7C,8DAA4C"}
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
- * True for @eventHandler, false for @messageHandler.
13
+ * `true` for `@eventHandler`, `false` for `@messageHandler`.
9
14
  */
10
15
  isEventHandler?: boolean;
11
16
  /**
12
- * Target transport name (e.g., 'kafka', 'rabbitmq').
13
- * First-class property for routing, not buried in extras.
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., QoS for MQTT, consumer group for Kafka).
18
- * Does not contain framework routing metadata (use transport field instead).
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
- * Events omit the id field.
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
- * Used for sending messages to brokers (producer side).
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
- * Called lazily on first send/emit, or explicitly for eager connection.
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 pattern).
19
- * Returns a cold Observable: the message is sent when subscribed.
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
- * @param pattern - String or object pattern to match on the server side
22
- * @param data - The message payload
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
- * @param pattern - String or object event pattern
30
- * @param data - The event payload
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., KafkaJS Producer).
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
  }