65 lines
1.6 KiB
TypeScript
65 lines
1.6 KiB
TypeScript
export namespace config {
|
|
|
|
export class DebuggerConfig {
|
|
enable: boolean;
|
|
|
|
static createFrom(source: any = {}) {
|
|
return new DebuggerConfig(source);
|
|
}
|
|
|
|
constructor(source: any = {}) {
|
|
if ('string' === typeof source) source = JSON.parse(source);
|
|
this.enable = source["enable"];
|
|
}
|
|
}
|
|
export class ServerConfig {
|
|
host: string;
|
|
port: number;
|
|
|
|
static createFrom(source: any = {}) {
|
|
return new ServerConfig(source);
|
|
}
|
|
|
|
constructor(source: any = {}) {
|
|
if ('string' === typeof source) source = JSON.parse(source);
|
|
this.host = source["host"];
|
|
this.port = source["port"];
|
|
}
|
|
}
|
|
export class Config {
|
|
server?: ServerConfig;
|
|
debug?: DebuggerConfig;
|
|
|
|
static createFrom(source: any = {}) {
|
|
return new Config(source);
|
|
}
|
|
|
|
constructor(source: any = {}) {
|
|
if ('string' === typeof source) source = JSON.parse(source);
|
|
this.server = this.convertValues(source["server"], ServerConfig);
|
|
this.debug = this.convertValues(source["debug"], DebuggerConfig);
|
|
}
|
|
|
|
convertValues(a: any, classs: any, asMap: boolean = false): any {
|
|
if (!a) {
|
|
return a;
|
|
}
|
|
if (a.slice) {
|
|
return (a as any[]).map(elem => this.convertValues(elem, classs));
|
|
} else if ("object" === typeof a) {
|
|
if (asMap) {
|
|
for (const key of Object.keys(a)) {
|
|
a[key] = new classs(a[key]);
|
|
}
|
|
return a;
|
|
}
|
|
return new classs(a);
|
|
}
|
|
return a;
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|