function log(text: string) { let w: any = window; if (w.debuging) { console.log(text); } } export function inject(deps: Array) { return (obj: any) => { obj.$inject = deps; }; } export function module(name: string, dep: Array = []) { return (obj: any) => { let modName = 'chroma.' + name; obj.$componentName = modName; log(`${modName} registered`); }; } export function service(mod: any, name: string, dep: Array = []) { return (obj: any) => { obj.$inject = dep; obj.$componentName = name; log(`Service/Provider ${name} registered.`); }; } export function controller(mod: any, name: string, dep: Array = []) { return (obj: any) => { obj.$inject = dep; obj.$componentName = name; log(`Controller ${name} registered.`); }; } export function factory(mod: any, name: string, dep: Array = []) { 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 = []) { 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.`); }; }