Update decorators

This commit is contained in:
kalytka 2023-07-05 17:12:07 +03:00
parent e7fd826a85
commit afb4166322

View File

@ -47,70 +47,103 @@ export const coerceBoolean = () => (target: any, key: string, propertyDescriptor
} }
}; };
export const coerceNumber = () => (target: any, key: string): void => { export const coerceNumber = () => (target: any, key: string, propertyDescriptor?: PropertyDescriptor): void => {
const getter = function(): number { if (!!propertyDescriptor && !!propertyDescriptor.set) {
return this['__' + key]; const original = propertyDescriptor.set;
};
const setter = function(next: any) { propertyDescriptor.set = function(next) {
this['__' + key] = coerceNumberProperty(next); original.apply(this, [coerceNumberProperty(next)]);
}; };
} else {
const getter = function() {
return this['__' + key];
};
Object.defineProperty(target, key, { const setter = function(next: any) {
get: getter, this['__' + key] = coerceNumberProperty(next);
set: setter, };
enumerable: true,
configurable: true, Object.defineProperty(target, key, {
}); get: getter,
set: setter,
enumerable: true,
configurable: true,
});
}
}; };
export const coerceCssPixelValue = () => (target: any, key: string): void => { export const coerceCssPixelValue = () => (target: any, key: string, propertyDescriptor?: PropertyDescriptor): void => {
const getter = function(): string { if (!!propertyDescriptor && !!propertyDescriptor.set) {
return this['__' + key]; const original = propertyDescriptor.set;
};
const setter = function(next: any) { propertyDescriptor.set = function(next) {
this['__' + key] = coerceCssPixelValueAngular(next); original.apply(this, [coerceCssPixelValueAngular(next)]);
}; };
} else {
const getter = function() {
return this['__' + key];
};
Object.defineProperty(target, key, { const setter = function(next: any) {
get: getter, this['__' + key] = coerceCssPixelValueAngular(next);
set: setter, };
enumerable: true,
configurable: true, Object.defineProperty(target, key, {
}); get: getter,
set: setter,
enumerable: true,
configurable: true,
});
}
}; };
export const coerceArray = () => (target: any, key: string): void => { export const coerceArray = () => (target: any, key: string, propertyDescriptor?: PropertyDescriptor): void => {
const getter = function(): any[] { if (!!propertyDescriptor && !!propertyDescriptor.set) {
return this['__' + key]; const original = propertyDescriptor.set;
};
const setter = function(next: any) { propertyDescriptor.set = function(next) {
this['__' + key] = coerceArrayAngular(next); original.apply(this, [coerceArrayAngular(next)]);
}; };
} else {
const getter = function() {
return this['__' + key];
};
Object.defineProperty(target, key, { const setter = function(next: any) {
get: getter, this['__' + key] = coerceArrayAngular(next);
set: setter, };
enumerable: true,
configurable: true, Object.defineProperty(target, key, {
}); get: getter,
set: setter,
enumerable: true,
configurable: true,
});
}
}; };
export const coerceStringArray = (separator?: string | RegExp) => (target: any, key: string): void => { export const coerceStringArray = (separator?: string | RegExp) =>
const getter = function(): string[] { (target: any, key: string, propertyDescriptor?: PropertyDescriptor): void => {
return this['__' + key]; if (!!propertyDescriptor && !!propertyDescriptor.set) {
}; const original = propertyDescriptor.set;
const setter = function(next: any) { propertyDescriptor.set = function(next) {
this['__' + key] = coerceStringArrayAngular(next, separator); original.apply(this, [coerceStringArrayAngular(next, separator)]);
}; };
} else {
const getter = function() {
return this['__' + key];
};
Object.defineProperty(target, key, { const setter = function(next: any) {
get: getter, this['__' + key] = coerceStringArrayAngular(next, separator);
set: setter, };
enumerable: true,
configurable: true, Object.defineProperty(target, key, {
}); get: getter,
set: setter,
enumerable: true,
configurable: true,
});
}
}; };