rokot-notification
Version:
Rokot - [Rocketmakers](http://www.rocketmakers.com/) TypeScript NodeJs Platform
69 lines (68 loc) • 3.42 kB
JavaScript
;
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;