UNPKG

@dwp/govuk-casa

Version:

A framework for building GOVUK Collect-And-Submit-Applications

54 lines 2.38 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = nunjucksConfig; const node_fs_1 = require("node:fs"); const node_path_1 = require("node:path"); const nunjucks_1 = require("nunjucks"); const dirname_cjs_1 = __importDefault(require("./dirname.cjs")); const CasaTemplateLoader_js_1 = __importDefault(require("./CasaTemplateLoader.js")); const nunjucks_filters_js_1 = require("./nunjucks-filters.js"); /** * @typedef {object} NunjucksOptions * @property {string[]} [views=[]] Template file directories (optional, default * []). Default is `[]` */ /** * Create a Nunjucks environment. * * @param {NunjucksOptions} options Nunjucks options * @param {boolean} govukRebrand GovukRebrand flag * @returns {Environment} Nunjucks Environment instance * @access private */ function nunjucksConfig({ views = [], govukRebrand }) { // Prepare a single Nunjucks environment for all responses to use. Note that // we cannot prepare response-specific global functions/filters if we use a // single environment, but the performance gains of doing so are significant. const loader = new CasaTemplateLoader_js_1.default(views, { watch: false, noCache: false, }); const env = new nunjucks_1.Environment(loader, { autoescape: true, throwOnUndefined: false, trimBlocks: false, lstripBlocks: false, }); // Enhancement to expose loader functions env.modifyBlock = loader.modifyBlock.bind(loader); // Globals // These can't be modified once set. But they can be overridden by res.locals. env.addGlobal("casaVersion", /* eslint-disable-next-line security/detect-non-literal-fs-filename */ JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.resolve)(dirname_cjs_1.default, "../../package.json"))).version); env.addGlobal("govukRebrand", govukRebrand); env.addGlobal("mergeObjects", nunjucks_filters_js_1.mergeObjects); env.addGlobal("includes", nunjucks_filters_js_1.includes); env.addGlobal("formatDateObject", nunjucks_filters_js_1.formatDateObject); env.addGlobal("renderAsAttributes", nunjucks_filters_js_1.renderAsAttributes); return env; } //# sourceMappingURL=nunjucks.js.map