import { ApplicationInfo } from '../models/applicationInfo'; import { Event } from '../common/event'; import { applicationApi } from './applicationApi'; /** Represents registry to manage all applications. */ class ApplicationManager { /** Stores all registerd applications. */ private _applications: { [key: string]: ApplicationInfo }; /** Initializes a new instance of this class. */ constructor() { this._applications = {}; this.changed = new Event(); } /** The chaged event will fire if the registration has changed. */ public changed: Event; /** Registers a new application. */ public registerApplication(applicationInfo: ApplicationInfo) { this._applications[applicationInfo.name] = applicationInfo; this.changed.invoke(); return applicationApi; } /** Gets all registered applications. */ public get applications() { return this._applications; } } /** A singleton instance of the application manager. */ export const applicationManager = new ApplicationManager(); export default applicationManager;