@kephas/core
Version:
Provides a common infrastructure for all the other Kephas Framework components: ambient services, dynamic reflection, composition, application management, and others.
29 lines • 4.89 kB
JavaScript
import { AppServiceInfoRegistry } from "./appServiceInfoRegistry";
import { AppServiceMetadata, Priority } from "./appServiceMetadata";
/**
* Marks a class as being an application service. Its closest base registered as service contract is
* considered to be its contract.
*
* @export
* @param {number|Priority} [overridePriority=Priority.Normal] Optional. The override priority.
* @param {number|Priority} [processingPriority=Priority.Normal] Optional. The processing priority.
* @param {string} [serviceName] Optional. The service name.
* @returns A function.
*/
export function AppService({ overridePriority = Priority.Normal, processingPriority = Priority.Normal, serviceName, provider, registry } = {}) {
return (type) => {
(registry || AppServiceInfoRegistry.Instance).registerService(type, new AppServiceMetadata({
overridePriority,
processingPriority,
serviceName,
serviceType: type,
serviceInstance: typeof provider === 'object'
? provider
: undefined,
serviceFactory: typeof provider === 'function'
? provider
: undefined,
}));
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlcGhhcy9jb3JlL3NyYy9saWIvc2VydmljZXMvYXBwU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFcEU7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FDdEIsRUFDSSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUNsQyxrQkFBa0IsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUNwQyxXQUFXLEVBQ1gsUUFBUSxFQUNSLFFBQVEsS0FPUixFQUFFO0lBQ04sT0FBTyxDQUFDLElBQWUsRUFBRSxFQUFFO1FBQ3ZCLENBQUMsUUFBUSxJQUFJLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDLGVBQWUsQ0FDekQsSUFBSSxFQUNKLElBQUksa0JBQWtCLENBQU07WUFDeEIsZ0JBQWdCO1lBQ2hCLGtCQUFrQjtZQUNsQixXQUFXO1lBQ1gsV0FBVyxFQUFFLElBQUk7WUFDakIsZUFBZSxFQUFFLE9BQU8sUUFBUSxLQUFLLFFBQVE7Z0JBQ3pCLENBQUMsQ0FBQyxRQUFRO2dCQUNWLENBQUMsQ0FBQyxTQUFTO1lBQy9CLGNBQWMsRUFBRSxPQUFPLFFBQVEsS0FBSyxVQUFVO2dCQUMxQixDQUFDLENBQUMsUUFBa0M7Z0JBQ3BDLENBQUMsQ0FBQyxTQUFTO1NBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBQ1osQ0FBQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSBcIi4uL2luamVjdGlvbi9pbmplY3RvclwiO1xyXG5pbXBvcnQgeyBUeXBlIH0gZnJvbSBcIi4uL3R5cGVcIjtcclxuaW1wb3J0IHsgQXBwU2VydmljZUluZm9SZWdpc3RyeSB9IGZyb20gXCIuL2FwcFNlcnZpY2VJbmZvUmVnaXN0cnlcIjtcclxuaW1wb3J0IHsgQXBwU2VydmljZU1ldGFkYXRhLCBQcmlvcml0eSB9IGZyb20gXCIuL2FwcFNlcnZpY2VNZXRhZGF0YVwiO1xyXG5cclxuLyoqXHJcbiAqIE1hcmtzIGEgY2xhc3MgYXMgYmVpbmcgYW4gYXBwbGljYXRpb24gc2VydmljZS4gSXRzIGNsb3Nlc3QgYmFzZSByZWdpc3RlcmVkIGFzIHNlcnZpY2UgY29udHJhY3QgaXNcclxuICogY29uc2lkZXJlZCB0byBiZSBpdHMgY29udHJhY3QuXHJcbiAqXHJcbiAqIEBleHBvcnRcclxuICogQHBhcmFtIHtudW1iZXJ8UHJpb3JpdHl9IFtvdmVycmlkZVByaW9yaXR5PVByaW9yaXR5Lk5vcm1hbF0gT3B0aW9uYWwuIFRoZSBvdmVycmlkZSBwcmlvcml0eS5cclxuICogQHBhcmFtIHtudW1iZXJ8UHJpb3JpdHl9IFtwcm9jZXNzaW5nUHJpb3JpdHk9UHJpb3JpdHkuTm9ybWFsXSBPcHRpb25hbC4gVGhlIHByb2Nlc3NpbmcgcHJpb3JpdHkuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc2VydmljZU5hbWVdIE9wdGlvbmFsLiBUaGUgc2VydmljZSBuYW1lLlxyXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIEFwcFNlcnZpY2UoXHJcbiAgICB7XHJcbiAgICAgICAgb3ZlcnJpZGVQcmlvcml0eSA9IFByaW9yaXR5Lk5vcm1hbCxcclxuICAgICAgICBwcm9jZXNzaW5nUHJpb3JpdHkgPSBQcmlvcml0eS5Ob3JtYWwsXHJcbiAgICAgICAgc2VydmljZU5hbWUsXHJcbiAgICAgICAgcHJvdmlkZXIsXHJcbiAgICAgICAgcmVnaXN0cnlcclxuICAgIH06IHtcclxuICAgICAgICBvdmVycmlkZVByaW9yaXR5PzogbnVtYmVyIHwgUHJpb3JpdHk7XHJcbiAgICAgICAgcHJvY2Vzc2luZ1ByaW9yaXR5PzogbnVtYmVyIHwgUHJpb3JpdHk7XHJcbiAgICAgICAgc2VydmljZU5hbWU/OiBzdHJpbmc7XHJcbiAgICAgICAgcHJvdmlkZXI/OiAoKGM6IEluamVjdG9yKSA9PiBhbnkpIHwge307XHJcbiAgICAgICAgcmVnaXN0cnk/OiBBcHBTZXJ2aWNlSW5mb1JlZ2lzdHJ5O1xyXG4gICAgfSA9IHt9KSB7XHJcbiAgICByZXR1cm4gKHR5cGU6IFR5cGU8YW55PikgPT4ge1xyXG4gICAgICAgIChyZWdpc3RyeSB8fCBBcHBTZXJ2aWNlSW5mb1JlZ2lzdHJ5Lkluc3RhbmNlKS5yZWdpc3RlclNlcnZpY2UoXHJcbiAgICAgICAgICAgIHR5cGUsXHJcbiAgICAgICAgICAgIG5ldyBBcHBTZXJ2aWNlTWV0YWRhdGE8YW55Pih7XHJcbiAgICAgICAgICAgICAgICBvdmVycmlkZVByaW9yaXR5LFxyXG4gICAgICAgICAgICAgICAgcHJvY2Vzc2luZ1ByaW9yaXR5LFxyXG4gICAgICAgICAgICAgICAgc2VydmljZU5hbWUsXHJcbiAgICAgICAgICAgICAgICBzZXJ2aWNlVHlwZTogdHlwZSxcclxuICAgICAgICAgICAgICAgIHNlcnZpY2VJbnN0YW5jZTogdHlwZW9mIHByb3ZpZGVyID09PSAnb2JqZWN0J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByb3ZpZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgc2VydmljZUZhY3Rvcnk6IHR5cGVvZiBwcm92aWRlciA9PT0gJ2Z1bmN0aW9uJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByb3ZpZGVyIGFzICgoYzogSW5qZWN0b3IpID0+IGFueSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgIH07XHJcbn1cclxuIl19