UNPKG

nimma

Version:

Scalable JSONPath engine.

50 lines (39 loc) 1.31 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var index = require('../codegen/baseline/index.cjs'); var index$1 = require('../runtime/index.cjs'); var parseExpressions = require('./utils/parse-expressions.cjs'); class Nimma { #compiledFn; #module; #sourceCode; #customShorthands; constructor(expressions, { module = 'esm', customShorthands = null } = {}) { this.#compiledFn = null; this.#module = module; this.#sourceCode = null; this.#customShorthands = customShorthands; this.tree = index.default(parseExpressions.default(expressions)); } get sourceCode() { this.#sourceCode ??= String(this.tree.export(this.#module)); return this.#sourceCode; } query(input, callbacks) { this.#compiledFn ??= Function( 'module, require', `${String(this.tree.export('commonjs'))};return module.exports`, )({}, () => index$1); if (this.#customShorthands === null) { this.#compiledFn(input, callbacks); } else { this.#compiledFn(input, callbacks, this.#customShorthands); } } static query(input, callbacks, options) { const nimma = new Nimma(Object.keys(callbacks), options); nimma.query(input, callbacks); return input => nimma.query(input, callbacks); } } exports.default = Nimma;