Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion dist/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,4 @@ declare class RuleEngine {
prioritize(priority: number, filter?: Record<string, unknown>): void;
}

export { RuleEngine };
export { API, Fact, Options, Rule, RuleEngine };
23 changes: 11 additions & 12 deletions dist/index.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var __defProp = Object.defineProperty;
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var __defProp = Object.defineProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __publicField = (obj, key, value) => {
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
return value;
};

// lib/index.ts
var _lodashclonedeep = require('lodash.clonedeep'); var _lodashclonedeep2 = _interopRequireDefault(_lodashclonedeep);
var _lodashisequal = require('lodash.isequal'); var _lodashisequal2 = _interopRequireDefault(_lodashisequal);
var _compat = require('es-toolkit/compat');
var RuleEngine = class {
constructor(rules, options) {
__publicField(this, "rules", []);
Expand Down Expand Up @@ -52,25 +51,25 @@ var RuleEngine = class {
execute(fact, callback) {
const thisHolder = this;
let complete = false;
const session = _lodashclonedeep2.default.call(void 0, fact);
let lastSession = _lodashclonedeep2.default.call(void 0, fact);
const session = _compat.cloneDeep.call(void 0, fact);
let lastSession = _compat.cloneDeep.call(void 0, fact);
let rules = this.activeRules;
const matchPath = [];
const ignoreFactChanges = this.ignoreFactChanges;
function FnRuleLoop(x) {
const API = {
const API2 = {
rule: () => rules[x],
when: (outcome) => {
if (outcome) {
const _consequence = rules[x].consequence;
_consequence.ruleRef = rules[x].id || rules[x].name || `index_${x}`;
thisHolder.nextTick(() => {
matchPath.push(_consequence.ruleRef);
_consequence.call(session, API, session);
_consequence.call(session, API2, session);
});
} else {
thisHolder.nextTick(() => {
API.next();
API2.next();
});
}
},
Expand All @@ -80,10 +79,10 @@ var RuleEngine = class {
return FnRuleLoop(0);
},
next: () => {
if (!ignoreFactChanges && !_lodashisequal2.default.call(void 0, lastSession, session)) {
lastSession = _lodashclonedeep2.default.call(void 0, session);
if (!ignoreFactChanges && !_compat.isEqual.call(void 0, lastSession, session)) {
lastSession = _compat.cloneDeep.call(void 0, session);
thisHolder.nextTick(() => {
API.restart();
API2.restart();
});
} else {
thisHolder.nextTick(() => {
Expand All @@ -95,7 +94,7 @@ var RuleEngine = class {
rules = thisHolder.activeRules;
if (x < rules.length && !complete) {
const _rule = rules[x].condition;
_rule.call(session, API, session);
_rule.call(session, API2, session);
} else {
thisHolder.nextTick(() => {
session.matchPath = matchPath;
Expand Down
2 changes: 1 addition & 1 deletion dist/node-rules.min.js

Large diffs are not rendered by default.

4 changes: 1 addition & 3 deletions lib/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
import cloneDeep from "lodash.clonedeep";
import isEqual from "lodash.isequal";

import { cloneDeep, isEqual } from 'es-toolkit/compat';
import { Rule, Options, Fact, API } from "./types";

export {Rule, Options, Fact, API}
Expand Down
88 changes: 16 additions & 72 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 1 addition & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,13 @@
"url": "https://github.com/mithunsatheesh/node-rules"
},
"dependencies": {
"lodash.clonedeep": "^4.5.0",
"lodash.isequal": "^4.5.0"
"es-toolkit": "^1.45.1"
},
"devDependencies": {
"@rollup/plugin-commonjs": "^24.0.1",
"@rollup/plugin-node-resolve": "^15.0.1",
"@rollup/plugin-terser": "^0.4.0",
"@types/jest": "^27.0.0",
"@types/lodash.clonedeep": "^4.5.6",
"@types/lodash.isequal": "^4.5.5",
"@types/node": "^16.3.3",
"jest": "^27.0.6",
"jest-cli": "^27.0.6",
Expand Down
5 changes: 4 additions & 1 deletion rollup.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ import terser from "@rollup/plugin-terser";
export default [
{
input: "dist/index.js",
plugins: [nodeResolve(), commonjs(), globals(), terser()],
plugins: [nodeResolve(), commonjs({
exclude: ['node_modules/es-toolkit/dist/compat/predicate/isNative.js', 'node_modules/es-toolkit/**'],
}), globals(), terser()],
output: {
name: "NodeRules",
format: "umd",
Expand All @@ -16,3 +18,4 @@ export default [
},
},
];

3 changes: 2 additions & 1 deletion tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
],
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"allowSyntheticDefaultImports": true
"allowSyntheticDefaultImports": true,
"moduleResolution": "node"
}
}