// site-common.js // Copyright (C) 2022 DTP Technologies, LLC // License: Apache-2.0 'use strict'; const path = require('path'); const pug = require('pug'); const { SiteLog } = require(path.join(__dirname, 'site-log')); const Events = require('events'); class SiteCommon extends Events { constructor (dtp, component) { super(); this.dtp = dtp; this.component = component; this.log = new SiteLog(dtp, component); this.appTemplateRoot = path.join(this.dtp.config.root, 'app', 'templates'); } regenerateSession (req) { return new Promise((resolve, reject) => { req.session.regenerate((err) => { if (err) { return reject(err); } resolve(); }); }); } saveSession (req) { return new Promise((resolve, reject) => { req.session.save((err) => { if (err) { return reject(err); } resolve(); }); }); } isValidString (text) { return text && (typeof text === 'string') && (text.length > 0); } loadAppTemplate (type, name) { return pug.compileFile(path.join(this.appTemplateRoot, type, name)); } loadViewTemplate (filename) { const scriptFile = path.join(this.dtp.config.root, 'app', 'views', filename); return pug.compileFile(scriptFile); } } module.exports.SiteCommon = SiteCommon;