UNPKG

rokot-notification

Version:

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

83 lines (82 loc) 4.11 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 _ = require("underscore"); const path = require("path"); const nestedTemplateProcessor_1 = require("./nestedTemplateProcessor"); const fileSystemContent_1 = require("./fileSystemContent"); const asyncFs_1 = require("./asyncFs"); class UnderscoreTemplateProcessorFactory { constructor(contentProvider, fragmentProvider) { this.contentProvider = contentProvider; this.fragmentProvider = fragmentProvider; } create(templateKey) { return __awaiter(this, void 0, void 0, function* () { if (this.fragmentProvider) { return this.createWithFragment(templateKey); } return this.createWithoutFragment(templateKey); }); } createWithFragment(templateKey) { return __awaiter(this, void 0, void 0, function* () { const c = yield this.contentProvider.get(templateKey); const fragments = yield this.fragmentProvider(); return (m) => _.template(c)({ model: m, fragments }); }); } createWithoutFragment(templateKey) { return __awaiter(this, void 0, void 0, function* () { const c = yield this.contentProvider.get(templateKey); return this.createTemplateProcessorWithoutFragment(c); }); } createTemplateProcessorWithoutFragment(content) { return __awaiter(this, void 0, void 0, function* () { return _.template(content, { variable: "model" }); }); } } exports.UnderscoreTemplateProcessorFactory = UnderscoreTemplateProcessorFactory; class UnderscoreFileSystemNestedTemplateProcessor extends nestedTemplateProcessor_1.NestedTemplateProcessor { constructor(basePath, logger, fragmentsRelativeFolder) { super(new UnderscoreFileSystemTemplateProcessorFactory(basePath, logger, fragmentsRelativeFolder)); this.basePath = basePath; } } exports.UnderscoreFileSystemNestedTemplateProcessor = UnderscoreFileSystemNestedTemplateProcessor; class UnderscoreFileSystemTemplateProcessorFactory extends UnderscoreTemplateProcessorFactory { constructor(basePath, logger, fragmentsRelativeFolder) { super(new fileSystemContent_1.FileSystemContent(basePath, logger), fragmentsRelativeFolder && (() => this.fragmentProviderFactory(fragmentsRelativeFolder))); this.basePath = basePath; this.logger = logger; } fragmentProviderFactory(fragmentsRelativeFolder) { return __awaiter(this, void 0, void 0, function* () { if (!_.isUndefined(this.cachedFragments)) { return this.cachedFragments; } const fragmentsPath = path.join(this.basePath, fragmentsRelativeFolder); if (!(yield asyncFs_1.AsyncFs.existsAsync(fragmentsPath))) { this.logger.error(`Unable to read template fragment path '${fragmentsPath}'`); return this.cachedFragments = null; } const fragmentFiles = yield asyncFs_1.AsyncFs.readdirAsync(fragmentsPath); const fragments = {}; for (const file of fragmentFiles) { const template = yield this.createWithoutFragment(fragmentsRelativeFolder + "/" + file); fragments[file] = template; } return this.cachedFragments = fragments; }); } } exports.UnderscoreFileSystemTemplateProcessorFactory = UnderscoreFileSystemTemplateProcessorFactory;