@yaagoub/decorators
Version:
Angular decorators
43 lines • 5.36 kB
JavaScript
/**
* Decorator that logs information about the execution of a method.
*
* @param options - Configuration options for logging.
* @param options.message - Optional custom message to log.
* @param options.destination - Optional destination for the log.
* @param options.context - Optional flag to include context information in the log.
*
* @returns A method decorator that logs information before executing the original method.
*
* @example
*
* class ExampleService {
* @LogInfo({ message: 'Executing method', destination: 'console', context: true })
* exampleMethod(param1: string, param2: number) {
* // method implementation
* }
* }
*/
import { YgbInjector } from '../../global/ygb-injector';
import { ControlLogService } from '../services/ygb-control-log.service';
export function LogInfo(options = {}) {
return function (target, propertyKey, descriptor) {
const originalMethod = descriptor.value;
descriptor.value = function (...args) {
const controlLogService = YgbInjector.inject(ControlLogService);
const targetName = target.constructor.name;
let context;
if (options.context) {
context = {
targetName,
propertyKey,
args,
};
}
controlLogService.controlLog('info', context, options.destination ?? 'none', options.message ?? '');
const result = originalMethod.apply(this, args);
return result;
};
return descriptor;
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWdiLWxvZy1pbmZvLmRlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVjb3JhdG9ycy9zcmMvbG9nZ2luZy9iYXNpYy1sb2dnaW5nL3lnYi1sb2ctaW5mby5kZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQVV4RSxNQUFNLFVBQVUsT0FBTyxDQUFDLFVBQTBCLEVBQUU7SUFDbEQsT0FBTyxVQUNMLE1BQWMsRUFDZCxXQUFtQixFQUNuQixVQUE4QjtRQUU5QixNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQ3hDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsVUFBVSxHQUFHLElBQVc7WUFDekMsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFzQixDQUFDO1lBQ3JGLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQzNDLElBQUksT0FBK0IsQ0FBQztZQUNwQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDcEIsT0FBTyxHQUFHO29CQUNSLFVBQVU7b0JBQ1YsV0FBVztvQkFDWCxJQUFJO2lCQUNMLENBQUM7WUFDSixDQUFDO1lBQ0QsaUJBQWlCLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLFdBQVcsSUFBSSxNQUFNLEVBQUUsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNwRyxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNoRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUM7UUFDRixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEZWNvcmF0b3IgdGhhdCBsb2dzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBleGVjdXRpb24gb2YgYSBtZXRob2QuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGxvZ2dpbmcuXG4gKiBAcGFyYW0gb3B0aW9ucy5tZXNzYWdlIC0gT3B0aW9uYWwgY3VzdG9tIG1lc3NhZ2UgdG8gbG9nLlxuICogQHBhcmFtIG9wdGlvbnMuZGVzdGluYXRpb24gLSBPcHRpb25hbCBkZXN0aW5hdGlvbiBmb3IgdGhlIGxvZy5cbiAqIEBwYXJhbSBvcHRpb25zLmNvbnRleHQgLSBPcHRpb25hbCBmbGFnIHRvIGluY2x1ZGUgY29udGV4dCBpbmZvcm1hdGlvbiBpbiB0aGUgbG9nLlxuICpcbiAqIEByZXR1cm5zIEEgbWV0aG9kIGRlY29yYXRvciB0aGF0IGxvZ3MgaW5mb3JtYXRpb24gYmVmb3JlIGV4ZWN1dGluZyB0aGUgb3JpZ2luYWwgbWV0aG9kLlxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogY2xhc3MgRXhhbXBsZVNlcnZpY2Uge1xuICogICBATG9nSW5mbyh7IG1lc3NhZ2U6ICdFeGVjdXRpbmcgbWV0aG9kJywgZGVzdGluYXRpb246ICdjb25zb2xlJywgY29udGV4dDogdHJ1ZSB9KVxuICogICBleGFtcGxlTWV0aG9kKHBhcmFtMTogc3RyaW5nLCBwYXJhbTI6IG51bWJlcikge1xuICogICAgIC8vIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuICogICB9XG4gKiB9XG4gKi9cbmltcG9ydCB7IFlnYkluamVjdG9yIH0gZnJvbSAnLi4vLi4vZ2xvYmFsL3lnYi1pbmplY3Rvcic7XG5pbXBvcnQgeyBDb250cm9sTG9nU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3lnYi1jb250cm9sLWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IFlnYkNvbnRleHQsIFlnYkxvZ0Rlc3RpbmF0aW9uIH0gZnJvbSAnLi4vdHlwZXMveWdiLXR5cGVzJztcblxuXG5pbnRlcmZhY2UgTG9nSW5mb09wdGlvbnMge1xuICBtZXNzYWdlPzogc3RyaW5nO1xuICBkZXN0aW5hdGlvbj86IFlnYkxvZ0Rlc3RpbmF0aW9uO1xuICBjb250ZXh0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIExvZ0luZm8ob3B0aW9uczogTG9nSW5mb09wdGlvbnMgPSB7fSkge1xuICByZXR1cm4gZnVuY3Rpb24gKFxuICAgIHRhcmdldDogb2JqZWN0LFxuICAgIHByb3BlcnR5S2V5OiBzdHJpbmcsXG4gICAgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yXG4gICkge1xuICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gZGVzY3JpcHRvci52YWx1ZTtcbiAgICBkZXNjcmlwdG9yLnZhbHVlID0gZnVuY3Rpb24gKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBjb25zdCBjb250cm9sTG9nU2VydmljZSA9IFlnYkluamVjdG9yLmluamVjdChDb250cm9sTG9nU2VydmljZSkgYXMgQ29udHJvbExvZ1NlcnZpY2U7XG4gICAgICBjb25zdCB0YXJnZXROYW1lID0gdGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgICBsZXQgY29udGV4dDogWWdiQ29udGV4dCB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChvcHRpb25zLmNvbnRleHQpIHtcbiAgICAgICAgY29udGV4dCA9IHtcbiAgICAgICAgICB0YXJnZXROYW1lLFxuICAgICAgICAgIHByb3BlcnR5S2V5LFxuICAgICAgICAgIGFyZ3MsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb250cm9sTG9nU2VydmljZS5jb250cm9sTG9nKCdpbmZvJywgY29udGV4dCwgb3B0aW9ucy5kZXN0aW5hdGlvbiA/PyAnbm9uZScsIG9wdGlvbnMubWVzc2FnZSA/PyAnJyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfTtcbn1cbiJdfQ==