{"_id":"@amn31/filter-multiple-conditions","_rev":"3-5889e7c2da2e67518c2a8ceee5f11ee3","name":"@amn31/filter-multiple-conditions","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@amn31/filter-multiple-conditions","version":"1.0.0","description":"Like a SQL query, filter a array of objects with SQL conditions (see @amn31/contevert2sequelize)","main":"dist/lib/db-filters.js","types":"dist/lib/db-filters.d.ts","scripts":{"test":"ts-node test\\test-filters.ts","build":"tsc"},"keywords":["filter","array","query","sequelize","angular"],"devDependencies":{"ts-node":"~8.3.0","tslint":"~6.1.0","typescript":"~4.0.2"},"directories":{"lib":"lib","test":"test"},"author":{"name":"Morillon Alain","url":"amn31t@gmail.com"},"license":"MIT","gitHead":"6c12e27b652e4ad7441da0b70cc98f0c2f649018","_id":"@amn31/filter-multiple-conditions@1.0.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Pos4c3nLlINhVBik7MH01A/n4E5cWBSbYUeMHoZVRrKCfqDBIkNZy/1t4yC08ZzycGe27CLk4k/3B8Hf7jzdUg==","shasum":"d2519f21f422137f5c4cfcdea12ecbc187d60885","tarball":"https://registry.npmjs.org/@amn31/filter-multiple-conditions/-/filter-multiple-conditions-1.0.0.tgz","fileCount":13,"unpackedSize":42181,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAIHICRA9TVsSAnZWagAARkIP/2C9mFvLL/t5Q0744dlA\n+3E8bvoXk7FCOJzzHulG1qxwlUVChNV3PxajX8Pl9xHi/lm6W7EDrDXW1fkW\nNWlizAy3p17K9PWDeuEn6tUEueH/8uz95K902Oj940gdwczfUY9aDyOs8Tvf\n0TsNF1mX64DU1rV9QTOu670WFTZdUmHvtC3CV7i3o3DBfvsAPUL+9ao1tcW5\nBqtyhavZCBXqbNSETasao4XS1m/UBkmX/rmqr5sBgAESV9yvaNrrNfMDyZ9C\nmHXRaa9mF2iEpnT6Ai3QKXldWUt2PRQJfNX/EN/4WjGKdHnBPrWKuwk20PcP\nFyMil7VUGLZeAEPOdTSDndWi5nQXnq29tZRV1WSp280rO52sJhlgGhPwg4sA\n2bMup6SnLiA33CvA7HkM6YNvWzis+UkX0Eb0OGN3fva/0ezTXeHhzQkP9Bd0\nya51rz4pDDhmmwjklNEGaSJe/Bpdjul5I4dOur3AiJ2CMJs717plTUJn1kyP\nfLbfGmrHoHk4+R/4ixNs4bKvVyfiLl2TNm1yaJNetUXaOnEUoyRA+WoG+AhB\nOjiSc1N5jNKkfT7CGrixrPBAAJtaQadUX6TWegGmPLa4PYRNWTXQs5wOxR4I\nRyrnxGNNwk6JL1UA6K/w142IGWd8KSDYqgPPpQYhgrDUwMk1dsmWvaD4NKv0\ncodp\r\n=/4Bu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAJuLOkkt91LWaooMjQeUz7MqPaDeXy0W7a6pj0+l+Z8AiEA8SW6tRnt0dcT01xQmGFdzdr7E3OewAMYaEIReIBY26g="}]},"_npmUser":{"name":"amn31t","email":"amn31t@gmail.com"},"maintainers":[{"name":"amn31t","email":"amn31t@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/filter-multiple-conditions_1.0.0_1610645960386_0.1699969735268243"},"_hasShrinkwrap":false},"1.0.1":{"name":"@amn31/filter-multiple-conditions","version":"1.0.1","description":"Like a SQL query, filter a array of objects with SQL conditions (see @amn31/contevert2sequelize)","main":"dist/lib/db-filters.js","types":"dist/lib/db-filters.d.ts","scripts":{"test":"ts-node test\\test-filters.ts","build":"tsc"},"keywords":["filter","array","query","sequelize","angular"],"devDependencies":{"ts-node":"~8.3.0","tslint":"~6.1.0","typescript":"~4.0.2"},"directories":{"lib":"lib","test":"test"},"author":{"name":"Morillon Alain","url":"amn31t@gmail.com"},"license":"MIT","gitHead":"af57ab5b12da6fa08048721f26b2ea0fd83e973e","_id":"@amn31/filter-multiple-conditions@1.0.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-1ULxUYVwNaGjq7sbdzFPlSKOP9g2QymB3MRlz4/x6w1kVMZgGOTTmjznCuzb0bvOrvz/+vpiLJ1MtaOFs6NLvA==","shasum":"fc2e89a769cb8f06c865b337b385dd44744fadbb","tarball":"https://registry.npmjs.org/@amn31/filter-multiple-conditions/-/filter-multiple-conditions-1.0.1.tgz","fileCount":13,"unpackedSize":44556,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBHyZCRA9TVsSAnZWagAANjQP/1vppPdmN1iVtLi8Q/Nc\nqaBcR9LiTlXxYyEAraSYNFBlswuoDfq1jomDgq7T53ZYZizI1wf9an72MTNW\nBrDU2BKPr1jyxpiNzZKeKKevZ57mq2uyrWX8p0DV5ZZdGYAVtJggmtgRIV/q\nMEXksHi/Ic/zsRQnhLY0isi2dq4TcdGpMhnY+6oEOitBFqUMm9t7eSStodXB\nRqlhLQOEY/AjFZ8QS40VW7idlHK90JcS0lx2pvivs/hyO5dLfa7xPCY5O/gk\nhQ/30rFRDuQOa+DWPZqMP6/C3lc45v3poyO9BsBd7xV8jNkA3s5fFmjS6y71\nidB1MAnL1n/FlzzrJHFnDuIwHY8+ZlQmg+mI4BolQ7q8ML4cVzGA4/UheHJu\nGb5+HD3YiO9A3QNBm7poVd+uM1A8CPIN+HyTGXvX8IL2Gx/55/I8hZ+Wqtmd\nIbNtcl7Y1jsXY6Dr2dMadmkrZ8Fmlh6lmoztIenulsW37kAv3EGbA5c6uePu\nf2dqrJEgnGia7RVqtGhwWwc3xcZl6RyDMEflmmly1JSWvEutbbylIWinsOZz\nXVEXIJ7U8hYvMKu3RWhoiT2cH1p02YdXh6T8F20fLreiu2EuanWDbOSIgIGg\nk1+oLn3TqFJqYPxujAIJmDBVyqtbkoWBRMGfoD0f0b3mAgBdF/kmOjzHMBX7\n6FpK\r\n=4lrm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE0oKfMMdp+HClMvolSJMisg2lAi5ljo5VkSislOj2y1AiBMnmuYHE1JCstB4EgT8dPP9+Q05BlDBRmmKYBEq8Zynw=="}]},"_npmUser":{"name":"amn31t","email":"amn31t@gmail.com"},"maintainers":[{"name":"amn31t","email":"amn31t@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/filter-multiple-conditions_1.0.1_1610906776568_0.9153399466053544"},"_hasShrinkwrap":false},"1.0.2":{"name":"@amn31/filter-multiple-conditions","version":"1.0.2","description":"Like a SQL query, filter a array of objects with SQL conditions (see @amn31/contevert2sequelize)","main":"dist/lib/db-filters.js","types":"dist/lib/db-filters.d.ts","scripts":{"test":"ts-node test\\test-filters.ts","build":"tsc"},"keywords":["filter","array","query","sequelize","angular"],"devDependencies":{"ts-node":"~8.3.0","tslint":"~6.1.0","typescript":"~4.0.2"},"directories":{"lib":"lib","test":"test"},"author":{"name":"Morillon Alain","url":"amn31t@gmail.com"},"license":"MIT","gitHead":"8ac53d062ec67c940d97483c2e63d54a724f531c","_id":"@amn31/filter-multiple-conditions@1.0.2","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-YeZJ4bJMNw3yJrxOCOibDka79IZ5r1kMcSDfw75VKjmA6gOvNBgzQBlveSEnJpRLWkIfT8Hw9jzxq7gvllboKw==","shasum":"ad16586e4c1cf4be00b079df28d2b82f13e1dcdd","tarball":"https://registry.npmjs.org/@amn31/filter-multiple-conditions/-/filter-multiple-conditions-1.0.2.tgz","fileCount":13,"unpackedSize":47018,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBWTTCRA9TVsSAnZWagAA98kQAI0N4PAUDdKw5j/0SHSC\nSjxQm238gZLSTJvcpPvYDAZU2VbiRxDYXFd9fKIOqR1Zj0PO784XLbmGX8/1\nHtxzw7tQw98W4IfrSaV07OxAE9YpFmXFQ38k9fU1HcxavQwiERc5oxz0hMVv\n8OsNhn93fiM5LdgS/Mg1KKtW1jjlN5TWqht19OP4UHIhDArpDI0qH8V6T4tK\nHaGi6Ti36mB5jppMxgBvZLw2jkEllpI2ylOIdEVb1pDgtvPAY4t1xDozPvpG\nad5b8GpM5FnDbXXNJ8sHNesgpLZF13TTLPX4kqxyFmBNfOaJ9HNYYPdYsn1C\n7IGa3DoMXf+/SNY5k/3xHjK45kw8fhP/CTlByP2y9KpM0JusOAc2k8vvYffl\nIchYXmAu5ZQ8APwWsNDcjdTv+toujW6U9gNQr3cvFwWS3ch2kPIK7rrY+2zk\nrHpQxMUVuCo9HkG0t38c/UPCcTvgK1pajkPEjaEQ/LVz+siRYFP00OEC7xIs\n9C6MHsah/ANqSQqPJIJgOjFZm9oufAHjBlCC2gn6FeyZDSe/T6FCW3S8uhzo\nJw1EWen+oj5HPggx9O2gHlfBfAi3qTJVv/aUrRYC56UjsQLwspOJm8/jHS0s\nMEUJijhnWGFHqtYStU1sDroD5KkooXo8Kl/k2wLfIpak8g1Ql/6etHSI3Vys\nm13/\r\n=uVqu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxkvNZCO4v/LluPhpnNf2oaZFrNreB5nDDUE6HN9LxdAIhALTgsla2k1S2TV91HLySgC2jizSEkHo8q4uJK9BXdZ2P"}]},"_npmUser":{"name":"amn31t","email":"amn31t@gmail.com"},"maintainers":[{"name":"amn31t","email":"amn31t@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/filter-multiple-conditions_1.0.2_1610966226539_0.5559722909195928"},"_hasShrinkwrap":false}},"time":{"created":"2021-01-14T17:39:20.135Z","1.0.0":"2021-01-14T17:39:20.542Z","modified":"2022-04-04T13:50:16.504Z","1.0.1":"2021-01-17T18:06:16.727Z","1.0.2":"2021-01-18T10:37:06.676Z"},"maintainers":[{"name":"amn31t","email":"amn31t@gmail.com"}],"description":"Like a SQL query, filter a array of objects with SQL conditions (see @amn31/contevert2sequelize)","keywords":["filter","array","query","sequelize","angular"],"author":{"name":"Morillon Alain","url":"amn31t@gmail.com"},"license":"MIT","readme":"\r\n# Like a SQL query, filter a array of objects\r\n\r\nTo simplify searching in a array of objects like a SQL query, you can use [amn31@filter-multiple-conditions].\r\nIf datas is stored in database, you can use package [@amn31/convert2sequelize] to complete your needs. \r\n\r\n\r\n# Query example\r\n\r\n```ts\r\n\r\n    // Example of request \r\n    let whereJSON = [ \r\n            [\r\n                \"Imei\",\r\n                \"not like\",\r\n                \"'%33680090%'\"\r\n            ],\r\n            \"and\",\r\n            [\r\n                [\r\n                    \"EnrollmentStatus\",\r\n                    \"=\",\r\n                    \"Unnrolled\"\r\n                ],\r\n                \"or\",\r\n                [\r\n                    \"EnrollmentStatus\",\r\n                    \"=\",\r\n                    \"Enrolled\"\r\n                ],\r\n            ]\r\n        ]\r\n```\r\n\r\n# Installation\r\n\r\n$ npm install @amn31/filter-multiple-conditions\r\n\r\n\r\n# Launch queries\r\n\r\nHow use [amn31@filter-multiple-conditions] ?\r\n\r\n```ts\r\n  \r\n   import { FilterConditions, MaFilter } from \"@amn31/filter-multiple-conditions\"\r\n\r\n    // Create query\r\n    let conditions :FilterConditions = [\r\n        [\r\n            \"id\",\r\n            \">\",\r\n            // Number\r\n            \"13\"\r\n        ],\r\n        \"and\",\r\n        [\r\n            [\r\n                \"isLeasing\",\r\n                \"=\",\r\n                \"1\" // '1' => true, \r\n            ],\r\n            \"or\",\r\n            [\r\n                [\r\n                    \"isLeasing\",\r\n                    \"isnull\",\r\n                    \"\"\r\n                ],\r\n                \"and\",\r\n                [\r\n                    \"Platform\",\r\n                    \"like\",\r\n                    \"%Apple%\"\r\n                ],\r\n            ]\r\n        ]\r\n    ];\r\n\r\n    // Data to filter\r\n    let data = [\r\n        ...\r\n        {\r\n            \"id\": 10,\r\n            \"Imei\": \"01326007739292\",\r\n            \"Platform\": \"Apple\",\r\n            \"Model\": \"iPad 3rd Gen LTE (GSM) (64 GB)\",\r\n            \"OperatingSystem\": \"9.3.5\",\r\n            \"EnrollmentStatus\": \"Enrolled\",\r\n            \"lastseen\": \"2021-02-08\",\r\n            \"isLeasing\": true\r\n        },\r\n        ...\r\n    ]\r\n\r\n    // Result of filtering\r\n    let dataFiltered = MaFilter.FilterByConditions(conditions, data);\r\n\r\n    console.log(dataFiltered);\r\n\r\n    // FilterByConditions can sort result if you add options 'field'\r\n    let dataFilteredAndSorted = MaFilter.FilterByConditions(\r\n        conditions, \r\n        data, \r\n        {\r\n            field: 'id'\r\n        });\r\n    \r\n    // FilterByConditions can   reverse the sorted result if you add options 'reverse'}\r\n    let dataFilteredAndSorted = MaFilter.FilterByConditions(\r\n        conditions, \r\n        data, \r\n        {\r\n            field: 'id',\r\n            reverse: true\r\n        });\r\n    \r\n```\r\n\r\n### Operators \r\n\r\n```sql\r\n    and\r\n    or\r\n    =\r\n    !=\r\n    >\r\n    <\r\n    >=\r\n    <=\r\n    like\r\n    not like\r\n    regex\r\n    notRegexp\r\n    startswith\r\n    endswith\r\n    contains\r\n    isnull\r\n    isnotnull\r\n```\r\n\r\n## License\r\n\r\n[MIT](LICENSE)\r\n\r\n[Angular](https://angular.io/)\r\n\r\n[Sequelize](https://sequelize.org/master/manual/model-querying-basics.html)\r\n\r\n[@amn31/convert2sequelize](https://www.npmjs.com/package/@amn31/convert2sequelize)\r\n\r\n[@amn31/filter-multiple-conditions](https://www.npmjs.com/package/@amn31/filter-multiple-conditions)","readmeFilename":"README.md"}