UNPKG

@yaagoub/decorators

Version:

Angular decorators

44 lines 5.4 kB
/** * 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==