@cxra/routine-assistance
Version:
RA (Routine Assistance).
27 lines • 3.56 kB
JavaScript
/* eslint-disable @typescript-eslint/naming-convention */
/* eslint-disable @typescript-eslint/require-await */
/**
* Декоратор, который оборачивает функцию setter'а в обработчик, который входной аргумент поступивший
* (например из шаблона) возможно в виде строки, пытается привести к @see bool
*
* @example
* @Input('can')
* @InputAsBool()
* private set _can(value: boolean) {
* this.can$.next(value);
* }
*/
export const InputAsBool = () => (_target, _propertyKey, descriptor) => {
const setter = descriptor.set;
descriptor.set = async function (...args) {
const _argument = args[0];
args[0] = _argument === '' || _argument === 'true'
? true
: _argument === 'false'
? false
: _argument;
return setter?.apply(this, args);
};
return descriptor;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuYXMuYm9vbC5kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yb3V0aW5lLWFzc2lzdGFuY2Uvc3JjL2xpYi9kZWNvcmF0b3JzL2lucHV0LmFzLmJvb2wuZGVjb3JhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlEQUF5RDtBQUN6RCxxREFBcUQ7QUFDckQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQWdCLEVBQUUsWUFBb0IsRUFBRSxVQUE4QixFQUFzQixFQUFFO0lBRS9ILE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFFOUIsVUFBVSxDQUFDLEdBQUcsR0FBRyxLQUFLLFdBQVUsR0FBRyxJQUFlO1FBQ2pELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUUsU0FBUyxLQUFLLEVBQUUsSUFBSSxTQUFTLEtBQUssTUFBTTtZQUNoRCxDQUFDLENBQUMsSUFBSTtZQUNOLENBQUMsQ0FBQyxTQUFTLEtBQUssT0FBTztnQkFDdEIsQ0FBQyxDQUFDLEtBQUs7Z0JBQ1AsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNkLE9BQU8sTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxVQUFVLENBQUM7QUFFbkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXHJcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9yZXF1aXJlLWF3YWl0ICovXHJcbi8qKlxyXG4gKiDQlNC10LrQvtGA0LDRgtC+0YAsINC60L7RgtC+0YDRi9C5INC+0LHQvtGA0LDRh9C40LLQsNC10YIg0YTRg9C90LrRhtC40Y4gc2V0dGVyJ9CwINCyINC+0LHRgNCw0LHQvtGC0YfQuNC6LCDQutC+0YLQvtGA0YvQuSDQstGF0L7QtNC90L7QuSDQsNGA0LPRg9C80LXQvdGCINC/0L7RgdGC0YPQv9C40LLRiNC40LlcclxuICogKNC90LDQv9GA0LjQvNC10YAg0LjQtyDRiNCw0LHQu9C+0L3QsCkg0LLQvtC30LzQvtC20L3QviDQsiDQstC40LTQtSDRgdGC0YDQvtC60LgsINC/0YvRgtCw0LXRgtGB0Y8g0L/RgNC40LLQtdGB0YLQuCDQuiBAc2VlIGJvb2xcclxuICogXHJcbiAqIEBleGFtcGxlXHJcbiAqXHRASW5wdXQoJ2NhbicpXHJcbiAqXHRASW5wdXRBc0Jvb2woKVxyXG4gKlx0cHJpdmF0ZSBzZXQgX2Nhbih2YWx1ZTogYm9vbGVhbikge1xyXG4gKlx0XHR0aGlzLmNhbiQubmV4dCh2YWx1ZSk7XHJcbiAqXHR9XHJcbiAqL1xyXG5leHBvcnQgY29uc3QgSW5wdXRBc0Jvb2wgPSAoKSA9PiAoX3RhcmdldDogdW5rbm93biwgX3Byb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcik6IFByb3BlcnR5RGVzY3JpcHRvciA9PiB7XHJcblxyXG5cdGNvbnN0IHNldHRlciA9IGRlc2NyaXB0b3Iuc2V0O1xyXG5cclxuXHRkZXNjcmlwdG9yLnNldCA9IGFzeW5jIGZ1bmN0aW9uKC4uLmFyZ3M6IHVua25vd25bXSk6IFByb21pc2U8dW5rbm93bj4ge1xyXG5cdFx0Y29uc3QgX2FyZ3VtZW50ID0gYXJnc1swXTtcclxuXHRcdGFyZ3NbMF0gPV9hcmd1bWVudCA9PT0gJycgfHwgX2FyZ3VtZW50ID09PSAndHJ1ZSdcclxuXHRcdFx0PyB0cnVlXHJcblx0XHRcdDogX2FyZ3VtZW50ID09PSAnZmFsc2UnXHJcblx0XHRcdFx0PyBmYWxzZVxyXG5cdFx0XHRcdDogX2FyZ3VtZW50O1xyXG5cdFx0cmV0dXJuIHNldHRlcj8uYXBwbHkodGhpcywgYXJncyk7XHJcblx0fTtcclxuXHRyZXR1cm4gZGVzY3JpcHRvcjtcclxuXHJcbn07Il19