diff --git a/src/TemplateArchiveProcessor.ts b/src/TemplateArchiveProcessor.ts index 5708205..a9facc0 100644 --- a/src/TemplateArchiveProcessor.ts +++ b/src/TemplateArchiveProcessor.ts @@ -44,6 +44,7 @@ export type InitResponse = { */ export class TemplateArchiveProcessor { template: Template; + private compiledLogicCache?: Record; /** * Creates a template archive processor @@ -82,22 +83,23 @@ export class TemplateArchiveProcessor { } + /** - * Trigger the logic of a template - * @param {object} request - the request to send to the template logic - * @param {object} state - the current state of the template - * @param {[string]} currentTime - the current time, defaults to now - * @param {[number]} utcOffset - the UTC offset, defaults to zero - * @returns {Promise} the response and any events + * Compile the logic of a template + * @param {boolean} [enableCompiledLogicCache] - whether to cache the compiled logic for future use + * @returns {Promise>} the compiled code for each typescript file */ - async trigger(data: any, request: any, state?: any, currentTime?: string, utcOffset?: number): Promise { + async compileLogic(enableCompiledLogicCache: boolean = false): Promise> { + if (enableCompiledLogicCache && this.compiledLogicCache) { + return this.compiledLogicCache; + } + const logicManager = this.template.getLogicManager(); if(logicManager.getLanguage() === 'typescript') { const compiledCode:Record = {}; const tsFiles:Array