@yaagoub/decorators
Version:
Angular decorators
44 lines • 5.4 kB
JavaScript
/**
* Decorator that logs a warning message when the decorated method is called.
*
* @param {LogWarnOptions} [options={}] - Options for the log warning.
* @param {string} [options.message] - Custom message to log.
* @param {YgbLogDestination} [options.destination] - Destination for the log message.
* @param {boolean} [options.context] - Whether to include context information in the log.
*
* @returns {MethodDecorator} - The method decorator.
*
* @example
* ```typescript
* class ExampleClass {
* @LogWarn({ message: 'Warning: method called', destination: 'console', context: true })
* exampleMethod() {
* // method implementation
* }
* }
* ```
*/
import { YgbInjector } from '../../global/ygb-injector';
import { ControlLogService } from '../services/ygb-control-log.service';
export function LogWarn(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('warn', context, options.destination ?? 'none', options.message ?? '');
const result = originalMethod.apply(this, args);
return result;
};
return descriptor;
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWdiLWxvZy13YXJuLmRlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVjb3JhdG9ycy9zcmMvbG9nZ2luZy9iYXNpYy1sb2dnaW5nL3lnYi1sb2ctd2Fybi5kZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFVeEUsTUFBTSxVQUFVLE9BQU8sQ0FBQyxVQUEwQixFQUFFO0lBQ2xELE9BQU8sVUFDTCxNQUFjLEVBQ2QsV0FBbUIsRUFDbkIsVUFBOEI7UUFFOUIsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUN4QyxVQUFVLENBQUMsS0FBSyxHQUFHLFVBQVUsR0FBRyxJQUFXO1lBQ3pDLE1BQU0saUJBQWlCLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBc0IsQ0FBQztZQUNyRixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUMzQyxJQUFJLE9BQStCLENBQUM7WUFDcEMsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3BCLE9BQU8sR0FBRztvQkFDUixVQUFVO29CQUNWLFdBQVc7b0JBQ1gsSUFBSTtpQkFDTCxDQUFDO1lBQ0osQ0FBQztZQUNELGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxXQUFXLElBQUksTUFBTSxFQUFFLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7WUFDcEcsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDaEQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRGVjb3JhdG9yIHRoYXQgbG9ncyBhIHdhcm5pbmcgbWVzc2FnZSB3aGVuIHRoZSBkZWNvcmF0ZWQgbWV0aG9kIGlzIGNhbGxlZC5cbiAqXG4gKiBAcGFyYW0ge0xvZ1dhcm5PcHRpb25zfSBbb3B0aW9ucz17fV0gLSBPcHRpb25zIGZvciB0aGUgbG9nIHdhcm5pbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubWVzc2FnZV0gLSBDdXN0b20gbWVzc2FnZSB0byBsb2cuXG4gKiBAcGFyYW0ge1lnYkxvZ0Rlc3RpbmF0aW9ufSBbb3B0aW9ucy5kZXN0aW5hdGlvbl0gLSBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvZyBtZXNzYWdlLlxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5jb250ZXh0XSAtIFdoZXRoZXIgdG8gaW5jbHVkZSBjb250ZXh0IGluZm9ybWF0aW9uIGluIHRoZSBsb2cuXG4gKlxuICogQHJldHVybnMge01ldGhvZERlY29yYXRvcn0gLSBUaGUgbWV0aG9kIGRlY29yYXRvci5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY2xhc3MgRXhhbXBsZUNsYXNzIHtcbiAqICAgQExvZ1dhcm4oeyBtZXNzYWdlOiAnV2FybmluZzogbWV0aG9kIGNhbGxlZCcsIGRlc3RpbmF0aW9uOiAnY29uc29sZScsIGNvbnRleHQ6IHRydWUgfSlcbiAqICAgZXhhbXBsZU1ldGhvZCgpIHtcbiAqICAgICAvLyBtZXRob2QgaW1wbGVtZW50YXRpb25cbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmltcG9ydCB7IFlnYkluamVjdG9yIH0gZnJvbSAnLi4vLi4vZ2xvYmFsL3lnYi1pbmplY3Rvcic7XG5pbXBvcnQgeyBDb250cm9sTG9nU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3lnYi1jb250cm9sLWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IFlnYkNvbnRleHQsIFlnYkxvZ0Rlc3RpbmF0aW9uIH0gZnJvbSAnLi4vdHlwZXMveWdiLXR5cGVzJztcblxuXG5pbnRlcmZhY2UgTG9nV2Fybk9wdGlvbnMge1xuICBtZXNzYWdlPzogc3RyaW5nO1xuICBkZXN0aW5hdGlvbj86IFlnYkxvZ0Rlc3RpbmF0aW9uO1xuICBjb250ZXh0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIExvZ1dhcm4ob3B0aW9uczogTG9nV2Fybk9wdGlvbnMgPSB7fSkge1xuICByZXR1cm4gZnVuY3Rpb24gKFxuICAgIHRhcmdldDogb2JqZWN0LFxuICAgIHByb3BlcnR5S2V5OiBzdHJpbmcsXG4gICAgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yXG4gICkge1xuICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gZGVzY3JpcHRvci52YWx1ZTtcbiAgICBkZXNjcmlwdG9yLnZhbHVlID0gZnVuY3Rpb24gKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBjb25zdCBjb250cm9sTG9nU2VydmljZSA9IFlnYkluamVjdG9yLmluamVjdChDb250cm9sTG9nU2VydmljZSkgYXMgQ29udHJvbExvZ1NlcnZpY2U7XG4gICAgICBjb25zdCB0YXJnZXROYW1lID0gdGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgICBsZXQgY29udGV4dDogWWdiQ29udGV4dCB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChvcHRpb25zLmNvbnRleHQpIHtcbiAgICAgICAgY29udGV4dCA9IHtcbiAgICAgICAgICB0YXJnZXROYW1lLFxuICAgICAgICAgIHByb3BlcnR5S2V5LFxuICAgICAgICAgIGFyZ3MsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb250cm9sTG9nU2VydmljZS5jb250cm9sTG9nKCd3YXJuJywgY29udGV4dCwgb3B0aW9ucy5kZXN0aW5hdGlvbiA/PyAnbm9uZScsIG9wdGlvbnMubWVzc2FnZSA/PyAnJyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfTtcbn1cbiJdfQ==