vue-di-container
Version:
Dependency injection container for Vue
38 lines (37 loc) • 1.5 kB
JavaScript
export function decorator(decorate) {
return (target, propName, indexOrProp) => {
if (decorate.class &&
typeof target === 'function' &&
propName === undefined &&
indexOrProp === undefined) {
return decorate.class(target);
}
if (decorate.property &&
typeof target === 'object' &&
(typeof propName === 'string' || typeof propName === 'symbol') &&
indexOrProp === undefined) {
return decorate.property((target.constructor || target), propName);
}
if (decorate.method &&
typeof target === 'object' &&
(typeof propName === 'string' || typeof propName === 'symbol') &&
typeof indexOrProp === 'object') {
return decorate.method((target.constructor || target), propName, indexOrProp);
}
if (decorate.parameter &&
typeof target === 'object' &&
(typeof propName === 'string' || typeof propName === 'symbol') &&
typeof indexOrProp === 'number') {
return decorate.parameter((target.constructor || target), propName, indexOrProp);
}
if (decorate.ctorParameter &&
typeof target === 'function' &&
propName === undefined &&
typeof indexOrProp === 'number') {
return decorate.ctorParameter(target, indexOrProp);
}
if (decorate.else) {
decorate.else();
}
};
}