Add config debugging helper

This commit is contained in:
Garrett Mills 2021-03-09 10:02:15 -06:00
parent 5f5b12a5be
commit 42d9cc101f
Signed by: garrettmills
GPG Key ID: D2BF5FBA8298F246

View File

@ -1,17 +1,41 @@
import {Singleton} from "@extollo/di"; import {Singleton, Inject} from "@extollo/di";
import {CanonicalRecursive} from "./CanonicalRecursive"; import {CanonicalRecursive} from "./CanonicalRecursive";
import {Logging} from "./Logging";
@Singleton() @Singleton()
export class Config extends CanonicalRecursive { export class Config extends CanonicalRecursive {
@Inject()
protected readonly logging!: Logging
protected appPath: string[] = ['configs'] protected appPath: string[] = ['configs']
protected suffix: string = '.config.js' protected suffix: string = '.config.js'
protected canonicalItem: string = 'config' protected canonicalItem: string = 'config'
protected recordConfigAccesses: boolean = false
protected accessedKeys: string[] = []
public async up() { public async up() {
await super.up() await super.up()
if ( this.get('server.debug', false) ) { if ( this.get('server.debug', false) ) {
Error.stackTraceLimit = Infinity Error.stackTraceLimit = Infinity
this.recordConfigAccesses = true
} }
} }
public async down() {
await super.down()
if ( this.recordConfigAccesses && this.accessedKeys.length ) {
this.logging.debug(`The following configuration keys were accessed while this application was online:`)
this.accessedKeys.forEach(key => this.logging.debug(` - ${key}`))
}
}
public get(key: string, fallback?: any): any {
if ( this.recordConfigAccesses && !this.accessedKeys.includes(key) ) {
this.accessedKeys.push(key)
}
return super.get(key, fallback);
}
} }