{"_id":"@aipeel/json-rules-engine","_rev":"5-bd71bbec9dd5e1bafbdd7d20d8cba02b","name":"@aipeel/json-rules-engine","dist-tags":{"latest":"1.0.1"},"versions":{"0.0.0":{"name":"@aipeel/json-rules-engine","version":"0.0.0","description":"","main":"index.js","scripts":{"publish":"npm publish --access public"},"author":{"name":"Murlidhar Varma"},"license":"ISC","_id":"@aipeel/json-rules-engine@0.0.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-GiRWFOrJhHYfwrT5YdmMXe3NmSTtmc1oEV5QMgil8gFsUgsJPxsHySzlu6d2S9Iq+eznf2KIHC22BXa6vx2XsQ==","shasum":"0114c70061ff96c725688af4f1bc43011bfa01ca","tarball":"https://registry.npmjs.org/@aipeel/json-rules-engine/-/json-rules-engine-0.0.0.tgz","fileCount":20,"unpackedSize":14448,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsqI7CRA9TVsSAnZWagAA6hMP/j6lEr+9izo/hNi4dnzp\n8wSy2vvW65ePI4blzc/2tjhr7v4yH7NiBGPHGM5exUSCHkvWdhnFSoDbeCqs\nlcaT2wUONCCko/QbEPC/YfLXxMEop+XbGg7ivybiC3dOt5sAzLG1Ud1dY/Ht\n+qx++0Vb578OaGt3i8tDJBmqRI0tva9AxK1PZUBY0c0PlG4AGyyGIewxCVUf\nUYtrTY6o9hHBJt0B834gP5FvbrM1HMxBUy/H6MLJsZR8RZ4PwVuGuHh68skP\n/B85lwqmZvN7/tLruggiJc6fBldEPeqMgjf4CtMq4KQKoRfqY4a7Dg0F8Vw1\n5Rm8YDcYOXryd3HS8Cg5a3k7OyVRTnvF9oriTeHReGVC1elOkzD/bzLk6eQy\nvxA+OaWGkGd045DkXNJxQunPF+VJpzdUFURLqjD7efY6S/81VtYYF2/0AvVQ\nTI577bFXN59fVCNMZstaYTrTcJzEDfozGozTaArL6RBQ4V5DoJOfY8mRn8Hz\nTwb7npDzT5ZTRyisVPPX2XijSSbO5RyruLebVqO5yxPExWmL1fA+llaxPINI\n6QH3VCk17SloUYziW6gVu8EAn7Wzz6Bz/J7nptVLSNY71uPx9H9TxoB6IIpO\nR6fKkm7OZxAY/oIF2jnaAb0Pxj0qNASRia3z0vXb5uJcK7fLrdd895iJkTlY\n5i6X\r\n=JMQQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIClSvVvibROLOBKYn1U32fPYNgTSOxy7EiAqCzQof5u+AiBE1eiv11Aj3P0fv56ap9A9JKD3i7hE6TuCb5eeBI9gsA=="}]},"_npmUser":{"name":"murlidhar.varma","email":"murlidhar.varma@gmail.com"},"directories":{},"maintainers":[{"name":"murlidhar.varma","email":"murlidhar.varma@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/json-rules-engine_0.0.0_1622319674563_0.8907104293212751"},"_hasShrinkwrap":false},"0.0.1":{"name":"@aipeel/json-rules-engine","version":"0.0.1","description":"","main":"index.js","scripts":{"publish":"npm publish --access public"},"author":{"name":"Murlidhar Varma"},"license":"ISC","_id":"@aipeel/json-rules-engine@0.0.1","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-g2+9tA2ndnTZC20OcLOj/7wicVLkGyNC2C3zRz6GaWRUWaoYYqhxm6SKVLB8Xd1TkxjyzUWxhsUf9PDMPFp3fw==","shasum":"198833599541ecaa1830b0600fc20095fa45dee2","tarball":"https://registry.npmjs.org/@aipeel/json-rules-engine/-/json-rules-engine-0.0.1.tgz","fileCount":20,"unpackedSize":14448,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsqJsCRA9TVsSAnZWagAAemUP/2UxIW9E8iEZoHLk6APd\newY9SF28GvxrlTF322aE/xGGOjuXSMoiP1mtRKidPDQosJ86REemCiS1YvXq\nXLQbnh5/EryQNS5PNe1FdVPsW9i/cpE2bDQw96vsDZC//7idJZQyoK9cs4Xb\nAZswLUcDDtg2BE8NYKxcqwjNtRikxf0msi++mkDh3yuLkyAbpMMqFzHj9M5b\n9mNhFL5F+PYLEkfLCSa3Fxsszd45ouPsxQAPqpC/xMEiUAPvEbFz/tqmCM5h\nUMvD/wFO6Dl+L2ZIKVIxikYpV6ExWpuJspPv3PFMyg2LHPZyX8vDIS27d9d0\nI5ZPQKBNsxTz21hRuRDW2lsqCWP5+N6TNw5Fb/Iegfgq77Eqn+7KLrPREWxe\nrPXaNwPni20BARG6MZjhAk0vDMMGxkQaiSeTRD9Oh8q3Bf9W1cvS41VOwFs4\nOLJdXTCgyp/P0z2VcxDEbK2VFPGROxBOhi6/rw4kVs9ST/5DEwkyKsw3r0rd\nN6ij1OfkE0qtH630fAQWJZCFb0/glKcrLYD/Ctgh0Xe4EYHQtoiJvqYknkTP\n6fyTHdzIZDdZYNufElUxtkshGJSv6fWTZKbnniv8qUtZ/Bgtic/fh3TXCTZ/\npZ7jpQ0/RJinpBtHs3Cew4kc5SiyMLxlYuk8dyfGUIC810VyawCPiC7NSIk4\n4gLX\r\n=j6kq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNM8Y0DmpUzURTQ6KTfxkKnQqth8BwgaKD5WqdPsCWPQIhAOi56lf8PA2PZVbdj6TIse+0biK+CegPJ02RJWjFkN8d"}]},"_npmUser":{"name":"murlidhar.varma","email":"murlidhar.varma@gmail.com"},"directories":{},"maintainers":[{"name":"murlidhar.varma","email":"murlidhar.varma@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/json-rules-engine_0.0.1_1622319724124_0.3562676872162829"},"_hasShrinkwrap":false},"0.1.0":{"name":"@aipeel/json-rules-engine","version":"0.1.0","description":"","main":"index.js","scripts":{"publish":"npm publish --access public"},"author":{"name":"Murlidhar Varma"},"license":"ISC","_id":"@aipeel/json-rules-engine@0.1.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-qlTaBL5XksPva8CUnTRr1Yk6LY285mty4kpPLMjXx6QxauHUJe7rR2noWWnTBywbG0SIqnFJgtfiEWYN7ytsEA==","shasum":"a4f66df5dd266e6ab96f92ed59130aada09b1b2d","tarball":"https://registry.npmjs.org/@aipeel/json-rules-engine/-/json-rules-engine-0.1.0.tgz","fileCount":20,"unpackedSize":14448,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsqMLCRA9TVsSAnZWagAApS4QAKQOAMm2Wlas/m3hdb3k\nmPyNpvYEVy1/JJHOFmBAcyd+8KOJS+q0DcQ3g81fWs0dY3N8kyr3Tzb9VWRX\n94VQJV442jNRlNEh1v1Aav68D15zM456j/kC9bH93Ub4CrmPVQ6onZkSm9M2\nffoz60/URy/LJNfJCenZ12CEDfGRI2KIhJD2BRt7E1F7Ww/AsniawvVQKrXg\ngU4u9Tj39Vdwv/ISbUQMJwKUVx7lnuTV726yG0S/UsPQ3kMP+ssiUOv7EQZu\nsA3FLVxcpsltzan8Esxd4p3x3oQdB7ifNCKFv0xE2z57Qash1UXgQAR4rcCs\nMr9RrPrIFw8Qk6HuO9iD0QUzFsMnejsJ4+I5ZQaaYOSj7V5VPAWWtE9d6N0B\n/g1k1KCRjuNGksk/ioG8qhlsmjvPPyxvtdt5psix7DHA86eaPYpoqTaArMW2\nh6jbrSQKP72uWUoj15AX/GisJsgf1NiHFU3XpIhcsSg7EOj9vn2AKiXzTaox\nz6BTqR7gGwXZc7jHdWX0N3+4tIztC/Z5JQfFNK9GZQMpdz7pjtSVfbfTLn/a\nfHREAPmmIUs643rDMkN5nGprL/sMZDi+YB1ncyN8gfo6j3bhP8kym/+S+rS4\n2VGXpePxk1bzJTE073mRKJPXqFnduVzbnZOIGqHM10mcNDAtBJC+62UPWViK\nqjwV\r\n=a3mA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBA4bfWda4ZPPMWlg8QEcmIi148O+UdsCvdFlqnjt7/SAiAqQ6/y89DOR6IF6wNMHRsiK3p4v1IFCZB94s05w2c8KQ=="}]},"_npmUser":{"name":"murlidhar.varma","email":"murlidhar.varma@gmail.com"},"directories":{},"maintainers":[{"name":"murlidhar.varma","email":"murlidhar.varma@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/json-rules-engine_0.1.0_1622319882631_0.1453352932377696"},"_hasShrinkwrap":false},"1.0.0":{"name":"@aipeel/json-rules-engine","version":"1.0.0","description":"## What does it do? Pass a Rule and Data to engine and provide synchronous response on whether the Data satisfies the Rules.","main":"index.js","scripts":{"publish":"npm publish --access public"},"author":{"name":"Murlidhar Varma"},"repository":{"type":"git","url":"git+https://github.com/MurlidharVarma/json-rules-engine.git"},"license":"MIT","gitHead":"733a18e6a362cf5673c717eaa370eabb179ddb40","bugs":{"url":"https://github.com/MurlidharVarma/json-rules-engine/issues"},"homepage":"https://github.com/MurlidharVarma/json-rules-engine#readme","_id":"@aipeel/json-rules-engine@1.0.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-dZUIWZWpcF14zh5rumEHFMuDvW/tK+ihmaa45P4f9eW0RuchRbcrnem63ZvhLAl/jMP8/qTFp/CpH0Ukvyvlgw==","shasum":"2c4dd4b860567779ac7c2521379a9d8efd287547","tarball":"https://registry.npmjs.org/@aipeel/json-rules-engine/-/json-rules-engine-1.0.0.tgz","fileCount":24,"unpackedSize":385306,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgs009CRA9TVsSAnZWagAAY8MP/1tHCxXlOiRLs64oGmqx\n9w66FFv5/5zgNwnMRWGAnXNPzsaGD5VgqBRhPUMHeth393TpZgT90y97U+N3\nYTC7DtQW6wJYaL5rQdJn8axpQF1fhR0r4VX5rupOTtwUXBdeHaqfajHEY5H6\nY0I2+9SVPQEfC3dsxYBjigoRCVHN5sIGPDPtJ1eOpU7GKtkUrkfBzApEVWsF\nnJGWR28NHykaM06JqkPjxq6Ffgv6oLJauYCsZ+8RTAVRvVuh9iypXrmCNHDQ\nA/bmoPsjxRhzmLox2viL7gC+1c5aqVzyDumyCLs5NbM9lon1aWW3yzVemme0\n7hpio7wqzRQbsCUWWXckLrr3IfPEdxu66zjXhRPeq5aiVS7632svxYvTctYJ\n5wCRWUyTBxaZ8LbGxfoD7+p58TRJXRJIpWTvYd6WeEWZ7CMTlIrBBppr9dBH\nFupxPXjOAQbub5YAvIu/FPUS3ZDUmsv7nVDSJX5p+Z91qFf3PnqTAqMk9Y0U\nC5ZmAaj3zGfRJdo2zTZe4MupNr/TKdUW/AhQ62mmp1y0zN64moGOuWlkhINa\nt2xIZlNCZ3axSWI01dc9y/MqMBDalbfcUfqJRWPb1vcqptRoaduERE3+fzDv\nxjiAwLRd4rPf3x0r+in5Ee2jtV/VnRp+BS7rTi/GAtlVKRxzgu6a+ih/BWC4\nIGB9\r\n=Xzqn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB0ZnOnOiwpE3N/aA/8B6FXUEIZNxJwkZ1Yk4xOVCCPJAiBBDGcy3ZTXJGbWRB4HgUUnWCEPkEgf4EAQhcBL9YhA4A=="}]},"_npmUser":{"name":"murlidhar.varma","email":"murlidhar.varma@gmail.com"},"directories":{},"maintainers":[{"name":"murlidhar.varma","email":"murlidhar.varma@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/json-rules-engine_1.0.0_1622363452792_0.25679206613820016"},"_hasShrinkwrap":false},"1.0.1":{"name":"@aipeel/json-rules-engine","version":"1.0.1","description":"## What does it do? Pass a Rule and Data to engine and get a synchronous response on whether the Data satisfies the Rules.","main":"index.js","keywords":["json","rules","engine","rules engine","criteria","processor","validator","json rules engine"],"scripts":{"publish":"npm publish --access public"},"author":{"name":"Murlidhar Varma"},"repository":{"type":"git","url":"git+https://github.com/MurlidharVarma/json-rules-engine.git"},"license":"MIT","gitHead":"733a18e6a362cf5673c717eaa370eabb179ddb40","bugs":{"url":"https://github.com/MurlidharVarma/json-rules-engine/issues"},"homepage":"https://github.com/MurlidharVarma/json-rules-engine#readme","_id":"@aipeel/json-rules-engine@1.0.1","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-OMBwY3QoqR63hGh9+613gQ9PgoUpaXjW7yiZP7zXITJ5BsPnd6mzLs62fYZo8wE2x1AXSGcXnETz80nTDoFtrg==","shasum":"d9be96b3382b66e272a9f624de1df9a8657b9915","tarball":"https://registry.npmjs.org/@aipeel/json-rules-engine/-/json-rules-engine-1.0.1.tgz","fileCount":24,"unpackedSize":385422,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgs4ZWCRA9TVsSAnZWagAAZEoP/RxJLVRUXavp4oC/Qmi4\nNs8asCYIWByhAcfFdzR+iEzfTNYKbLKVxzNRqGK1Ezm7oXjvr82gxVyGlzWW\nsi8UNN8z1tVeUZAratGRNjyBj8hTq9oslaCKRXuk7KdNlJF/EdLpRGb4XMXc\nlJgnZR6n23Ednktf8Fe4o/3fBTXNA9IgnKsebBwqzsczhUjlwjTvsVyMWXEa\nfIhKurayy6yfL1U+EAnaWUOyPPoyxEJ7FiXZz1mR1NrqZ+5xvX4BSddRS0mD\nDR3i7RM1FyZy7kHDDqlG4Vd599FI/5hi8dSkhu2vVVn/+zOJuIvyJWe66aup\nYlFt1KdQgObipiGfMLKKDH9+wBt6oD3NKySXEhPWGBYpwIxHkN2oLdxM7Q41\nBI22ictk0MKJpq/ePnQ6ByvNCpYnsWdE3v8T6Vv2Z64Cd/lcYVlkrlfpqD6D\nkQYYPe4yv4jf5Y2m6+qROJwRceRrApz4cdf6OBeZjuo1MqpvFsH/f3PsXfrr\nTojZnuf6ej+aFSLHJeZ7lH7iRpQmrBei/5jQfGuPjZ0sGZNn2h5JF1NUWhVb\n78VH5JQCYdx2r4XQeus9K6c1FnT8Ba5B4ByjR+FSM8CmY/O7fhBRcDephFHf\nRm1ueHpxhDNT1iIZVb8CkOvhhdXRDes98kTg9BMMNJgk3z3ZcsMqb+chLD0e\nRMvC\r\n=mfsr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH7OxMXHvrsFnvwchpDXgslpx4Vt/ObKTNE1BPNslUlNAiBpqf5PTxInY1PgN5Gf8uhpOip8zOkxxPYCwFDnmuflJQ=="}]},"_npmUser":{"name":"murlidhar.varma","email":"murlidhar.varma@gmail.com"},"directories":{},"maintainers":[{"name":"murlidhar.varma","email":"murlidhar.varma@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/json-rules-engine_1.0.1_1622378069554_0.7354765576123568"},"_hasShrinkwrap":false}},"time":{"created":"2021-05-29T20:21:14.263Z","0.0.0":"2021-05-29T20:21:14.684Z","modified":"2022-04-04T12:20:33.949Z","0.0.1":"2021-05-29T20:22:04.272Z","0.1.0":"2021-05-29T20:24:42.750Z","1.0.0":"2021-05-30T08:30:52.959Z","1.0.1":"2021-05-30T12:34:29.777Z"},"maintainers":[{"name":"murlidhar.varma","email":"murlidhar.varma@gmail.com"}],"author":{"name":"Murlidhar Varma"},"license":"MIT","readme":"# JSON Rule Engine\n\n## What does it do?\nPass a Rule and Data to engine and get a synchronous response on whether the Data satisfies the Rules.\n\n![@aipeel/json-rules-engine](./introduction.png)\n\n## Installation\n\n```\n    npm install @aipeel/json-rules-engine\n```\n\n## Usage\n### Step 1: Define Rules JSON\n1. Rules JSON must be an object\n1. Must start with AND or OR which takes array of rule\n    1.  Single Rule Criteria\n    ```\n    {\n        AND: [ Criteria1 ]\n    }\n    ```\n    2. Multiple Rule Criteria --> Criteria 1 and 2 must be satisfied\n    ```\n    {\n        AND: [ Criteria1, Criteria2 .. ]\n    }\n    ```\n    3. Multiple Levels of Rules --> Criteria 1 & 2 must be satisfied and either Criteria3 or Criteria4 must be satisfied\n    ```\n    {\n        AND: [\n                {\n                    AND: [ Criteria1, Criteria2 ...]\n                },\n                {\n                    OR: [Criteria3, Criteria4 ..]\n                }\n            ]\n    }\n    ```\n1. Each Criteria must be an object \n    1. The key in criteria is an operator and value defines the metadata required for the operator to work<br><br>Examples of Criteria\n        ```json\n        { \n            \"between\": { \n                            \"min\": \"10\", \n                            \"max\": \"20\", \n                            \"attribute\": \"discount\" \n                        }\n        }\n        ```\n        ```json\n        { \n            \"in\": { \n                    \"value\": [\"C\",\"Javascript\",\"Python\"], \n                    \"attribute\": \"lang\"\n                }\n        }\n        ```\n    1. List of all criteria given below\n\n        | Operator         | Operator Property   | Description                                                                          | Example                                                                                         |   |\n        |------------------|---------------------|--------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------|---|\n        | between          | min, max, attribute | Check if the property mentioned in  attribute has value between min and max          | ``` {  \"between\" :  {  \"min\" :   \"10\" ,  \"max\" :   \"20\" ,  \"attribute\" :   \"discount\"  }} ```   |   |\n        | lessThan         | value, attribute    | Check if the property mentioned in  attribute has number less than value             | ``` {  \"lessThan\" :  { \"value\" :   \"80\" ,  \"attribute\" :   \"price\" } } ```                      |   |\n        | lessThanEqual    | value, attribute    | Check if the property mentioned in  attribute has number less than or equal value    | ``` {  \"lessThanEqual\" :  { \"value\" :   \"80\" ,  \"attribute\" :   \"price\" } } ```                 |   |\n        | greaterThan      | value, attribute    | Check if the property mentioned in  attribute has number greater than value          | ``` {  \"greaterThan\" :  { \"value\" :   \"80\" ,  \"attribute\" :   \"price\" } } ```                   |   |\n        | greaterThanEqual | value, attribute    | Check if the property mentioned in  attribute has number greater than or equal value | ``` {  \"greaterThanEqual\" :  { \"value\" :   \"80\" ,  \"attribute\" :   \"price\" } } ```              |   |\n        | equal            | value, attribute    | Check if the property mentioned in  attribute has value equal to value provided      | ``` {  \"equal\" :  { \"value\" :   \"80\" ,  \"attribute\" :   \"price\" } } ```                         |   |\n        | contains         | value, attribute    | Check if the property mentioned in  attribute contains the value given.              | ``` {  \"contains\" :  {  \"value\" :   \"great\" ,  \"attribute\" :   \"desc\"  }} ```                   |   |\n        | in               | value, attribute    | Check if the property mentioned in  attribute is available in value array provided.  | ``` {  \"in\" :  {  \"value\" :  [ \"C\" , \"Javascript\" , \"Python\" ],  \"attribute\" :   \"lang\" }}  ``` |   |\n\n    1. A Rules JSON could be defined as\n    ```json\n    { \n        \"AND\": [\n            { \"lessThan\": {\"value\": \"80\", \"attribute\": \"price\"} },\n            { \"greaterThanEqual\": {\"value\": \"20\", \"attribute\": \"price\"} },\n            { \"between\": { \"min\": \"10\", \"max\": \"20\", \"attribute\": \"discount\" }}\n        ]\n    }\n    ```\n    ```json\n    {\n        \"OR\":[\n            { \"contains\": { \"value\": \"great\", \"attribute\": \"desc\" }},\n            { \"contains\": { \"value\": \"works\", \"attribute\": \"features\"}},\n            { \"in\": { \"value\": [\"C\",\"Javascript\",\"Python\"], \"attribute\": \"lang\"}},\n        ]\n    }\n    ```\n\n1. Rules can be recursively nested as shown below\n    ```json\n    {\n        \"AND\": [\n                { \n                    \"AND\": [\n                        { \"lessThan\": {\"value\": \"80\", \"attribute\": \"price\"} },\n                        { \"greaterThanEqual\": {\"value\": \"20\", \"attribute\": \"price\"} },\n                        { \"between\": { \"min\": \"10\", \"max\": \"20\", \"attribute\": \"discount\" }}\n                    ]\n                },\n                {\n                    \"OR\":[\n                        { \"contains\": { \"value\": \"great\", \"attribute\": \"desc\" }},\n                        { \"contains\": { \"value\": \"works\", \"attribute\": \"features\"}},\n                        { \"in\": { \"value\": [\"C\",\"Javascript\",\"Python\"], \"attribute\": \"lang\"}},\n                    ]\n                }\n            ]\n    }\n    ```\n\n### Step2: Pass Data JSON and Rule JSON to Engine\n```js\n    const Engine = require(\"@aipeel/json-rules-engine\")\n\n    Engine.apply(data,rule) // returns boolean - true or false\n```\n\n## Complete end-to-end example below for reference\n\n```js\nconst Engine = require(\"@aipeel/json-rules-engine\")\n\nconst rule = {\n                    \"AND\": [\n                            { \n                                \"AND\": [\n                                    { \"lessThan\": {\"value\": \"80\", \"attribute\": \"price\"} },\n                                    { \"greaterThanEqual\": {\"value\": \"20\", \"attribute\": \"price\"} },\n                                    { \"between\": { \"min\": \"10\", \"max\": \"20\", \"attribute\": \"discount\" }}\n                                ]\n                            },\n                            {\n                                \"OR\":[\n                                    { \"contains\": { \"value\": \"great\", \"attribute\": \"desc\" }},\n                                    { \"contains\": { \"value\": \"works\", \"attribute\": \"features\"}},\n                                    { \"in\": { \"value\": [\"C\",\"Javascript\",\"Python\"], \"attribute\": \"lang\"}},\n                                ]\n                            }\n                        ]\n                    }\n\nlet data = {\n    id: 'ID1001',\n    price: 50,\n    discount: 10,\n    desc: \"This is a great product for developers\",\n    features: [\"No Dependencies\", \"Open to Extension\", \"Synchronous\", \"works\"],\n    tags: [\"json\", \"rule\", \"engine\"],\n    lang: \"Javascript\"\n}\n\n// example 1\nconsole.log(`Does the data conform to rule? --> ${Engine.apply(data,rule)?\"Yes\":\"No\"}`);\n\n//example 2\ndata.price = 100;\nconsole.log(`Does the data conform to rule? --> ${Engine.apply(data,rule)?\"Yes\":\"No\"}`);\n\n//example 3\ndata.price = 50;\ndata.discount = 21;\nconsole.log(`Does the data conform to rule? --> ${Engine.apply(data,rule)?\"Yes\":\"No\"}`);\n```\n\nOutput\n```yml\nDoes the data conform to rule? --> Yes\nDoes the data conform to rule? --> No\nDoes the data conform to rule? --> No\n```","readmeFilename":"README.md","description":"## What does it do? Pass a Rule and Data to engine and get a synchronous response on whether the Data satisfies the Rules.","homepage":"https://github.com/MurlidharVarma/json-rules-engine#readme","repository":{"type":"git","url":"git+https://github.com/MurlidharVarma/json-rules-engine.git"},"bugs":{"url":"https://github.com/MurlidharVarma/json-rules-engine/issues"},"keywords":["json","rules","engine","rules engine","criteria","processor","validator","json rules engine"]}