@fleetbase/ember-core
Version:
Provides all the core services, decorators and utilities for building a Fleetbase extension for the Console.
68 lines (58 loc) • 1.51 kB
JavaScript
import { tracked } from '@glimmer/tracking';
import { A } from '@ember/array';
/**
* ExtensionBootState
*
* Shared state object for extension booting process.
* Registered as a singleton in the application container to ensure
* all ExtensionManager instances (app and engines) share the same boot state.
*
* @class ExtensionBootState
*/
export default class ExtensionBootState {
/**
* Whether extensions are currently booting
* @type {boolean}
*/
isBooting = true;
/**
* Promise that resolves when boot is complete
* @type {Object|null}
*/
bootPromise = null;
/**
* Promise that resolves when extensions are loaded
* @type {Promise|null}
*/
extensionsLoadedPromise = null;
/**
* Resolver function for extensionsLoadedPromise
* @type {Function|null}
*/
extensionsLoadedResolver = null;
/**
* Whether extensions have been loaded
* @type {boolean}
*/
extensionsLoaded = false;
/**
* Map of loaded engine instances
* @type {Map}
*/
loadedEngines = new Map();
/**
* Array of registered extensions
* @type {Array}
*/
registeredExtensions = A([]);
/**
* Map of loading promises for engines
* @type {Map}
*/
loadingPromises = new Map();
/**
* Map of engine loaded hooks
* @type {Map}
*/
engineLoadedHooks = new Map();
}