Repository URL to install this package:
|
Version:
2.0.0-rc.2 ▾
|
@doodle/templating
/
index.js
|
|---|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
/**
*
*/
const TemplatingMiddleware = {
/**
* render a HTML view
*
* @param {Object} req - Express request object
* @param {Object} res - Express response object
* @param {Function} next - Express next middleware function
* @return {undefined}
*/
html(req, res, next) {
if (req.accepts('html')) {
const context = _objectSpread({
styles: [],
scripts: [],
head: [],
body: [],
env: {},
version: '',
locale: typeof req.locale === 'string' ? req.locale : 'en',
title: 'doodle',
host: '',
assetsUrl: ''
}, req.app.locals, res.locals);
res.render(context.view, _objectSpread({}, context, {
head: [...context.head, 'env.ejs', 'version.ejs'],
env: JSON.stringify(context.env)
}));
}
next();
},
/**
*
* @param {Object} app - Express Application object
*/
initialize(app, {
locals = {},
viewRoots = []
} = {}) {
app.set('view engine', 'ejs');
app.set('views', [...viewRoots]);
console.log('init templating', [...viewRoots], locals);
app.locals = _objectSpread({}, app.locals, locals);
app.get('*', this.html);
}
};
module.exports = TemplatingMiddleware;