aodb/app/infrastructure/Dectorators/Components.ts
Martin Donnelly afe73b5baa upload
2016-12-22 00:00:06 +00:00

89 lines
1.7 KiB
TypeScript

function log(text: string) {
let w: any = <any> window;
if (w.debuging) {
console.log(text);
}
}
export function inject(deps: Array<string>) {
return (obj: any) => {
obj.$inject = deps;
};
}
export function module(name: string, dep: Array<string> = []) {
return (obj: any) => {
let modName = 'chroma.' + name;
obj.$componentName = modName;
log(`${modName} registered`);
};
}
export function service(mod: any, name: string, dep: Array<string> = []) {
return (obj: any) => {
obj.$inject = dep;
obj.$componentName = name;
log(`Service/Provider ${name} registered.`);
};
}
export function controller(mod: any, name: string, dep: Array<string> = []) {
return (obj: any) => {
obj.$inject = dep;
obj.$componentName = name;
log(`Controller ${name} registered.`);
};
}
export function factory(mod: any, name: string, dep: Array<string> = []) {
return (obj: any) => {
obj.$componentName = name;
obj.$inject = dep;
const factory: Function = function(...args: any[]) {
var instance = Object.create(obj.prototype);
instance.constructor.apply(instance, arguments);
return instance;
};
factory.$inject = dep;
obj.$factory = factory;
log(`Component ${name} registered.`);
};
}
export function directive(mod: any, name: string, dep: Array<string> = []) {
return (obj: any) => {
obj.$componentName = name;
obj.$inject = dep;
const factory: Function = function(...args: any[]) {
var instance = Object.create(obj.prototype);
instance.constructor.apply(instance, arguments);
return instance;
};
factory.$inject = dep;
obj.$factory = factory;
log(`Component ${name} registered.`);
};
}