@kephas/core
Version:
Provides a common infrastructure for all the other Kephas Framework components: ambient services, dynamic reflection, composition, application management, and others.
35 lines • 7.62 kB
JavaScript
import { AppServiceInfo, AppServiceLifetime } from "./appServiceInfo";
import { AppServiceInfoRegistry } from "./appServiceInfoRegistry";
/**
* Marks a class as being contract for transient application services.
*
* @export
* @param {boolean} [allowMultiple=false] Indicates whether multiple services may be registered with the same contract or not.
* @param {AbstractType} [contractType] Indicates the contract type, if different from the decorated type.
* @param {*} [contractToken] Indicates the contract token, if different from the contract type.
*/
export function AppServiceContract({ allowMultiple = false, contractType, contractToken, registry, ...args } = {}) {
return (type) => {
contractType = contractType ? contractType : type;
contractToken = contractToken ? contractToken : contractType;
const appServiceInfo = new AppServiceInfo({ contractType, contractToken, allowMultiple, lifetime: AppServiceLifetime.Transient, ...args });
(registry || AppServiceInfoRegistry.Instance).registerServiceContract(type, appServiceInfo);
};
}
/**
* Marks a class as being contract for singleton application services.
*
* @export
* @param {boolean} [allowMultiple=false] Indicates whether multiple services may be registered with the same contract or not.
* @param {AbstractType} [contractType] Indicates the contract type, if different from the decorated type.
* @param {*} [contractToken] Indicates the contract token, if different from the contract type.
*/
export function SingletonAppServiceContract({ allowMultiple = false, contractType, contractToken, registry, ...args } = {}) {
return (type) => {
contractType = contractType ? contractType : type;
contractToken = contractToken ? contractToken : contractType;
const appServiceInfo = new AppServiceInfo({ contractType, contractToken, allowMultiple, lifetime: AppServiceLifetime.Singleton, ...args });
(registry || AppServiceInfoRegistry.Instance).registerServiceContract(type, appServiceInfo);
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwU2VydmljZUNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2VwaGFzL2NvcmUvc3JjL2xpYi9zZXJ2aWNlcy9hcHBTZXJ2aWNlQ29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWxFOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQzlCLEVBQ0ksYUFBYSxHQUFHLEtBQUssRUFDckIsWUFBWSxFQUNaLGFBQWEsRUFDYixRQUFRLEVBQ1IsR0FBRyxJQUFJLEtBT1AsRUFBRTtJQUNOLE9BQU8sQ0FBQyxJQUFrQixFQUFFLEVBQUU7UUFDMUIsWUFBWSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbEQsYUFBYSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDN0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLENBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMzSSxDQUFDLFFBQVEsSUFBSSxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDaEcsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsMkJBQTJCLENBQ3ZDLEVBQ0ksYUFBYSxHQUFHLEtBQUssRUFDckIsWUFBWSxFQUNaLGFBQWEsRUFDYixRQUFRLEVBQ1IsR0FBRyxJQUFJLEtBT1AsRUFBRTtJQUNOLE9BQU8sQ0FBQyxJQUFrQixFQUFFLEVBQUU7UUFDMUIsWUFBWSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbEQsYUFBYSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDN0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLENBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMzSSxDQUFDLFFBQVEsSUFBSSxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDaEcsQ0FBQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0VHlwZSB9IGZyb20gXCIuLi90eXBlXCI7XHJcbmltcG9ydCB7IEFwcFNlcnZpY2VJbmZvLCBBcHBTZXJ2aWNlTGlmZXRpbWUgfSBmcm9tIFwiLi9hcHBTZXJ2aWNlSW5mb1wiO1xyXG5pbXBvcnQgeyBBcHBTZXJ2aWNlSW5mb1JlZ2lzdHJ5IH0gZnJvbSBcIi4vYXBwU2VydmljZUluZm9SZWdpc3RyeVwiO1xyXG5cclxuLyoqXHJcbiAqIE1hcmtzIGEgY2xhc3MgYXMgYmVpbmcgY29udHJhY3QgZm9yIHRyYW5zaWVudCBhcHBsaWNhdGlvbiBzZXJ2aWNlcy5cclxuICpcclxuICogQGV4cG9ydFxyXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFthbGxvd011bHRpcGxlPWZhbHNlXSBJbmRpY2F0ZXMgd2hldGhlciBtdWx0aXBsZSBzZXJ2aWNlcyBtYXkgYmUgcmVnaXN0ZXJlZCB3aXRoIHRoZSBzYW1lIGNvbnRyYWN0IG9yIG5vdC5cclxuICogQHBhcmFtIHtBYnN0cmFjdFR5cGV9IFtjb250cmFjdFR5cGVdIEluZGljYXRlcyB0aGUgY29udHJhY3QgdHlwZSwgaWYgZGlmZmVyZW50IGZyb20gdGhlIGRlY29yYXRlZCB0eXBlLlxyXG4gKiBAcGFyYW0geyp9IFtjb250cmFjdFRva2VuXSBJbmRpY2F0ZXMgdGhlIGNvbnRyYWN0IHRva2VuLCBpZiBkaWZmZXJlbnQgZnJvbSB0aGUgY29udHJhY3QgdHlwZS5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBBcHBTZXJ2aWNlQ29udHJhY3QoXHJcbiAgICB7XHJcbiAgICAgICAgYWxsb3dNdWx0aXBsZSA9IGZhbHNlLFxyXG4gICAgICAgIGNvbnRyYWN0VHlwZSxcclxuICAgICAgICBjb250cmFjdFRva2VuLFxyXG4gICAgICAgIHJlZ2lzdHJ5LFxyXG4gICAgICAgIC4uLmFyZ3NcclxuICAgIH06IHtcclxuICAgICAgICBhbGxvd011bHRpcGxlPzogYm9vbGVhbjtcclxuICAgICAgICBjb250cmFjdFR5cGU/OiBBYnN0cmFjdFR5cGU7XHJcbiAgICAgICAgY29udHJhY3RUb2tlbj86IGFueTtcclxuICAgICAgICByZWdpc3RyeT86IEFwcFNlcnZpY2VJbmZvUmVnaXN0cnk7XHJcbiAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xyXG4gICAgfSA9IHt9KSB7XHJcbiAgICByZXR1cm4gKHR5cGU6IEFic3RyYWN0VHlwZSkgPT4ge1xyXG4gICAgICAgIGNvbnRyYWN0VHlwZSA9IGNvbnRyYWN0VHlwZSA/IGNvbnRyYWN0VHlwZSA6IHR5cGU7XHJcbiAgICAgICAgY29udHJhY3RUb2tlbiA9IGNvbnRyYWN0VG9rZW4gPyBjb250cmFjdFRva2VuIDogY29udHJhY3RUeXBlO1xyXG4gICAgICAgIGNvbnN0IGFwcFNlcnZpY2VJbmZvID0gbmV3IEFwcFNlcnZpY2VJbmZvKHsgY29udHJhY3RUeXBlLCBjb250cmFjdFRva2VuLCBhbGxvd011bHRpcGxlLCBsaWZldGltZTogQXBwU2VydmljZUxpZmV0aW1lLlRyYW5zaWVudCwgLi4uYXJncyB9KTtcclxuICAgICAgICAocmVnaXN0cnkgfHwgQXBwU2VydmljZUluZm9SZWdpc3RyeS5JbnN0YW5jZSkucmVnaXN0ZXJTZXJ2aWNlQ29udHJhY3QodHlwZSwgYXBwU2VydmljZUluZm8pO1xyXG4gICAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIE1hcmtzIGEgY2xhc3MgYXMgYmVpbmcgY29udHJhY3QgZm9yIHNpbmdsZXRvbiBhcHBsaWNhdGlvbiBzZXJ2aWNlcy5cclxuICpcclxuICogQGV4cG9ydFxyXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFthbGxvd011bHRpcGxlPWZhbHNlXSBJbmRpY2F0ZXMgd2hldGhlciBtdWx0aXBsZSBzZXJ2aWNlcyBtYXkgYmUgcmVnaXN0ZXJlZCB3aXRoIHRoZSBzYW1lIGNvbnRyYWN0IG9yIG5vdC5cclxuICogQHBhcmFtIHtBYnN0cmFjdFR5cGV9IFtjb250cmFjdFR5cGVdIEluZGljYXRlcyB0aGUgY29udHJhY3QgdHlwZSwgaWYgZGlmZmVyZW50IGZyb20gdGhlIGRlY29yYXRlZCB0eXBlLlxyXG4gKiBAcGFyYW0geyp9IFtjb250cmFjdFRva2VuXSBJbmRpY2F0ZXMgdGhlIGNvbnRyYWN0IHRva2VuLCBpZiBkaWZmZXJlbnQgZnJvbSB0aGUgY29udHJhY3QgdHlwZS5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBTaW5nbGV0b25BcHBTZXJ2aWNlQ29udHJhY3QoXHJcbiAgICB7XHJcbiAgICAgICAgYWxsb3dNdWx0aXBsZSA9IGZhbHNlLFxyXG4gICAgICAgIGNvbnRyYWN0VHlwZSxcclxuICAgICAgICBjb250cmFjdFRva2VuLFxyXG4gICAgICAgIHJlZ2lzdHJ5LFxyXG4gICAgICAgIC4uLmFyZ3NcclxuICAgIH06IHtcclxuICAgICAgICBhbGxvd011bHRpcGxlPzogYm9vbGVhbjtcclxuICAgICAgICBjb250cmFjdFR5cGU/OiBBYnN0cmFjdFR5cGU7XHJcbiAgICAgICAgY29udHJhY3RUb2tlbj86IGFueTtcclxuICAgICAgICByZWdpc3RyeT86IEFwcFNlcnZpY2VJbmZvUmVnaXN0cnk7XHJcbiAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xyXG4gICAgfSA9IHt9KSB7XHJcbiAgICByZXR1cm4gKHR5cGU6IEFic3RyYWN0VHlwZSkgPT4ge1xyXG4gICAgICAgIGNvbnRyYWN0VHlwZSA9IGNvbnRyYWN0VHlwZSA/IGNvbnRyYWN0VHlwZSA6IHR5cGU7XHJcbiAgICAgICAgY29udHJhY3RUb2tlbiA9IGNvbnRyYWN0VG9rZW4gPyBjb250cmFjdFRva2VuIDogY29udHJhY3RUeXBlO1xyXG4gICAgICAgIGNvbnN0IGFwcFNlcnZpY2VJbmZvID0gbmV3IEFwcFNlcnZpY2VJbmZvKHsgY29udHJhY3RUeXBlLCBjb250cmFjdFRva2VuLCBhbGxvd011bHRpcGxlLCBsaWZldGltZTogQXBwU2VydmljZUxpZmV0aW1lLlNpbmdsZXRvbiwgLi4uYXJncyB9KTtcclxuICAgICAgICAocmVnaXN0cnkgfHwgQXBwU2VydmljZUluZm9SZWdpc3RyeS5JbnN0YW5jZSkucmVnaXN0ZXJTZXJ2aWNlQ29udHJhY3QodHlwZSwgYXBwU2VydmljZUluZm8pO1xyXG4gICAgfTtcclxufVxyXG4iXX0=