import { UserFilter } from './Filter/UserFilter'; import { IUserFilter } from './Filter/IUserFilter'; import { ApplicationCode } from './Code/ApplicationCode'; import { UserSelection } from './Selection/UserSelection'; import { IUserSelection } from './Selection/IUserSelection'; import { AsyncLazy } from '@/infrastructure/Threading/AsyncLazy'; import { Signal } from '@/infrastructure/Events/Signal'; import { parseApplication } from '../Parser/ApplicationParser'; import { IApplicationState } from './IApplicationState'; import { Script } from '@/domain/Script'; import { IApplication } from '@/domain/IApplication'; import { IApplicationCode } from './Code/IApplicationCode'; import applicationFile from 'js-yaml-loader!@/application/application.yaml'; /** Mutatable singleton application state that's the single source of truth throughout the application */ export class ApplicationState implements IApplicationState { /** Get singleton application state */ public static GetAsync(): Promise { return ApplicationState.instance.getValueAsync(); } /** Application instance with all scripts. */ private static instance = new AsyncLazy(() => { const application = parseApplication(applicationFile); const selectedScripts = new Array