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