Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
constructor(app) {
const fileLoader = new FileLoader(app);
super(fileLoader, app.config.nunjucks);
this.app = app;
this[LOAD_FILTER]();
// monkey patch `escape` with `app.helper.escape` provided by `egg-security` for better performance
nunjucks.lib.escape = app.Helper.prototype.escape;
// http://disse.cting.org/2016/08/02/2016-08-02-sandbox-break-out-nunjucks-template-engine
const originMemberLookup = nunjucks.runtime.memberLookup;
nunjucks.runtime.memberLookup = function(...args) {
const val = args[1];
if (val === 'prototype' || val === 'constructor') return null;
return originMemberLookup(...args);
};
this.ViewHelper = createHelper(app, this.filters);
}
const Promise = require('bluebird');
const Path = require('path');
const nunjucks = require('nunjucks');
const yaml = require('js-yaml');
const _ = require('lodash');
const requireAll = require('require-all');
const Log = require('../../core/log');
const WebError = require('../error');
const extensions = requireAll(`${__dirname}/extensions`);
const filters = requireAll(`${__dirname}/filters`);
const globals = requireAll(`${__dirname}/globals`);
const templateError = nunjucks.lib.TemplateError;
let lastError = null;
nunjucks.lib.TemplateError = function (message, lineno, colno) {
if (message instanceof WebError) {
message.lineno = lineno;
message.colno = colno;
lastError = message;
throw message;
}
const err = new templateError(message, lineno, colno);
lastError = err;
return err;
};
module.exports = class Engine {
'use strict';
const Promise = require('bluebird');
const Path = require('path');
const nunjucks = require('nunjucks');
const yaml = require('js-yaml');
const _ = require('lodash');
const requireAll = require('require-all');
const Log = require('../../core/log');
const WebError = require('../error');
const extensions = requireAll(`${__dirname}/extensions`);
const filters = requireAll(`${__dirname}/filters`);
const globals = requireAll(`${__dirname}/globals`);
const templateError = nunjucks.lib.TemplateError;
let lastError = null;
nunjucks.lib.TemplateError = function (message, lineno, colno) {
if (message instanceof WebError) {
message.lineno = lineno;
message.colno = colno;
lastError = message;
throw message;
}
const err = new templateError(message, lineno, colno);
lastError = err;
return err;
};