Let NitroConfig override the configuration

This commit is contained in:
Bill 2021-12-13 00:40:30 -05:00
parent 0f9ebe76fd
commit bce64d9f21
2 changed files with 16 additions and 29 deletions

View File

@ -1,18 +1,17 @@
import { NitroManager } from '../common/NitroManager'; import { NitroManager } from '../common/NitroManager';
import { AdvancedMap } from '../utils/AdvancedMap';
import { ConfigurationEvent } from './ConfigurationEvent'; import { ConfigurationEvent } from './ConfigurationEvent';
import { IConfigurationManager } from './IConfigurationManager'; import { IConfigurationManager } from './IConfigurationManager';
export class ConfigurationManager extends NitroManager implements IConfigurationManager export class ConfigurationManager extends NitroManager implements IConfigurationManager
{ {
private _definitions: AdvancedMap<string, unknown>; private _definitions: Map<string, unknown>;
private _pendingUrls: string[]; private _pendingUrls: string[];
constructor() constructor()
{ {
super(); super();
this._definitions = new AdvancedMap(); this._definitions = new Map();
this._pendingUrls = []; this._pendingUrls = [];
this.onConfigurationLoaded = this.onConfigurationLoaded.bind(this); this.onConfigurationLoaded = this.onConfigurationLoaded.bind(this);
@ -21,24 +20,9 @@ export class ConfigurationManager extends NitroManager implements IConfiguration
protected onInit(): void protected onInit(): void
{ {
//@ts-ignore //@ts-ignore
let urls: string[] = NitroConfig.configurationUrls; const defaultConfig = this.getDefaultConfig();
if(!urls || !urls.length) this._pendingUrls = defaultConfig['config.urls'] as string[];
{
//@ts-ignore
const url: string = NitroConfig.configurationUrl;
if(url && url.length) urls = [ url ];
}
if(!urls || !urls.length)
{
this.dispatchConfigurationEvent(ConfigurationEvent.FAILED);
return;
}
this._pendingUrls = urls;
this.loadNextConfiguration(); this.loadNextConfiguration();
} }
@ -49,6 +33,8 @@ export class ConfigurationManager extends NitroManager implements IConfiguration
{ {
this.dispatchConfigurationEvent(ConfigurationEvent.LOADED); this.dispatchConfigurationEvent(ConfigurationEvent.LOADED);
this.parseConfiguration(this.getDefaultConfig());
return; return;
} }
@ -115,7 +101,7 @@ export class ConfigurationManager extends NitroManager implements IConfiguration
value = this.interpolate((value as string), regex); value = this.interpolate((value as string), regex);
} }
this._definitions.add(key, value); this._definitions.set(key, value);
} }
return true; return true;
@ -139,7 +125,7 @@ export class ConfigurationManager extends NitroManager implements IConfiguration
{ {
for(const piece of pieces) for(const piece of pieces)
{ {
const existing = (this._definitions.getValue(this.removeInterpolateKey(piece)) as string); const existing = (this._definitions.get(this.removeInterpolateKey(piece)) as string);
if(existing) (value = value.replace(piece, existing)); if(existing) (value = value.replace(piece, existing));
} }
@ -155,7 +141,7 @@ export class ConfigurationManager extends NitroManager implements IConfiguration
public getValue<T>(key: string, value: T = null): T public getValue<T>(key: string, value: T = null): T
{ {
let existing = this._definitions.getValue(key); let existing = this._definitions.get(key);
if(existing === undefined) if(existing === undefined)
{ {
@ -169,6 +155,12 @@ export class ConfigurationManager extends NitroManager implements IConfiguration
public setValue(key: string, value: string): void public setValue(key: string, value: string): void
{ {
this._definitions.add(key, value); this._definitions.set(key, value);
}
public getDefaultConfig(): { [index: string]: any }
{
//@ts-ignore
return NitroConfig as { [index: string]: any };
} }
} }

View File

@ -122,11 +122,6 @@ export class Nitro extends Application implements INitro
}); });
canvas.addEventListener('webglcontextlost', () => instance.events.dispatchEvent(new NitroEvent(Nitro.WEBGL_CONTEXT_LOST))); canvas.addEventListener('webglcontextlost', () => instance.events.dispatchEvent(new NitroEvent(Nitro.WEBGL_CONTEXT_LOST)));
//@ts-ignore
const sso = (NitroConfig.sso as string);
instance.communication.demo.setSSO(sso);
} }
public init(): void public init(): void