nimma
Version:
Scalable JSONPath engine.
50 lines (39 loc) • 1.31 kB
JavaScript
;
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;