You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Version 7.x of json-rules-engine represents a major version bump from 6.x, but there is no official changelog documenting the changes. This makes it difficult for users to safely upgrade and understand what breaking changes they need to account for.
The CHANGELOG.md file in the package only goes up to version 6.1.0, leaving versions 6.2.0 through 7.3.1 completely undocumented.
Impact
Users are hesitant to upgrade due to unknown breaking changes
Security vulnerability in jsonpath-plus (CVE-2024-21534) requires upgrading to v7+
Existing issue about "list of breaking changes v7" shows community need for this information
Unofficial Community Changelog (6.5.0 → 7.3.1)
⚠️DISCLAIMER: This changelog is based on code comparison and TypeScript definition analysis. It is NOT official and may be incomplete. Users should perform their own testing before upgrading in production environments.
🔴 BREAKING CHANGES
1. Node.js Version Requirement
- v6.5.0: No engine requirement+ v7.x: Requires Node.js >= 18.0.0
Impact: Code that uses the return value of addOperator() will break.
Example of breaking code:
// This will break in v7constoperators=engine.addOperator('customOp',callback);operators.get('customOp');// ❌ operators is now void// Instead, operators should be tracked separatelyengine.addOperator('customOp',callback);// ✅ Returns void in v7
5. Deprecation: rule.ruleEvent Property
// v6.5.0rule.event// ✅ Available// v7.xrule.ruleEvent// ⚠️ Deprecated (still works but shows warning)rule.event// ✅ Preferred
Impact: Soft breaking change - existing code using rule.event continues to work
6. Event Handler Type Signature
// v6.5.0engine.on('success',handler: EventHandler): thisengine.on('failure',handler: EventHandler): this// v7.xengine.on<T=Event>(eventName: string,handler: EventHandler<T>): this
Impact: More flexible, backwards compatible for JavaScript users. TypeScript users get better type inference.
As reported in Issue #417, jsonpath-plus@10.x serves ESM modules for browsers, but json-rules-engine v7.3.1 only supports CommonJS. This causes issues in browser environments and test runners like Jest/Vitest.
Workaround for Jest/Vitest:
// jest.config.js or vitest.config.js
moduleNameMapper: {"^jsonpath-plus$":
"<rootDir>/node_modules/.pnpm/jsonpath-plus@10.3.0/node_modules/jsonpath-plus/dist/index-node-cjs.cjs"}
Impact: If you're running json-rules-engine in browser tests, you'll need to configure your test runner to use the CommonJS build of jsonpath-plus.
Request to Maintainers
Could the maintainers please:
Update the CHANGELOG.md with official release notes for versions 6.2.0 through 7.3.1
Document any breaking changes that were introduced
Provide a migration guide from v6 to v7
Consider publishing release notes for future versions on the GitHub Releases page
Having an official changelog is crucial for:
Understanding breaking changes before upgrading
Planning migration efforts
Maintaining trust in semantic versioning
Helping users upgrade safely to get the security fix for jsonpath-plus
The security vulnerability in jsonpath-plus makes upgrading to v7 important, but the lack of documentation makes users hesitant to do so.
How This Changelog Was Created
This unofficial changelog was created by:
Comparing TypeScript definitions (types/index.d.ts) between v6.5.0 and v7.3.1
⚠️ This is NOT an exhaustive list. There may be additional changes, bug fixes, or subtle behavior differences not captured here.
Community Contributions Welcome
If others have found additional breaking changes or differences not listed here, please comment below so we can build a more complete picture of what changed in v7.
Summary
Version 7.x of
json-rules-enginerepresents a major version bump from 6.x, but there is no official changelog documenting the changes. This makes it difficult for users to safely upgrade and understand what breaking changes they need to account for.The CHANGELOG.md file in the package only goes up to version 6.1.0, leaving versions 6.2.0 through 7.3.1 completely undocumented.
Impact
jsonpath-plus(CVE-2024-21534) requires upgrading to v7+Unofficial Community Changelog (6.5.0 → 7.3.1)
🔴 BREAKING CHANGES
1. Node.js Version Requirement
2. Security: jsonpath-plus Dependency Updated
This is the primary reason to upgrade to v7.
3. Removed Dependency
Impact: Internal change only, should not affect user code
4. API Change:
addOperator()Return TypeImpact: Code that uses the return value of
addOperator()will break.Example of breaking code:
5. Deprecation:
rule.ruleEventPropertyImpact: Soft breaking change - existing code using
rule.eventcontinues to work6. Event Handler Type Signature
Impact: More flexible, backwards compatible for JavaScript users. TypeScript users get better type inference.
✨ NEW FEATURES
7. Operator Decorators (Major new feature)
New APIs:
Allows wrapping operators with additional logic for preprocessing, logging, or custom validation.
New distribution files added:
dist/operator-decorator.jsdist/operator-map.jsdist/engine-default-operator-decorators.js8. Enhanced Result Types
New TypeScript types for better result handling:
TopLevelConditionResultRuleResultSerializableConditionResultPropertiesBooleanConditionResultPropertiesAllConditionsResult,AnyConditionsResult,NotConditionsResult,ConditionReferenceResult)Enhanced
RuleResultinterface:📝 MIGRATION CHECKLIST
When upgrading from v6.x to v7.x:
addOperator()usage and remove any code that depends on its return valuerule.ruleEventand replace withrule.eventjsonpath-plusto use v10.3.0 CommonJS build (see jsonpath-plus expects browser to use ESM #417)Search commands:
As reported in Issue #417,
jsonpath-plus@10.xserves ESM modules for browsers, butjson-rules-enginev7.3.1 only supports CommonJS. This causes issues in browser environments and test runners like Jest/Vitest.Workaround for Jest/Vitest:
Impact: If you're running
json-rules-enginein browser tests, you'll need to configure your test runner to use the CommonJS build ofjsonpath-plus.Request to Maintainers
Could the maintainers please:
Having an official changelog is crucial for:
jsonpath-plusThe security vulnerability in
jsonpath-plusmakes upgrading to v7 important, but the lack of documentation makes users hesitant to do so.How This Changelog Was Created
This unofficial changelog was created by:
types/index.d.ts) between v6.5.0 and v7.3.1package.jsondifferences (dependencies, engines)dist/directory)Community Contributions Welcome
If others have found additional breaking changes or differences not listed here, please comment below so we can build a more complete picture of what changed in v7.
Related Issues
References
Community Members: Please add your findings in the comments if you discover additional changes during your upgrade process.
Maintainers: Thank you for this excellent library! An official changelog would be greatly appreciated by the community. 🙏