UNPKG

@yaagoub/decorators

Version:

Angular decorators

42 lines 5.47 kB
/** * Decorator that logs debug information when the decorated method is called. * * @param options - Configuration options for the logging behavior. * @param options.message - Optional custom message to log. * @param options.destination - Optional destination for the log output. * @param options.context - Whether to include context information (target name, property key, and arguments) in the log. * * @returns A method decorator that logs debug information before executing the original method. * * @example * class ExampleClass { * @LogDebug({ message: 'Executing method', context: true }) * exampleMethod(arg1: string, arg2: number) { * // method implementation * } * } */ import { YgbInjector } from '../../global/ygb-injector'; import { ControlLogService } from '../services/ygb-control-log.service'; export function LogDebug(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('debug', context, options.destination ?? 'none', options.message ?? ''); const result = originalMethod.apply(this, args); return result; }; return descriptor; }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWdiLWxvZy1kZWJ1Zy5kZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RlY29yYXRvcnMvc3JjL2xvZ2dpbmcvYmFzaWMtbG9nZ2luZy95Z2ItbG9nLWRlYnVnLmRlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFVeEUsTUFBTSxVQUFVLFFBQVEsQ0FBQyxVQUEyQixFQUFFO0lBQ3BELE9BQU8sVUFDTCxNQUFjLEVBQ2QsV0FBbUIsRUFDbkIsVUFBOEI7UUFFOUIsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUN4QyxVQUFVLENBQUMsS0FBSyxHQUFHLFVBQVUsR0FBRyxJQUFXO1lBQ3pDLE1BQU0saUJBQWlCLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBc0IsQ0FBQztZQUNyRixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUMzQyxJQUFJLE9BQStCLENBQUM7WUFDcEMsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3BCLE9BQU8sR0FBRztvQkFDUixVQUFVO29CQUNWLFdBQVc7b0JBQ1gsSUFBSTtpQkFDTCxDQUFDO1lBQ0osQ0FBQztZQUNELGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxXQUFXLElBQUksTUFBTSxFQUFFLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7WUFDckcsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDaEQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRGVjb3JhdG9yIHRoYXQgbG9ncyBkZWJ1ZyBpbmZvcm1hdGlvbiB3aGVuIHRoZSBkZWNvcmF0ZWQgbWV0aG9kIGlzIGNhbGxlZC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGxvZ2dpbmcgYmVoYXZpb3IuXG4gKiBAcGFyYW0gb3B0aW9ucy5tZXNzYWdlIC0gT3B0aW9uYWwgY3VzdG9tIG1lc3NhZ2UgdG8gbG9nLlxuICogQHBhcmFtIG9wdGlvbnMuZGVzdGluYXRpb24gLSBPcHRpb25hbCBkZXN0aW5hdGlvbiBmb3IgdGhlIGxvZyBvdXRwdXQuXG4gKiBAcGFyYW0gb3B0aW9ucy5jb250ZXh0IC0gV2hldGhlciB0byBpbmNsdWRlIGNvbnRleHQgaW5mb3JtYXRpb24gKHRhcmdldCBuYW1lLCBwcm9wZXJ0eSBrZXksIGFuZCBhcmd1bWVudHMpIGluIHRoZSBsb2cuXG4gKlxuICogQHJldHVybnMgQSBtZXRob2QgZGVjb3JhdG9yIHRoYXQgbG9ncyBkZWJ1ZyBpbmZvcm1hdGlvbiBiZWZvcmUgZXhlY3V0aW5nIHRoZSBvcmlnaW5hbCBtZXRob2QuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNsYXNzIEV4YW1wbGVDbGFzcyB7XG4gKiAgIEBMb2dEZWJ1Zyh7IG1lc3NhZ2U6ICdFeGVjdXRpbmcgbWV0aG9kJywgY29udGV4dDogdHJ1ZSB9KVxuICogICBleGFtcGxlTWV0aG9kKGFyZzE6IHN0cmluZywgYXJnMjogbnVtYmVyKSB7XG4gKiAgICAgLy8gbWV0aG9kIGltcGxlbWVudGF0aW9uXG4gKiAgIH1cbiAqIH1cbiAqL1xuaW1wb3J0IHsgWWdiSW5qZWN0b3IgfSBmcm9tICcuLi8uLi9nbG9iYWwveWdiLWluamVjdG9yJztcbmltcG9ydCB7IENvbnRyb2xMb2dTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMveWdiLWNvbnRyb2wtbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgWWdiQ29udGV4dCwgWWdiTG9nRGVzdGluYXRpb24gfSBmcm9tICcuLi90eXBlcy95Z2ItdHlwZXMnO1xuXG5cbmludGVyZmFjZSBMb2dEZWJ1Z09wdGlvbnMge1xuICBtZXNzYWdlPzogc3RyaW5nO1xuICBkZXN0aW5hdGlvbj86IFlnYkxvZ0Rlc3RpbmF0aW9uO1xuICBjb250ZXh0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIExvZ0RlYnVnKG9wdGlvbnM6IExvZ0RlYnVnT3B0aW9ucyA9IHt9KSB7XG4gIHJldHVybiBmdW5jdGlvbiAoXG4gICAgdGFyZ2V0OiBvYmplY3QsXG4gICAgcHJvcGVydHlLZXk6IHN0cmluZyxcbiAgICBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3JcbiAgKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcbiAgICAgIGNvbnN0IGNvbnRyb2xMb2dTZXJ2aWNlID0gWWdiSW5qZWN0b3IuaW5qZWN0KENvbnRyb2xMb2dTZXJ2aWNlKSBhcyBDb250cm9sTG9nU2VydmljZTtcbiAgICAgIGNvbnN0IHRhcmdldE5hbWUgPSB0YXJnZXQuY29uc3RydWN0b3IubmFtZTtcbiAgICAgIGxldCBjb250ZXh0OiBZZ2JDb250ZXh0IHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKG9wdGlvbnMuY29udGV4dCkge1xuICAgICAgICBjb250ZXh0ID0ge1xuICAgICAgICAgIHRhcmdldE5hbWUsXG4gICAgICAgICAgcHJvcGVydHlLZXksXG4gICAgICAgICAgYXJncyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNvbnRyb2xMb2dTZXJ2aWNlLmNvbnRyb2xMb2coJ2RlYnVnJywgY29udGV4dCwgb3B0aW9ucy5kZXN0aW5hdGlvbiA/PyAnbm9uZScsIG9wdGlvbnMubWVzc2FnZSA/PyAnJyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfTtcbn1cbiJdfQ==