UNPKG

rokot-notification

Version:

Rokot - [Rocketmakers](http://www.rocketmakers.com/) TypeScript NodeJs Platform

69 lines (68 loc) 3.42 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const templates_1 = require("../core/templates"); const common_1 = require("../core/common"); require("reflect-metadata"); class TemplatePreProcessor { constructor(logger, handlerClassConstructor) { this.logger = logger; this.handlerClassConstructor = handlerClassConstructor; } runSampleMessageRender(decoration, templateName, handler, proc, config) { const testCases = decoration.testCases; if (!testCases || !testCases.length) { this.logger.warn(`-- -- -- No Test Case functions defined`); return; } for (let testCase of testCases) { try { const sm = handler[testCase]([templateName]); if (!sm) { continue; } const content = proc(sm); const message = `-- -- -- compiled template from notification '${testCase}'`; this.logger.trace(message); config && config.onTemplateRendered && config.onTemplateRendered(decoration.notificationType, templateName, testCase, content); } catch (e) { const message = `-- -- -- failed to compile template from notification '${testCase}'`; this.logger.error(e, message); return message; } } } preProcess(decorations, config) { return __awaiter(this, void 0, void 0, function* () { const errors = []; this.logger.trace(`Pre Processing Message Handlers Template Compiler`); for (const decoration of decorations) { this.logger.trace(`-- Processing ${decoration.notificationType}`); const handler = common_1.constructNotificationMessageHandler(decoration, this.handlerClassConstructor); for (const templateName of decoration.templates) { this.logger.trace(`-- -- template: ${templateName}`); let promise = handler[templateName](); let proc = yield common_1.resolvePromiseOrResult(promise); config && config.onTemplateCached && config.onTemplateCached(decoration.notificationType, templateName, handler[templateName], proc); templates_1.templates.set(proc, handler[templateName]); const msg = this.runSampleMessageRender(decoration, templateName, handler, proc, config); if (msg) { errors.push(msg); } } } if (errors.length) { throw new Error(errors.join("; ")); } }); } } exports.TemplatePreProcessor = TemplatePreProcessor;