# All files express.js

0% Statements 0/17
0% Branches 0/10
0% Functions 0/1
0% Lines 0/14

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

     import { outputHTML, } from './main';
    import path from 'path';
    /**
     * Use JSONX for express view rendering
     * @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, options, callback) {
      try {
        const jsonxModule = options.__jsonx || require(filePath);
        const resources = Object.assign({}, options);
        delete resources.__boundConfig;
        delete resources.__DOCTYPE;
        delete resources.__jsonx;
        const context = Object.assign({}, options.__boundConfig);
        if (path.extname('.json')) 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;
      }
    }