diff --git a/src/translator.ts b/src/translator.ts index 4a6d10e3..727f7920 100644 --- a/src/translator.ts +++ b/src/translator.ts @@ -77,6 +77,13 @@ export class SCThingTranslator { this.sourceCache = new LRUCache(cacheCapacity); this._language = language; this.metaClasses = SCClasses; + + // Initalize all meta classes once + if (typeof (this.metaClasses as any)[Object.keys(this.metaClasses)[0]] === 'function') { + for (const metaClass of Object.keys(this.metaClasses)) { + (this.metaClasses as any)[metaClass] = new (SCClasses as any)[metaClass](); + } + } } /** @@ -143,7 +150,7 @@ export class SCThingTranslator { */ private getMetaClassInstance(thingType: SCThingType): any { if (thingType in this.metaClasses) { - return new (this.metaClasses as any)[thingType](); + return this.metaClasses[thingType]; } return undefined;