type UIServerConfiguration,
type WorkerConfiguration,
} from '../types';
-import { WorkerConstants, WorkerProcessType } from '../worker';
+import {
+ DEFAULT_ELEMENT_START_DELAY,
+ DEFAULT_POOL_MAX_SIZE,
+ DEFAULT_POOL_MIN_SIZE,
+ DEFAULT_WORKER_START_DELAY,
+ WorkerProcessType,
+} from '../worker';
type ConfigurationSectionType =
| LogConfiguration
[ConfigurationSection.uiServer, Configuration.buildUIServerSection()],
]);
- private static configurationChangeCallback: () => Promise<void>;
+ private static configurationChangeCallback?: () => Promise<void>;
private constructor() {
// This is intentional
public static getConfigurationSection<T extends ConfigurationSectionType>(
sectionName: ConfigurationSection,
): T {
- if (!Configuration.configurationSectionCache.has(sectionName)) {
- switch (sectionName) {
- case ConfigurationSection.log:
- Configuration.configurationSectionCache.set(sectionName, Configuration.buildLogSection());
- break;
- case ConfigurationSection.performanceStorage:
- Configuration.configurationSectionCache.set(
- sectionName,
- Configuration.buildPerformanceStorageSection(),
- );
- break;
- case ConfigurationSection.worker:
- Configuration.configurationSectionCache.set(
- sectionName,
- Configuration.buildWorkerSection(),
- );
- break;
- case ConfigurationSection.uiServer:
- Configuration.configurationSectionCache.set(
- sectionName,
- Configuration.buildUIServerSection(),
- );
- break;
- default:
- // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
- throw new Error(`Unknown configuration section '${sectionName}'`);
- }
+ if (!Configuration.isConfigurationSectionCached(sectionName)) {
+ Configuration.cacheConfigurationSection(sectionName);
}
return Configuration.configurationSectionCache.get(sectionName) as T;
}
return Configuration.buildWorkerSection().processType === WorkerProcessType.dynamicPool;
}
+ private static isConfigurationSectionCached(sectionName: ConfigurationSection): boolean {
+ return Configuration.configurationSectionCache.has(sectionName);
+ }
+
+ private static cacheConfigurationSection(sectionName: ConfigurationSection): void {
+ switch (sectionName) {
+ case ConfigurationSection.log:
+ Configuration.configurationSectionCache.set(sectionName, Configuration.buildLogSection());
+ break;
+ case ConfigurationSection.performanceStorage:
+ Configuration.configurationSectionCache.set(
+ sectionName,
+ Configuration.buildPerformanceStorageSection(),
+ );
+ break;
+ case ConfigurationSection.worker:
+ Configuration.configurationSectionCache.set(
+ sectionName,
+ Configuration.buildWorkerSection(),
+ );
+ break;
+ case ConfigurationSection.uiServer:
+ Configuration.configurationSectionCache.set(
+ sectionName,
+ Configuration.buildUIServerSection(),
+ );
+ break;
+ default:
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
+ throw new Error(`Unknown configuration section '${sectionName}'`);
+ }
+ }
+
private static buildUIServerSection(): UIServerConfiguration {
if (hasOwnProp(Configuration.getConfigurationData(), 'uiWebSocketServer')) {
console.error(
);
const defaultWorkerConfiguration: WorkerConfiguration = {
processType: WorkerProcessType.workerSet,
- startDelay: WorkerConstants.DEFAULT_WORKER_START_DELAY,
+ startDelay: DEFAULT_WORKER_START_DELAY,
elementsPerWorker: 'auto',
- elementStartDelay: WorkerConstants.DEFAULT_ELEMENT_START_DELAY,
- poolMinSize: WorkerConstants.DEFAULT_POOL_MIN_SIZE,
- poolMaxSize: WorkerConstants.DEFAULT_POOL_MAX_SIZE,
+ elementStartDelay: DEFAULT_ELEMENT_START_DELAY,
+ poolMinSize: DEFAULT_POOL_MIN_SIZE,
+ poolMaxSize: DEFAULT_POOL_MAX_SIZE,
};
hasOwnProp(Configuration.getConfigurationData(), 'workerPoolStrategy') &&
delete Configuration.getConfigurationData()?.workerPoolStrategy;
delete Configuration.configurationData;
Configuration.configurationSectionCache.clear();
if (!isUndefined(Configuration.configurationChangeCallback)) {
- Configuration.configurationChangeCallback().catch((error) => {
+ Configuration.configurationChangeCallback!().catch((error) => {
throw typeof error === 'string' ? new Error(error) : error;
});
}