Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@doodle/templating / index.js
Size: Mime:
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;