Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | 5x 5x 5x 5x 5x 11x 11x 11x 11x 8x 8x 8x 9x 9x 9x 9x 9x 9x 9x 9x 5x 2x 1x | import { outputHTML } from "./"; import path from "path"; import fs from "fs"; const scopedEval = eval; /** * Use JSONX for express view rendering * * files ending with anything other than '.json' or '.jsonx' are processed as javascript files. Express templates support template views on the __template property. * * @param {string} filePath - path to jsonx express view * @param {object} options - property used for express view {locals} * @param {object} options.__boundConfig - property used to bind this object for JSONX, can be used to add custom components * @param {string} [options.__DOCTYPE="<!DOCTYPE html>"] - html doctype string * @param {*} callback */ export function __express(filePath?: string, options?: any, callback?: any) { try { let jsonxModule = options?.__jsonx; let isJSON = false; if (filePath) { isJSON = ([".json",".jsonx"].includes(path.extname(filePath))); const jsFile = fs.readFileSync(filePath).toString(); jsonxModule = (isJSON) ? scopedEval(`(${jsFile})`) : scopedEval(jsFile); } const resources = Object.assign({}, options); delete resources.__boundConfig; delete resources.__DOCTYPE; delete resources.__jsonx; const context = Object.assign({disableRenderIndexKey:false}, options?.__boundConfig); // if (isJSON) context.useJSON = true; const jsonxRenderedString = outputHTML.call(context, { jsonx: jsonxModule, resources }); const template = `${options?.__DOCTYPE || "<!DOCTYPE html>"} ${jsonxRenderedString}`; if (typeof callback === "function") callback(null, template); else return template; } catch (e) { if (typeof callback === "function") callback(e); else throw e; } } |