Jora is a JavaScript object query engine and language for processing and querying JSON-like data structures efficiently. While currently in a beta development phase (v1.0.0-beta.15), it is considered stable, though its syntax might undergo changes in future releases. The project maintains a relatively frequent release cadence for beta versions, actively introducing new features, improvements, and addressing issues. Jora distinguishes itself with a compact, JavaScript-like syntax for common data manipulation tasks, tolerant query execution that simply returns nothing for unreachable paths instead of throwing errors, and automatic aggregation and deduplication of values. It also includes advanced features like a stat collecting mode for powering suggestions in editors and an extensible Domain Specific Language (DSL) via custom methods and assertions, making it highly adaptable for complex data transformations. It is a core component within the Discovery.js ecosystem, used for data visualization and building interactive reports.
npm install joraVerified import paths — ran on the pinned version, not inferred.
This example demonstrates defining global custom methods and assertions using `setup`, then compiling and executing a Jora query that filters data, uses the custom functions, and aggregates results.
Always review release notes when upgrading to new beta versions and test existing queries thoroughly for compatibility.
Update your `setup` calls to pass an options object: `setup({ methods: { ... }, assertions: { ... } })`.Rewrite function expressions using the new syntax: `$arg => expr` or `($a, $b) => expr`.
Ensure all parameter names within Jora function definitions are unique.
If your custom methods relied on a different `this` context, refactor them to access the new `context` property or adjust based on the updated `this` binding.
Upgrade to `v1.0.0-beta.14` or later immediately to patch this vulnerability. Review any queries using complex escape sequences.
Choose unique names for your custom methods and assertions that do not clash with Jora's built-in functions.
Register your custom method using `jora.setup({ methods: { foo: (value) => ... } })` before compiling the query.Modify the function definition to use unique parameter names for each argument, e.g., `($a, $b) => expr`.
Rename your custom method or assertion to avoid conflict with Jora's built-in functions. Refer to Jora documentation for a list of built-ins.
Update the function definition to use the modern Jora function syntax, such as `$arg => expr` or `($a, $b) => expr`.
No dependency data recorded yet.