diff --git a/src/service/Config.ts b/src/service/Config.ts index d87566b..1d8baf8 100644 --- a/src/service/Config.ts +++ b/src/service/Config.ts @@ -1,17 +1,41 @@ -import {Singleton} from "@extollo/di"; +import {Singleton, Inject} from "@extollo/di"; import {CanonicalRecursive} from "./CanonicalRecursive"; +import {Logging} from "./Logging"; @Singleton() export class Config extends CanonicalRecursive { + @Inject() + protected readonly logging!: Logging + protected appPath: string[] = ['configs'] protected suffix: string = '.config.js' protected canonicalItem: string = 'config' + protected recordConfigAccesses: boolean = false + protected accessedKeys: string[] = [] public async up() { await super.up() if ( this.get('server.debug', false) ) { 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); + } }