@tmorin/ceb-messaging-builder-inversion
Version:
The package is part of the `<ceb/>` library. It provides a builder to resolve and inject a bus from a container and then subscribe to event.
66 lines • 2.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.GatewayInversionBuilder = void 0;
const ceb_messaging_core_1 = require("@tmorin/ceb-messaging-core");
const ceb_messaging_builder_core_1 = require("@tmorin/ceb-messaging-builder-core");
/**
* The builder injects a {@link Gateway} in Custom Elements.
*
* @template E the type of the Custom Element
*/
class GatewayInversionBuilder extends ceb_messaging_builder_core_1.AbstractGatewayBuilder {
/**
* @internal
*/
constructor(_propName = "gateway", _key = ceb_messaging_core_1.GatewaySymbol, _provider) {
super(() => {
let _container;
if (_provider) {
_container = _provider();
}
else if (GatewayInversionBuilder.DEFAULT_CONTAINER) {
_container = GatewayInversionBuilder.DEFAULT_CONTAINER;
}
else {
throw new TypeError("GatewayInversionBuilder - unable to resolve a Container");
}
return _container.registry.resolve(_key);
}, _propName);
this._key = _key;
this._provider = _provider;
}
/**
* Set the default {@link Container}.
* @param container the container
* @internal
*/
static setDefaultContainer(container) {
GatewayInversionBuilder.DEFAULT_CONTAINER = container;
}
/**
* Provides a fresh builder.
* @param propName the property name
* @template E the type of the Custom Element
*/
static get(propName) {
return new GatewayInversionBuilder(propName);
}
/**
* Set the registry key.
* @param key the registry key
*/
key(key) {
this._key = key;
return this;
}
/**
* Set the Container provider.
* @param provider the provider
*/
provider(provider) {
this._provider = provider;
return this;
}
}
exports.GatewayInversionBuilder = GatewayInversionBuilder;
//# sourceMappingURL=builder.js.map