jsonata-extended.js

const jsonataOriginal = require('jsonata');
const jsonataFunctions = require('./jsonata-functions');

/**
 * Return a JSONata expression object that includes the custom functions registered
 *
 * @param {Object} expr - JSONata expression {@link https://www.npmjs.com/package/jsonata|JSONata NPM}
 * @param {Object} options
 * @param {boolean} options.recover: attempt to recover on parse error
 * @param {Function} options.RegexEngine: RegEx class constructor to use
 * @example <caption>Example using the extended JSONata as a dropin replacement for the standard {@link https://www.npmjs.com/package/jsonata|JSONata NPM}</caption>
 * // const jsonata = require('jsonata');
 * const jsonata = require('jsonata-extended');
 * const expr = jsonata('$htmltotext("<p>Leadership has a dark side; a &#34;leadership shadow&#34; that often creates an unknown; lurking fear.</p>")');
 * const result = expr.evaluate();
 * @see {@link https://www.npmjs.com/package/jsonata|JSONata NPM}
 * @returns {{evaluate: evaluate, assign: assign, registerFunction: registerFunction,
 *            ast: ast, errors: errors}} Evaluated expression
 */
function jsonataExtended(expr, options) {
  const expression = jsonataOriginal(expr, options);
  jsonataFunctions.registerWithJSONATA(expression);
  return expression;
}

module.exports = jsonataExtended;