UNPKG

sbg-server

Version:
102 lines 3.17 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseDate = exports.nunjucksEnv = exports.getAuthorName = void 0; var crypto_1 = __importDefault(require("crypto")); var moment_timezone_1 = __importDefault(require("moment-timezone")); var nunjucks_1 = __importDefault(require("nunjucks")); /** * get post author name * @param obj * @returns */ function getAuthorName(obj) { if (!obj) return 'unknown'; if (typeof obj === 'string') return obj; if (obj.name) return obj.name; if (obj.nick) return obj.nick; if (obj.nickname) return obj.nickname; return 'unknown'; } exports.getAuthorName = getAuthorName; /** * Nunjucks environment helper * @param paths * @param options * @returns */ function nunjucksEnv(paths, options, context) { var isDev = /dev/i.test(String(process.env.NODE_ENV)); if (!context) context = nunjucks_1.default; var defVal = { noCache: false, autoescape: false, web: { useCache: isDev, async: true } }; var env; if (paths) { if (typeof options === 'object') { env = context.configure(paths, Object.assign(defVal, options)); } else { env = context.configure(paths, defVal); } } if (typeof options === 'object') { env = context.configure(Object.assign(defVal, options)); } else { env = context.configure(defVal); } setupNunjuckHelper(env, context); return env; } exports.nunjucksEnv = nunjucksEnv; function parseDate(input, pattern) { if (pattern === void 0) { pattern = 'LLL'; } return (0, moment_timezone_1.default)(input).format(pattern); } exports.parseDate = parseDate; var md5 = function (data) { return crypto_1.default.createHash('md5').update(data).digest('hex'); }; /** * initiate nunjucks custom function helper * @param env */ function setupNunjuckHelper(env, context) { if (!context) context = nunjucks_1.default; env.addGlobal('getAuthorName', getAuthorName); env.addGlobal('parseDate', parseDate); env.addGlobal('md5', md5); /** * Returns a JSON stringified version of the value, safe for inclusion in an * inline <script> tag. The optional argument 'spaces' can be used for * pretty-printing. * * Output is NOT safe for inclusion in HTML! If that's what you need, use the * built-in 'dump' filter instead. * @see {@link https://stackoverflow.com/a/46427070/6404439} * @example * {{ objectData | json }} * {{ objectData | json(2) }} */ env.addFilter('json', function (value, spaces) { if (value instanceof nunjucks_1.default.runtime.SafeString) { value = value.toString(); } var jsonString = JSON.stringify(value, null, spaces).replace(/</g, '\\u003c'); return new context.runtime.SafeString(jsonString); }); } exports.default = setupNunjuckHelper; //# sourceMappingURL=nunjucks.js.map