{"_id":"inquire","_rev":"57-4e14493e9ab7772463b22523b57eb3d4","name":"inquire","description":"Generate advanced URL query strings.","dist-tags":{"latest":"0.4.8"},"versions":{"0.0.1":{"name":"inquire","version":"0.0.1","description":"Generate advanced URL query strings.","keywords":["armet","query","string","url"],"homepage":"https://github.com/concordusapps/inquire","bugs":{"url":"https://github.com/concordusapps/inquire/issues"},"license":"MIT","author":{"name":"Concordus Applications"},"contributors":[{"name":"Hardy Jones","email":"jones3.hardy@gmail.com","url":"https://github.com/joneshf"}],"main":"lib/inquire.js","repository":{"type":"git","url":"git://github.com/concordusapps/inquire.git"},"devDependencies":{"grunt":"~0.4.1","grunt-livescript":"~0.5.0"},"_id":"inquire@0.0.1","dist":{"shasum":"1856fab74ee7a1b79d79bd49a1196d9c8aa2a5ac","tarball":"https://registry.npmjs.org/inquire/-/inquire-0.0.1.tgz","integrity":"sha512-3KYNNoYJAuLmjK3124QKMWfLDx4DZ76quc5HvFQ12dQUi6CTWx49/ZhRZnuud6VQ+S2NEXabFVquzTxry0MxYA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFXYLKg8AE/X1pc9m3rExVUG73p1qvzydi9FxNrvXUzLAiAretx8GZVwy01KVjgtOdJWW4ypJ71RmbI5QsdPcMS4Xg=="}]},"_from":".","_npmVersion":"1.2.14","_npmUser":{"name":"joneshf","email":"jones3.hardy@gmail.com"},"maintainers":[{"name":"joneshf","email":"jones3.hardy@gmail.com"}],"directories":{}},"0.0.2":{"name":"inquire","version":"0.0.2","description":"Generate advanced URL query strings.","keywords":["armet","query","string","url"],"homepage":"https://github.com/concordusapps/inquire","bugs":{"url":"https://github.com/concordusapps/inquire/issues"},"license":"MIT","author":{"name":"Concordus Applications"},"contributors":[{"name":"Hardy Jones","email":"jones3.hardy@gmail.com","url":"https://github.com/joneshf"}],"main":"lib/inquire.js","repository":{"type":"git","url":"git://github.com/concordusapps/inquire.git"},"scripts":{"test":"mocha -R spec --compilers ls:LiveScript ./test/*.ls"},"devDependencies":{"chai":"~1.7.0","grunt":"~0.4.1","grunt-livescript":"~0.5.0","LiveScript":"~1.1.1","mocha":"~1.11.0","prelude-ls":"~1.0.0"},"engines":{"node":">=0.8.22"},"_id":"inquire@0.0.2","dist":{"shasum":"3648610d3cd73c7c092274c80caa3c28482af121","tarball":"https://registry.npmjs.org/inquire/-/inquire-0.0.2.tgz","integrity":"sha512-uSF9aclsPpPDwRfMcXudqjDc2wfQryW96QSaOryvP4RcVFXR0oThH5SzFvK1sDXg2w/za2q2oovUbkwELzeSOg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCK2raJtBBvpG5kLWrOmpsrrOYBQzGUyu5NeJhubcC3ZAIhAMAbVTJxqT3xuRu3V6sFnz1N9UHLsTRwsk2QbcjY2cRp"}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"joneshf","email":"jones3.hardy@gmail.com"},"maintainers":[{"name":"joneshf","email":"jones3.hardy@gmail.com"}],"directories":{}},"0.0.3":{"name":"inquire","version":"0.0.3","description":"Generate advanced URL query strings.","keywords":["armet","query","string","url"],"homepage":"https://github.com/concordusapps/inquire","bugs":{"url":"https://github.com/concordusapps/inquire/issues"},"license":"MIT","author":{"name":"Concordus Applications"},"contributors":[{"name":"Hardy Jones","email":"jones3.hardy@gmail.com","url":"https://github.com/joneshf"}],"main":"lib/inquire.js","repository":{"type":"git","url":"git://github.com/concordusapps/inquire.git"},"scripts":{"test":"mocha -R spec --compilers ls:LiveScript ./test/*.ls"},"dependencies":{"prelude-ls":"~1.0.0"},"devDependencies":{"chai":"~1.7.0","grunt":"~0.4.1","grunt-livescript":"~0.5.0","LiveScript":"~1.1.1","mocha":"~1.11.0","prelude-ls":"~1.0.0"},"engines":{"node":">=0.8.22"},"_id":"inquire@0.0.3","dist":{"shasum":"5ec793416c40b3e7ef3f29a387f5faefec1bc33e","tarball":"https://registry.npmjs.org/inquire/-/inquire-0.0.3.tgz","integrity":"sha512-OQPF2QFXVfR1CGUZnFjfCleBEZfHn88BOU0zlXS8q2sCLD1+7LvBvN3uxMHSbEcLO6dKP3GbEJtzsR4G2TCqvA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBtzEOW+vYxPvjy66bt/VC+mpu2edLaUVbRDpLGPo8ngIhAOvDWEisJAcIdZReQewqkMEyx8fvHvazb8J34EMuo7UK"}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"joneshf","email":"jones3.hardy@gmail.com"},"maintainers":[{"name":"joneshf","email":"jones3.hardy@gmail.com"}],"directories":{}},"0.0.4":{"name":"inquire","version":"0.0.4","description":"Generate advanced URL query strings.","keywords":["armet","query","string","url"],"homepage":"https://github.com/concordusapps/inquire","bugs":{"url":"https://github.com/concordusapps/inquire/issues"},"license":"MIT","author":{"name":"Concordus Applications"},"contributors":[{"name":"Hardy Jones","email":"jones3.hardy@gmail.com","url":"https://github.com/joneshf"}],"main":"lib/inquire.js","repository":{"type":"git","url":"git://github.com/concordusapps/inquire.git"},"scripts":{"test":"mocha -R spec --compilers ls:LiveScript ./test/*.ls"},"devDependencies":{"chai":"~1.7.0","grunt":"~0.4.1","grunt-livescript":"~0.5.0","LiveScript":"~1.1.1","mocha":"~1.11.0"},"engines":{"node":">=0.8.22"},"_id":"inquire@0.0.4","dist":{"shasum":"77278aabdce21a9abb367047453ffc469c5f6f0e","tarball":"https://registry.npmjs.org/inquire/-/inquire-0.0.4.tgz","integrity":"sha512-Bnu+MTA+RSM44rZFz2kyQne7guFEC5IPx54pe5wtei/YYAtEmKnfpkxpwXDyA6k8ryb71GDajJULFSPXaH++NQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICqFKZRi7i2Pptu/ScSMCgIYHKh1HvHXiL9P2A3EeexCAiEA/U5n50FGVv62qGphFgHSq8dyht/qgaX1vBJH1ZoOJeY="}]},"_from":".","_npmVersion":"1.2.14","_npmUser":{"name":"joneshf","email":"jones3.hardy@gmail.com"},"maintainers":[{"name":"joneshf","email":"jones3.hardy@gmail.com"}],"directories":{}},"0.0.5":{"name":"inquire","version":"0.0.5","description":"Generate advanced URL query strings.","keywords":["armet","query","string","url"],"homepage":"https://github.com/concordusapps/inquire","bugs":{"url":"https://github.com/concordusapps/inquire/issues"},"license":"MIT","author":{"name":"Concordus Applications"},"contributors":[{"name":"Hardy Jones","email":"jones3.hardy@gmail.com","url":"https://github.com/joneshf"}],"main":"lib/inquire.js","repository":{"type":"git","url":"git://github.com/concordusapps/inquire.git"},"scripts":{"test":"mocha -R spec --compilers ls:LiveScript ./test/*.ls"},"devDependencies":{"chai":"~1.7.0","grunt":"~0.4.1","grunt-livescript":"~0.5.0","LiveScript":"~1.1.1","mocha":"~1.11.0"},"engines":{"node":">=0.8.22"},"_id":"inquire@0.0.5","dist":{"shasum":"d7122873a18ee52d0e5b98feb7d4834b6242fdc7","tarball":"https://registry.npmjs.org/inquire/-/inquire-0.0.5.tgz","integrity":"sha512-zkEuzXQqf2V0CgD7UAvIglmYYXS/gSGDmdt3fJw3FAw30aIMOjbuIhIGDOPFMvT3dK6rxL59B3IkY3oIT3AAew==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDvTlbTbsoRaEZmX8Bi9SlCevVf7Cq5UxigkeswGyhahQIhANDrd0Ljx1p/Mub2g4OiN82JGzoLtEK/yJzAKSqpItmv"}]},"_from":".","_npmVersion":"1.2.14","_npmUser":{"name":"joneshf","email":"jones3.hardy@gmail.com"},"maintainers":[{"name":"joneshf","email":"jones3.hardy@gmail.com"}],"directories":{}},"0.0.6":{"name":"inquire","version":"0.0.6","description":"Generate advanced URL query strings.","keywords":["armet","query","string","url"],"homepage":"https://github.com/concordusapps/inquire","bugs":{"url":"https://github.com/concordusapps/inquire/issues"},"license":"MIT","author":{"name":"Concordus Applications"},"contributors":[{"name":"Hardy Jones","email":"jones3.hardy@gmail.com","url":"https://github.com/joneshf"}],"main":"lib/inquire.js","repository":{"type":"git","url":"git://github.com/concordusapps/inquire.git"},"scripts":{"test":"mocha -R spec --compilers ls:LiveScript ./test/*.ls"},"devDependencies":{"chai":"~1.7.0","grunt":"~0.4.1","grunt-livescript":"~0.5.0","LiveScript":"~1.1.1","mocha":"~1.11.0"},"engines":{"node":">=0.8.22"},"_id":"inquire@0.0.6","dist":{"shasum":"168a133df79125a0961b14e68127c89708b4e3cc","tarball":"https://registry.npmjs.org/inquire/-/inquire-0.0.6.tgz","integrity":"sha512-xtBJTyMnr+HqfSWis7PnVmG0ou1AkEU9MrvHesT/rrkZJxgoYe/vqXAnAW4oyqeiuMlCkaV2Vz+h936ycfuDVA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAvfONlD28p0NiS96fwPGkRgmqCwblz87dR8WKGq7F6lAiEA/Lz6qEwN7sNHousFtCCOoBiPlrEh/tTlj/h7Y7tqV6U="}]},"_from":".","_npmVersion":"1.2.14","_npmUser":{"name":"joneshf","email":"jones3.hardy@gmail.com"},"maintainers":[{"name":"joneshf","email":"jones3.hardy@gmail.com"}],"directories":{}},"0.1.0":{"name":"inquire","version":"0.1.0","description":"Generate advanced URL query strings.","keywords":["armet","query","string","url"],"homepage":"https://github.com/concordusapps/inquire","bugs":{"url":"https://github.com/concordusapps/inquire/issues"},"license":"MIT","author":{"name":"Concordus Applications"},"contributors":[{"name":"Hardy Jones","email":"jones3.hardy@gmail.com","url":"https://github.com/joneshf"}],"main":"lib/inquire.js","repository":{"type":"git","url":"git://github.com/concordusapps/inquire.git"},"scripts":{"test":"mocha -R nyan --compilers ls:LiveScript test/*.ls","cover":"istanbul cover _mocha -- -R nyan --compilers ls:LiveScript test/*.ls"},"devDependencies":{"chai":"~1.7.0","grunt":"~0.4.1","grunt-livescript":"~0.5.0","istanbul":"~0.1.37","LiveScript":"~1.1.1","mocha":"~1.11.0"},"engines":{"node":">=0.8.22"},"_id":"inquire@0.1.0","dist":{"shasum":"eca6b0ea4c2ccff586b75e95ae9fd539d74c43a6","tarball":"https://registry.npmjs.org/inquire/-/inquire-0.1.0.tgz","integrity":"sha512-y20XrF2lM6HvV9Qebw0Wbc8sdAXEVfZ334CKp414JMCRx9+/suGsPMI4EEGvzzcqmmdsoMLpMrVBu2dXLc94YA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC9ipgrvhqmC0+wHlA0nqzfsySEvXQ8xVNhLpJ7z3zQaAiEAlOoH6lzbJHTWRUl5j+LEaa0wIGDd8T+ZdZ8AWgRniWw="}]},"_from":".","_npmVersion":"1.2.14","_npmUser":{"name":"joneshf","email":"jones3.hardy@gmail.com"},"maintainers":[{"name":"joneshf","email":"jones3.hardy@gmail.com"}],"directories":{}},"0.1.1":{"name":"inquire","version":"0.1.1","description":"Generate advanced URL query strings.","keywords":["armet","query","string","url"],"homepage":"https://github.com/concordusapps/inquire","bugs":{"url":"https://github.com/concordusapps/inquire/issues"},"license":"MIT","author":{"name":"Concordus Applications"},"contributors":[{"name":"Hardy Jones","email":"jones3.hardy@gmail.com","url":"https://github.com/joneshf"}],"main":"lib/inquire.js","repository":{"type":"git","url":"git://github.com/concordusapps/inquire.git"},"scripts":{"test":"mocha -R nyan --compilers ls:LiveScript test/*.ls","coverage":"istanbul cover _mocha -- -R nyan --compilers ls:LiveScript test/*.ls","coveralls":"cat coverage/lcov.info | coveralls"},"devDependencies":{"chai":"~1.7.0","coveralls":"~2.0.16","grunt":"~0.4.1","grunt-livescript":"~0.5.0","istanbul":"~0.1.37","LiveScript":"~1.1.1","mocha":"~1.11.0","mocha-lcov-reporter":"0.0.1"},"engines":{"node":">=0.8.22"},"_id":"inquire@0.1.1","dist":{"shasum":"f242c14cb3401359f21b4d497af4814a0190df4a","tarball":"https://registry.npmjs.org/inquire/-/inquire-0.1.1.tgz","integrity":"sha512-RIyaxJbsGMPGfEZUgaPxaxcE+TNk9nXVx4Fy9D8fhUFmItDNzGCg60u240QtJhoECKHRg+y8Qs/d6bRBCGlPQA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGtVG1w4CQHobkarjiCyxJ74JtWNcbkhBjafuWVGuJwGAiBnLifoyP4IabW3xBmn+kUM3x2q06jTpOzyTb93Kc0Zmg=="}]},"_from":".","_npmVersion":"1.2.14","_npmUser":{"name":"joneshf","email":"jones3.hardy@gmail.com"},"maintainers":[{"name":"joneshf","email":"jones3.hardy@gmail.com"}],"directories":{}},"0.2.0":{"name":"inquire","version":"0.2.0","description":"Generate advanced URL query strings.","keywords":["armet","query","string","url"],"homepage":"https://github.com/concordusapps/inquire","bugs":{"url":"https://github.com/concordusapps/inquire/issues"},"license":"MIT","author":{"name":"Concordus Applications"},"contributors":[{"name":"Hardy Jones","email":"jones3.hardy@gmail.com","url":"https://github.com/joneshf"}],"main":"lib/inquire.js","repository":{"type":"git","url":"git://github.com/concordusapps/inquire.git"},"scripts":{"test":"mocha -R nyan --compilers ls:LiveScript test/*.ls","coverage":"istanbul cover _mocha -- -R nyan --compilers ls:LiveScript test/*.ls","coveralls":"cat coverage/lcov.info | coveralls"},"devDependencies":{"chai":"~1.7.0","commonjs-everywhere":"~0.8.0","coveralls":"~2.0.16","escodegen":"~0.0.23","esprima":"~1.0.3","grunt":"~0.4.0","grunt-livescript":"~0.5.0","istanbul":"~0.1.37","jison":"~0.4.6","LiveScript":"~1.1.1","mocha":"~1.12.0","mocha-lcov-reporter":"~0.0.1"},"engines":{"node":">=0.8.22"},"_id":"inquire@0.2.0","dist":{"shasum":"29f3afcb59189f17d81ccdbf9347d4895c464197","tarball":"https://registry.npmjs.org/inquire/-/inquire-0.2.0.tgz","integrity":"sha512-WmyOuMvikPUMB3Vrgplw1IVPLsuELw1cd855EPS8gEkqm+sgWTrOEq4kCtj60EDa35i20hIDhTKYls8jsaOrYA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICNSHpF2JoI5eUj6/8Cn0KhmfO3kEd6rRNFPiZvvqmKtAiBkYdauYlT0aWQNfCsVRi1S7c2pGRPRXI8ebUDTayA22Q=="}]},"_from":".","_npmVersion":"1.2.14","_npmUser":{"name":"joneshf","email":"jones3.hardy@gmail.com"},"maintainers":[{"name":"joneshf","email":"jones3.hardy@gmail.com"}],"directories":{}},"0.2.1":{"name":"inquire","version":"0.2.1","description":"Generate advanced URL query strings.","keywords":["armet","query","string","url"],"homepage":"https://github.com/concordusapps/inquire","bugs":{"url":"https://github.com/concordusapps/inquire/issues"},"license":"MIT","author":{"name":"Concordus Applications"},"contributors":[{"name":"Hardy Jones","email":"jones3.hardy@gmail.com","url":"https://github.com/joneshf"}],"main":"lib/inquire.js","repository":{"type":"git","url":"git://github.com/concordusapps/inquire.git"},"scripts":{"test":"mocha -R nyan --compilers ls:LiveScript test/*.ls","coverage":"istanbul cover _mocha -- -R nyan --compilers ls:LiveScript test/*.ls","coveralls":"cat coverage/lcov.info | coveralls"},"devDependencies":{"chai":"~1.7.0","commonjs-everywhere":"~0.9.0","coveralls":"~2.0.16","escodegen":"~0.0.23","esprima":"~1.0.3","grunt":"~0.4.0","grunt-livescript":"~0.5.0","istanbul":"~0.1.37","jison":"~0.4.6","LiveScript":"~1.1.1","mocha":"~1.12.0","mocha-lcov-reporter":"~0.0.1"},"engines":{"node":">=0.8.22"},"_id":"inquire@0.2.1","dist":{"shasum":"6cd5a098a397cd3e2e607c2b9500c0b39537feea","tarball":"https://registry.npmjs.org/inquire/-/inquire-0.2.1.tgz","integrity":"sha512-qM3ZV0nMmCsW8C3jBRtQSV7smvwM/N0FwoZu/Xi/KRs8lrteK3XaHz7sYNEt2z72Pt/cFmtmcFz71UIITb3dSQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHxlshhVAwIDh1X+0SP+spfAGkxmI/OV3X6N+DqPD1KwAiEA0GMn3ATxPasKIB80g3qUF+y2TVuUTgGLwTo8F7hLFjk="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"joneshf","email":"jones3.hardy@gmail.com"},"maintainers":[{"name":"joneshf","email":"jones3.hardy@gmail.com"}],"directories":{}},"0.3.0":{"name":"inquire","version":"0.3.0","description":"Generate advanced URL query strings.","keywords":["armet","query","string","url"],"homepage":"https://github.com/concordusapps/inquire.js","bugs":{"url":"https://github.com/concordusapps/inquire.js/issues"},"license":"MIT","author":{"name":"Concordus Applications"},"contributors":[{"name":"Hardy Jones","email":"jones3.hardy@gmail.com","url":"https://github.com/joneshf"}],"main":"lib/inquire.js","repository":{"type":"git","url":"git://github.com/concordusapps/inquire.js.git"},"scripts":{"coverage":"istanbul cover _mocha -- -R nyan --compilers ls:LiveScript test/*.ls","coveralls":"cat coverage/lcov.info | coveralls","test":"mocha -R nyan --compilers ls:LiveScript test/*.ls"},"devDependencies":{"chai":"~1.7.0","claire":"~0.4.1","coveralls":"~2.1.0","grunt":"~0.4.0","grunt-livescript":"~0.5.0","istanbul":"~0.1.37","jison":"~0.4.6","LiveScript":"~1.2.0","mocha":"~1.12.0","mocha-lcov-reporter":"~0.0.1"},"engines":{"node":">=0.8.22"},"_id":"inquire@0.3.0","dist":{"shasum":"13a95c843223bdc46752ac4fe7148d9684fdeb88","tarball":"https://registry.npmjs.org/inquire/-/inquire-0.3.0.tgz","integrity":"sha512-lsnCjC/EUfuFGOxnRZNIiFyFLa9eJ2WPfoUTPGYOMkE/OWEC9yGzS1ycVTjBFh53iZNR8h6sRgkD+RTKhbF2uQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDu2V827OQmnwW0Z/DPf6cdQWDuZ5wiXHzfdBZnr6EnmAIhAIsf1h+oNC4QET26/I2Jk9wN526el3rJ99zHbWK9fBJf"}]},"_from":".","_npmVersion":"1.2.14","_npmUser":{"name":"joneshf","email":"jones3.hardy@gmail.com"},"maintainers":[{"name":"joneshf","email":"jones3.hardy@gmail.com"}],"directories":{}},"0.3.1":{"name":"inquire","version":"0.3.1","description":"Generate advanced URL query strings.","keywords":["armet","query","string","url"],"homepage":"https://github.com/concordusapps/inquire.js","bugs":{"url":"https://github.com/concordusapps/inquire.js/issues"},"license":"MIT","author":{"name":"Concordus Applications"},"contributors":[{"name":"Hardy Jones","email":"jones3.hardy@gmail.com","url":"https://github.com/joneshf"}],"main":"lib/inquire.js","repository":{"type":"git","url":"git://github.com/concordusapps/inquire.js.git"},"scripts":{"coverage":"istanbul cover _mocha -- -R nyan --compilers ls:LiveScript test/*.ls","coveralls":"cat coverage/lcov.info | coveralls","test":"mocha -R nyan --compilers ls:LiveScript test/*.ls"},"devDependencies":{"chai":"~1.7.0","claire":"~0.4.1","coveralls":"~2.1.0","grunt":"~0.4.0","grunt-browserify":"~1.2.1","grunt-livescript":"~0.5.0","istanbul":"~0.1.37","jison":"~0.4.6","liveify":"~0.3.0","LiveScript":"~1.2.0","mocha":"~1.12.0","mocha-lcov-reporter":"~0.0.1"},"engines":{"node":">=0.8.22"},"browserify":{"transform":["liveify"]},"testling":{"browsers":{"android-browser":[4.2],"chrome":[20,21,22,23,24,25,"canary"],"firefox":[15,16,17,18,19,"nightly"],"ie":[8,9,10],"ipad":[6],"iphone":[6],"opera":[12,"next"],"safari":[6]},"harness":"mocha","files":"test/*.ls"},"_id":"inquire@0.3.1","dist":{"shasum":"440ce0263b082646f0e9c3226256dd3c14ebfaaf","tarball":"https://registry.npmjs.org/inquire/-/inquire-0.3.1.tgz","integrity":"sha512-Bnivs82PmxxWG/L1dQ3pqupdUfVBFYaC2Nh7gX0PMt3XAUseBA2xbWN3rT3L/05e/F9h7NxCSfRLBTw1OaNQ5g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDdHlB0TMiTprOXMQb3plRh09Z2/x7tr+li7wVxfaBrzAiEAhWrGkLaXECYvpdg1HBMmzfjkQhclWprWdiXGK6QgHvI="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"joneshf","email":"jones3.hardy@gmail.com"},"maintainers":[{"name":"joneshf","email":"jones3.hardy@gmail.com"}],"directories":{}},"0.3.2":{"name":"inquire","version":"0.3.2","description":"Generate advanced URL query strings.","keywords":["armet","query","string","url"],"homepage":"https://github.com/concordusapps/inquire.js","bugs":{"url":"https://github.com/concordusapps/inquire.js/issues"},"license":"MIT","author":{"name":"Concordus Applications"},"contributors":[{"name":"Hardy Jones","email":"jones3.hardy@gmail.com","url":"https://github.com/joneshf"}],"main":"lib/inquire.js","repository":{"type":"git","url":"git://github.com/concordusapps/inquire.js.git"},"scripts":{"coverage":"istanbul cover _mocha -- -R nyan --compilers ls:LiveScript test/*.ls","coveralls":"cat coverage/lcov.info | coveralls","test":"mocha -R nyan --compilers ls:LiveScript test/*.ls"},"devDependencies":{"chai":"~1.7.0","claire":"~0.4.1","coveralls":"~2.3.0","grunt":"~0.4.0","grunt-browserify":"~1.2.1","grunt-livescript":"~0.5.0","istanbul":"~0.1.37","jison":"~0.4.6","liveify":"~0.3.0","LiveScript":"~1.2.0","mocha":"~1.12.0","mocha-lcov-reporter":"~0.0.1"},"engines":{"node":">=0.8.22"},"browserify":{"transform":["liveify"]},"testling":{"browsers":{"android-browser":[4.2],"chrome":[20,21,22,23,24,25,"canary"],"firefox":[15,16,17,18,19,"nightly"],"ie":[8,9,10],"ipad":[6],"iphone":[6],"opera":[12,"next"],"safari":[6]},"harness":"mocha","files":"test/*.ls"},"_id":"inquire@0.3.2","dist":{"shasum":"496e0e7ab7a36435ddd66665713dcc1d83d6fbfe","tarball":"https://registry.npmjs.org/inquire/-/inquire-0.3.2.tgz","integrity":"sha512-MYKlgQJxlvbnLNfIejPillwHEsgy7it7z8wFPTZ/ApHLe2rUAIza0a6Y5tdy+igWGkint8kZrFLBfwQRaKtnQQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0yeWugbdjgEw7jUAlK09BcBGcaxeZ3IHGPl3xq+TMGQIgHodQkBrwoICNJaW/u+fDJZt+a072zebvNokZ1RFl7OQ="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"joneshf","email":"jones3.hardy@gmail.com"},"maintainers":[{"name":"joneshf","email":"jones3.hardy@gmail.com"}],"directories":{}},"0.4.0":{"name":"inquire","version":"0.4.0","description":"Generate advanced URL query strings.","keywords":["armet","query","string","url"],"homepage":"https://github.com/concordusapps/inquire.js","bugs":{"url":"https://github.com/concordusapps/inquire.js/issues"},"license":"MIT","author":{"name":"Concordus Applications"},"contributors":[{"name":"Hardy Jones","email":"jones3.hardy@gmail.com","url":"https://github.com/joneshf"}],"main":"lib/inquire.js","repository":{"type":"git","url":"git://github.com/concordusapps/inquire.js.git"},"devDependencies":{"grunt":"~0.4.0","grunt-purescript":"~0.2.0"},"engines":{"node":">=0.8.22"},"_id":"inquire@0.4.0","dist":{"shasum":"df01cc42319d406003c87a465bc7615aad917c35","tarball":"https://registry.npmjs.org/inquire/-/inquire-0.4.0.tgz","integrity":"sha512-P57qtK0QSh4QenNmb5POFgMxjhsgdf4F79n2yDVMuue2iXWge1kMWpsk2MaETEVMm4yp0Vh56QtEeBdNkLnCVA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDVS4//lWrUAUsCLjQdIpa8udUhHozN9mTlz/UJz3wGKAiEA2hK8RgJJvq0qQfKcVaaK8TLmpQBIz8mCBst6YCnX8AQ="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"joneshf","email":"jones3.hardy@gmail.com"},"maintainers":[{"name":"joneshf","email":"jones3.hardy@gmail.com"}],"directories":{}},"0.4.1":{"name":"inquire","version":"0.4.1","description":"Generate advanced URL query strings.","keywords":["armet","query","string","url"],"homepage":"https://github.com/concordusapps/inquire.js","bugs":{"url":"https://github.com/concordusapps/inquire.js/issues"},"license":"MIT","author":{"name":"Concordus Applications"},"contributors":[{"name":"Hardy Jones","email":"jones3.hardy@gmail.com","url":"https://github.com/joneshf"}],"main":"lib/inquire.js","repository":{"type":"git","url":"git://github.com/concordusapps/inquire.js.git"},"devDependencies":{"grunt":"~0.4.0","grunt-purescript":"~0.2.0"},"engines":{"node":">=0.8.22"},"_id":"inquire@0.4.1","dist":{"shasum":"89ffb732763dc3b206692a96e165ff00fd150040","tarball":"https://registry.npmjs.org/inquire/-/inquire-0.4.1.tgz","integrity":"sha512-1DknEg82R5rnPj2AEeKC/Z70LNh9wywRJ7vZ/Kg5Ls9cWJxz0vr5w7adiPz7e5pW8Q7JVRpP406eS2s1bnKofg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBLX+0MrwmrNWdQfKySDuaPlPZBHQezZx2AFhFuBvTlUAiEA4eU3N6wjcVGZCNYspqb/lhoULSiVioSrgWo5QROv8X0="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"joneshf","email":"jones3.hardy@gmail.com"},"maintainers":[{"name":"joneshf","email":"jones3.hardy@gmail.com"}],"directories":{}},"0.4.2":{"name":"inquire","version":"0.4.2","description":"Generate advanced URL query strings.","keywords":["armet","query","string","url"],"homepage":"https://github.com/concordusapps/inquire.js","bugs":{"url":"https://github.com/concordusapps/inquire.js/issues"},"license":"MIT","author":{"name":"Concordus Applications"},"contributors":[{"name":"Hardy Jones","email":"jones3.hardy@gmail.com","url":"https://github.com/joneshf"}],"main":"lib/inquire.js","repository":{"type":"git","url":"git://github.com/concordusapps/inquire.js.git"},"devDependencies":{"grunt":"~0.4.0","grunt-purescript":"~0.2.0"},"engines":{"node":">=0.8.22"},"_id":"inquire@0.4.2","dist":{"shasum":"09afc82dce7ca8c47f2281aad35bd4afebded4d1","tarball":"https://registry.npmjs.org/inquire/-/inquire-0.4.2.tgz","integrity":"sha512-NiKAu/pdh82gvsCpDRSa4mdzXUfs3S9esiMQMo91w85xe3w2gM/4vpIk3DvFbOytsv5PKd3TIfyJzIOgeWc66A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+IU4n/NMI1LX38xKa/lVII5irzcYr8T/Oo0lbeMreVwIgK3s0aICu8Kirv/YdoWqizOvqGT9ro7/MUUYfFiC10Uw="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"joneshf","email":"jones3.hardy@gmail.com"},"maintainers":[{"name":"joneshf","email":"jones3.hardy@gmail.com"}],"directories":{}},"0.4.3":{"name":"inquire","version":"0.4.3","description":"Generate advanced URL query strings.","keywords":["armet","query","string","url"],"homepage":"https://github.com/concordusapps/inquire.js","bugs":{"url":"https://github.com/concordusapps/inquire.js/issues"},"license":"MIT","author":{"name":"Concordus Applications"},"contributors":[{"name":"Hardy Jones","email":"jones3.hardy@gmail.com","url":"https://github.com/joneshf"}],"main":"lib/inquire.js","repository":{"type":"git","url":"git://github.com/concordusapps/inquire.js.git"},"devDependencies":{"grunt":"~0.4.0","grunt-purescript":"~0.2.0"},"engines":{"node":">=0.8.22"},"_id":"inquire@0.4.3","dist":{"shasum":"36bce8582da41d45691c32f8e09199bdc97d266f","tarball":"https://registry.npmjs.org/inquire/-/inquire-0.4.3.tgz","integrity":"sha512-8e74v0aQZOVJKwSinxRXFF/yKhhTo2q8QYyogokbUPLU82b2OJkKsYHO+WXoaNdji9aP3PjHjEoNo7xxE0lwUw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChuhrCEzELmgvni0tdN2SiboyN1XPYBpRJRdivHiF5XQIhAPOwgwG1Z+zagjDhmUrvxoVCdKQWRihBUm7zP0JYlJaD"}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"joneshf","email":"jones3.hardy@gmail.com"},"maintainers":[{"name":"joneshf","email":"jones3.hardy@gmail.com"}],"directories":{}},"0.4.4":{"name":"inquire","version":"0.4.4","description":"Generate advanced URL query strings.","keywords":["armet","query","string","url"],"homepage":"https://github.com/concordusapps/inquire.js","bugs":{"url":"https://github.com/concordusapps/inquire.js/issues"},"license":"MIT","author":{"name":"Concordus Applications"},"contributors":[{"name":"Hardy Jones","email":"jones3.hardy@gmail.com","url":"https://github.com/joneshf"}],"main":"lib/inquire.js","repository":{"type":"git","url":"git://github.com/concordusapps/inquire.js.git"},"devDependencies":{"grunt":"~0.4.0","grunt-purescript":"~0.2.0"},"engines":{"node":">=0.8.22"},"_id":"inquire@0.4.4","dist":{"shasum":"910757f1f322285b6d81ba6854b525e45799774f","tarball":"https://registry.npmjs.org/inquire/-/inquire-0.4.4.tgz","integrity":"sha512-WRmCaESmY6e/KUrdFIii30PVwgQhZpZDybnwc8+J/K8YNHCiJETdpTLjZiOMvhBghF14AInZNizDGB9mye7iNw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDA7zYlJtRAlH3zaBEsf9/FL/4b2QPem0gvlCVi/mFeCwIgOVtDyWaX3/rgN32M+BOAgr/FEP5ZBDkYwFTJbXKalwQ="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"joneshf","email":"jones3.hardy@gmail.com"},"maintainers":[{"name":"joneshf","email":"jones3.hardy@gmail.com"}],"directories":{}},"0.4.5":{"name":"inquire","version":"0.4.5","description":"Generate advanced URL query strings.","keywords":["armet","query","string","url"],"homepage":"https://github.com/concordusapps/inquire.js","bugs":{"url":"https://github.com/concordusapps/inquire.js/issues"},"license":"MIT","author":{"name":"Concordus Applications"},"contributors":[{"name":"Hardy Jones","email":"jones3.hardy@gmail.com","url":"https://github.com/joneshf"}],"main":"lib/inquire.js","repository":{"type":"git","url":"git://github.com/concordusapps/inquire.js.git"},"devDependencies":{"grunt":"~0.4.0","grunt-purescript":"~0.2.0","grunt-execute":"~0.1.5"},"engines":{"node":">=0.8.22"},"_id":"inquire@0.4.5","dist":{"shasum":"b5ab49815aca3878f91fdac16b8a0e62fbc6f5c0","tarball":"https://registry.npmjs.org/inquire/-/inquire-0.4.5.tgz","integrity":"sha512-Jnrjnn6NzDQOz4VxF3m3yWGOWZJduXIjzwwaJ2SCti6dyGL//PrbVqPozKSJFUKSTCV3VcXhpR70LpA4Jmp32g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAO0OSsH5ZDbLnIBSptB34zdICPSZo3iMouCYa/F+g6CAiEA+xDK96a7dc1ToPPt39g3n2fQzhw0jOA3xBM8k8uljj8="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"joneshf","email":"jones3.hardy@gmail.com"},"maintainers":[{"name":"joneshf","email":"jones3.hardy@gmail.com"}],"directories":{}},"0.4.8":{"name":"inquire","version":"0.4.8","description":"Generate advanced URL query strings.","keywords":["armet","query","string","url"],"homepage":"https://github.com/concordusapps/inquire.js","bugs":{"url":"https://github.com/concordusapps/inquire.js/issues"},"license":"MIT","author":{"name":"Concordus Applications"},"contributors":[{"name":"Hardy Jones","email":"jones3.hardy@gmail.com","url":"https://github.com/joneshf"}],"main":"lib/inquire.js","repository":{"type":"git","url":"git://github.com/concordusapps/inquire.js.git"},"devDependencies":{"grunt":"~0.4.0","grunt-purescript":"~0.2.0","grunt-execute":"~0.1.5"},"engines":{"node":">=0.8.22"},"_id":"inquire@0.4.8","dist":{"shasum":"d44fed54d916c431caab26dcc482372ed67c4ee2","tarball":"https://registry.npmjs.org/inquire/-/inquire-0.4.8.tgz","integrity":"sha512-up9ueqKwPnuitvEqyOxBU1ggima7YsUywI00qEnYVnor9IissXbltZ86xi4VXKkci0/qWAtfMP/nu4oR4fUaEQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICgb/2lee4QhOv7uSjvoZwmHmhSzS1upM/lb2ST006SrAiBcID0D3nHFWQ7wgF3VeNzgR0inc633++hTtfaWjFb3Qw=="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"joneshf","email":"jones3.hardy@gmail.com"},"maintainers":[{"name":"joneshf","email":"jones3.hardy@gmail.com"}],"directories":{}}},"readme":"# Inquire\n[![Build Status](https://travis-ci.org/concordusapps/inquire.js.png?branch=master)](https://travis-ci.org/concordusapps/inquire.js)\n[![devDependency Status](https://david-dm.org/concordusapps/inquire.js/dev-status.png)](https://david-dm.org/concordusapps/inquire.js#info=devDependencies)\n[![Stories in Ready](https://badge.waffle.io/concordusapps/inquire.js.png)](http://waffle.io/concordusapps/inquire.js)\n\n[![NPM](https://nodei.co/npm/inquire.png?compact=true)](https://nodei.co/npm/inquire/)\n\n\nInquire allows you to generate advanced query strings.\nCurrently supports [armet][armet] syntax query strings.\n\n**Table of Contents**\n\n* [Installation](#installation)\n* [The Problem](#the-problem)\n* [A Solution](#a-solution)\n* [Background](#background)\n    * [Basics](#basics)\n    * [Deeper](#deeper)\n* [Usage](#usage)\n    * [Predicate combinators](#predicate-combinators)\n        * [eq](#eq)\n        * [ne](#ne)\n        * [gt](#gt)\n        * [ge](#ge)\n        * [lt](#lt)\n        * [le](#le)\n    * [Junction combinators](#junction-combinators)\n        * [and](#and)\n        * [or](#or)\n    * [Wrap combinator](#wrap-combinator)\n        * [not](#not)\n    * [Derived combinators](#derived-combinators)\n        * [implies](#implies)\n        * [equiv](#equiv)\n        * [xor](#xor)\n        * [absorb](#absorb)\n        * [associate](#associate)\n        * [assocLeft](#assocleft)\n        * [assocRight](#assocright)\n        * [commute](#commute)\n        * [distribute](#distribute)\n        * [codistribute](#codistribute)\n        * [idempotent](#idempotent)\n    * [Construction](#construction)\n        * [fromArrayPair](#fromarraypair)\n        * [fromArrayObj](#fromarrayobj)\n    * [Modification](#modification)\n        * [foldr](#foldr)\n        * [foldl](#foldl)\n        * [map](#map)\n        * [filterByKey](#filterbykey)\n        * [filterByVal](#filterbyval)\n        * [findByKey](#findbykey)\n        * [findByVal](#findbyval)\n        * [remove](#remove)\n        * [remove](#remove)\n        * [removeAll](#removeall)\n        * [replaceValByKey](#replacevalbykey)\n        * [replaceValByVal](#replacevalbyval)\n        * [unsafeFindByKey](#unsafefindbykey)\n        * [unsafeFindByVal](#unsafefindbyval)\n        * [unsafeFromObj](#unsafefromobj)\n        * [unsafeRemove](#unsaferemove)\n        * [unsafeRemoveAll](#unsaferemoveall)\n        * [unsafeReplaceValByKey](#unsafereplacevalbykey)\n        * [unsafeReplaceValByVal](#unsafereplacevalbyval)\n* [Examples](#examples)\n\n## Installation\n\nInquire is available on the npm registry: [inquire][inquire]\n\nYou can install it with npm.\n\n    npm install inquire\n\n## The Problem\n\nCurrently, query strings only conjoin predicates together with equality.\n[Armet][armet] attempts to extend this in two ways:\n\n* Allowing predicates to be conjoined, disjoined and negated.\n* Allowing more than just equality, e.g. inequalities.\n\nThis ends up creating a problem.\nWe now have to generate these advanced query strings.\nGenerating these advanced query strings by hand gets unwieldy.\n\nFor example, let's say we are dealing with a REST api for shapes.\nWe can `GET` on `/api/shape` and return all of the shapes.\n\nNow let's try to get more detailed in our result.\nLet's say we want red shapes wider than 30 pixels or\nwe want all shapes with no more than 12 sides or\nwe want all of the squares that either aren't black or that were created by bob.\nOur `GET` request becomes:\n\n`/api/shape?(color=red&width>30);sides<=12;(shape=square&(color!=black;user=bob))`\n\n\n## A Solution\n\nWe need a better way to generate query strings for [armet][armet]'s consumption.\nInquire allows you do the same query without trying to man-handle the string.\n\n```purescript\nimport Inquire\n\nquery = ((\"color\" `eq` \"red\") |&| (\"width\" `gt` \"30\")) ||| (\"sides\" `le` \"12\") ||| ((\"shape\" `eq` \"square\") |&| ((\"color\" `ne` \"black\") ||| (\"user\" `eq` \"bob\")))\nurl = \"/api/shape?\" ++ show query\n-- url => \"/api/shape?(color=red&width>30);sides<=12;(shape=square&(color!=black;user=bob))\"\n```\n\nLiveScript:\n\n```livescript\nrequire! I: \\inquire.Inquire\nquery = I.or(I.or(I.and(I.eq(\\color)(\\red))(I.gt(\\width)(30)))(I.le(\\sides)(12)))(I.and(I.eq(\\shape)(\\square))(I.or(I.ne(\\color)(\\black))(I.eq(\\user)(\\bob))))\nurl = \"/api/shape?#{I.generate query}\"\n# url => '/api/shape?(color=red&width>30);sides<=12;(shape=square&(color!=black;user=bob))'\n```\n\nJavascript:\n\n```javascript\nvar I = require('inquire').Inquire;\nvar query = I.or(I.or(I.and(I.eq('color')('red'))(I.gt('width')(30)))(I.le('sides')(12)))(I.and(I.eq('shape')('square'))(I.or(I.ne('color')('black'))(I.eq('user')('bob'))))\nvar url = '/api/shape?' + I.generate(query)\n// url => '/api/shape?(color=red&width>30);sides<=12;(shape=square&(color!=black;user=bob))'\n```\n\nNote: Inquire removes as many parens as logically possible.\n\nOf course this still looks horrible to have to deal with because it's all on one line.\nSo, as with most software issues,\nit's better to decompose this into smaller pieces and then rejoin the pieces at the end.\n\n## Background\n\nN.B. Please report any misinformation, pull requests are welcome!\n\n#### Basics\n\nAt its core Inquire is a Boolean Algebra.\nThis means that all of the properties of other boolean algebras can be applied to Inquire.\nThis includes things like:\n\n* Associativity\n* Commutativity\n* Idempotence\n* DeMorgan's Laws\n* Implication\n* Equivalence\n\nBecause of this, we can optimize our queries.\nIn some cases, we can optimize away the entire query!\n\nThe basic building block of Inquire is a predicate.\nEach Predicate has a key, a relational operator and a value.\nThe supported relational operators are `==`, `!=`, `<`, `<=`, `>`, and `>=`.\nA key or a value can be any thing.\n\nN.B. Currently in JS, only the basic JS types are supported (Boolean, Number, String).\n\nWe can construct more complex queries by joining our predicates together.\n\nThere are two binary combinators and a unary combinator: `and`, `or` and `not`, respectively.\n\n#### Deeper\n\nAlso, since Boolean Algebras are Complemented Distributive Lattices,\nwe get all of the properties of those for free as well!\n\nThe complemented part means that every query has a complement.\nWe construct the complement for an entire query by wrapping it in a negation.\nThis is the lazy way, and not actually true to the definition.\nThe way to actually get the complement is to take each predicate and change its relational operator.\n\n|      |     |      |\n| ---- | --- | ---- |\n| `==` | <=> | `!=` |\n| `>`  | <=> | `<=` |\n| `<`  | <=> | `>=` |\n\nThe distributive part means that our binary combinators can be distributed over each other.\nThis is similar to how multiplication can distribute over addition in Semirings like the Natural numbers with 0, or Integers or the reals, etc.\nThe difference is, each operation can distribute over the other.\n\nSo the following are equivalent: `p AND (q OR r)`, `(p OR q) AND (p OR r)`\n\nAs well as: `p OR (q AND r)`, `(p AND q) OR (p AND r)`\n\nThe lattice part has two equivalent interpretations.\nOne states that there is a poset nestled underneath our structure.\nThe other states that we have some of the axioms mentioned above.\n\n## Usage\n\nInquire has a few basic combinators on which most of everything else is built.\nSince Inquire is tied closely to [armet][armet],\nmost of this is about filtering responses based on model attributes.\nHowever, the fundamentals are the same for any purpose.\n\n#### Predicate combinators\n\n###### eq\n###### k -> v -> Inquire k v\n\nConstructs an Inquire from two values with the relation `==`.\nWill return results where the `key` on the model equals the supplied `val`\n\n###### ne\n###### k -> v -> Inquire k v\n\nConstructs an Inquire from two values with the relation `!=`\nWill return results where the `key` on the model does not equal the supplied `val`\n\n###### gt\n###### k -> v -> Inquire k v\n\nConstructs an Inquire from two values with the relation `>`\nWill return results where the `key` on the model is greater than the supplied `val`\n\n###### ge\n###### k -> v -> Inquire k v\n\nConstructs an Inquire from two values with the relation `>=`\nWill return results where the `key` on the model is greater than or equal to the supplied `val`\n\n###### lt\n###### k -> v -> Inquire k v\n\nConstructs an Inquire from two values with the relation `<`\nWill return results where the `key` on the model is less than the supplied `val`\n\n###### le\n###### k -> v -> Inquire k v\n\nConstructs an Inquire from two values with the relation `<=`\nWill return results where the `key` on the model is less than or equal to the supplied `val`\n\n#### Junction combinators\n\n###### and\n###### Inquire k v -> Inquire k v -> Inquire k v\n\nConstructs an Inquire from two Inquires with the conjunction `&`\nWill return results where both `left` and `right` subqueries are true.\n\n###### or\n###### Inquire k v -> Inquire k v -> Inquire k v\n\nConstructs an Inquire from two Inquires with the disjunction `;`\nWill return results where either one, or both, `left` and `right` subqueries are true.\n\n#### Wrap combinator\n\n###### not\n###### Inquire k v -> Inquire k v\n\nConstructs an Inquire from one Inquire with the negation `!`\nWill return results where subquery is false.\n\n#### Derived combinators\n\nFrom these simple combinators, we can create more complex ideas:\n\n###### implies\n###### Inquire k v -> Inquire k v -> Inquire k v\n\nConstructs an Inquire from two Inquires.\nThis is the direct definition of implication, namely `(NOT p) OR q`.\n\n###### equiv\n###### Inquire k v -> Inquire k v -> Inquire k v\n\nConstructs an Inquire from two Inquires.\nThis is the direct definition of equivalence, namely `(p AND q) OR ((NOT p) AND (NOT q))`.\n\n###### xor\n###### Inquire k v -> Inquire k v -> Inquire k v\n\nConstructs an Inquire from two Inquires.\nThis is the direct definition of exclusive or, namely `(p AND (NOT q)) OR ((NOT p) AND q)`.\n\n###### absorb\n###### Inquire k v -> Inquire k v\n\nSimplifies specific Inquires.\n\n`p AND (p OR q)` => `p`\n\n`p OR (p AND q)` => `p`\n\n###### associate\n###### Inquire k v -> Inquire k v\n\nReorders parens from what they are now to the other possible way.\n\n`p AND (q AND r)` => `(p AND q) AND r`\n\n`(p AND q) AND r` => `p AND (q AND r)`\n\n`p OR (q OR r)` => `(p OR q) OR r`\n\n`(p OR q) OR r` => `p OR (q OR r)`\n\n###### assocLeft\n###### Inquire k v-> Inquire k v\n\nReorders parens to the left.\n\n`p AND (q AND r)` => `(p AND q) AND r`\n\n`p OR (q OR r)` => `(p OR q) OR r`\n\n###### assocRight\n###### Inquire k v-> Inquire k v\n\nReorders parens to the right.\n\n`(p AND q) AND r` => `p AND (q AND r)`\n\n`(p OR q) OR r` => `p OR (q OR r)`\n\n###### commute\n###### Inquire k v -> Inquire k v\n\nReorders queries.\n\n`p AND q` => `q AND p`\n\n`p OR q` => `q OR p`\n\n###### distribute\n###### Inquire k v -> Inquire k v\n\nDistributes one query over its dual.\n\n`p AND (q OR r)` => `(p OR q) AND (p OR r)`\n\n`p OR (q AND r)` => `(p AND q) OR (p AND r)`\n\n###### codistribute\n###### Inquire k v -> Inquire k v\n\nPerforms the opposite of distribution.\n\n`(p OR q) AND (p OR r)` => `p AND (q OR r)`\n\n`(p AND q) OR (p AND r)` => `p OR (q AND r)`\n\n###### idempotent\n###### Inquire k v -> Inquire k v\n\nSimplifies the Inquire with the Idempotency rule.\n\n`p AND p` => `p`\n\n`p OR p` => `p`\n\n#### Construction\n\nCreating new Inquires is done with either single `key` `val` arguments,\nan array of `[key, val]` pairs,\nor an array of `{key: k, val: v}` objects.\n\nThe [predicate combinators](#predicate-combinators) above correspond to the single `key`, `val` option.\n\n###### fromArrayPair\n###### [[k, v]] -> Inquire k v\n\nThis constructs an Inquire with the default relation of `==` for all predicates,\nand the default junction of `&` for all combinations of predicates.\n\n###### fromArrayObj\n###### [{key: k, val: v}] -> Inquire k v\n\nThis constructs an Inquire with the default relation of `==` for all predicates,\nand the default junction of `&` for all combinations of predicates.\nThis expects each object to have two entries: `key` and `val`.\nThese should correspond to the intended predicate `key` and `val`.\n\nThis constructs an Inquire with the default relation of `==` for all predicates,\nand the default junction of `&` for all combinations of predicates.\n\n#### Modification\n\nSince Inquire is also a `Foldable` and `Functor`,\nit provides the ability to `fold` and `map` over all of `val`s, respectively.\nThese operations are similar to the native `reduce` and `map` for javascript arrays,\nthe [fantasy land](fantasy land) specification,\nor something you might get from a library like underscore.\nSo, if you can use `Array.map`, `_.reduceRight` or similar,\nyou already know how to use these functions.\n\n###### foldr\n###### (v -> v' -> v') -> v' -> Inquire k v -> v'\n\nThis is a right associative \"catamorphism\".\nWhat that means is that it takes each value and joins it to the next given the supplied function.\n\nThe first argument is a binary function.\nThe second argument is the initial value.\nThe last argument is the Inquire.\n\n###### foldl\n###### (v' -> v -> v') -> v' -> Inquire k v -> v'\n\nThis is a left associative \"catamorphism\".\nWhat that means is that it takes each value and joins it to the next given the supplied function.\n\nThe first argument is a binary function.\nThe second argument is the initial value.\nThe last argument is the Inquire.\n\n###### map\n###### (v -> v') -> Inquire k v -> Inquire k v'\n\nThis will modify every value in the Inquire with the given function.\n\nThere are a few modification combinators available.\n\n###### filterByKey\n###### (k -> Boolean) -> Inquire k v -> Inquire k v\n\nRemoves all predicates that fail the supplied boolean test.\nThe first argument must be a function that tests a `key` and returns a boolean.\n\n###### filterByVal\n###### (v -> Boolean) -> Inquire k v -> Inquire k v\n\nRemoves all predicates that fail the supplied boolean test.\nThe first argument must be a function that tests a `val` and returns a boolean.\n\n###### findByKey\n###### k -> Inquire k v -> Maybe (Inquire k v)\n\nSearches for the first element which has the specified `key`.\nIf successful, will return a `Just predicate`.\nIf unsuccessful, will return a `Nothing`.\n\nThis is biased to the right.\n\n###### findByVal\n###### v -> Inquire k v -> Maybe (Inquire k v)\n\nSearches for the first element which has the specified `val`.\nIf successful, will return a `Just predicate`.\nIf unsuccessful, will return a `Nothing`.\n\nThis is biased to the right.\n\n###### remo\n###### :: (Inquire k v -> Inquire k v -> Boolean) -> Inquire k v -> Inquire k v -> Inquire k v\n\nHelper function for `remove` and `removeAll`.\nRequires a binary function that takes two inquires and returns a boolean indicating whether the to continue removal.\n\n###### remove\n###### Inquire k v -> Inquire k v -> Inquire k v\n\nRemoves the rightmost instance of the first Inquire from the second Inquire.\n\n###### removeAll\n###### Inquire k v -> Inquire k v -> Inquire k v\n\nRemoves every instance of the first Inquire from the second Inquire.\n\n###### replaceValByKey\n###### v -> k -> Inquire k v -> Inquire k v\n\nReplaces each Inquire that has the specified `key` with the given `val`.\nThe first argument is the `val` to replace with.\nThe second argument is the `key` to test with.\n\n###### replaceValByVal\n###### v -> v -> Inquire k v -> Inquire k v\n\nReplaces each Inquire that has the specified `val` with the given `val`.\nThe first argument is the `val` to replace with.\nThe second argument is the `val` to test with.\n\n###### unsafeFindByKey\n###### k -> Inquire k v -> Maybe (Inquire k v)\n\nUnsafe version of [findByKey](#findByKey).\nThis is unsafe in the sense that it uses `Prelude.unsafeRefEq` for equality testing.\nAKA `===` in javascript.\n\nSo it could fail depending on what the values are.\nUse with caution!\n\nHowever, it provides a nice wrapper around the safe version.\ni.e. you don't have to pass a two typeclass dictionary references to the safe version.\n\n###### unsafeFindByVal\n###### v -> Inquire k v -> Maybe (Inquire k v)\n\nUnsafe version of [findByVal](#findByVal).\nThis is unsafe in the sense that it uses `Prelude.unsafeRefEq` for equality testing.\nAKA `===` in javascript.\n\nSo it could fail depending on what the values are.\nUse with caution!\n\nHowever, it provides a nice wrapper around the safe version.\ni.e. you don't have to pass a two typeclass dictionary references to the safe version.\n\n###### unsafeFromObj\n###### { | a } -> Inquire k v\n\nUnsafe way to drop an object into an Inquire.\n\nThis just iterates through the object and tries to take all the top level keys and vals as arguments to the Inquire.\n\nConjoins everything with the relation equals.\n\nNote, there's no telling what will happen if you put in something that's not a simple key val object.\n\n###### unsafeRemove\n###### Inquire k v -> Inquire k v -> Inquire k v\n\nUnsafe version of [remove](#remove).\nThis is unsafe in the sense that it uses `Prelude.unsafeRefEq` for equality testing.\nAKA `===` in javascript.\n\nSo it could fail depending on what the values are.\nUse with caution!\n\nHowever, it provides a nice wrapper around the safe version.\ni.e. you don't have to pass a two typeclass dictionary references to the safe version.\n\n###### unsafeRemoveAll\n###### Inquire k v -> Inquire k v -> Inquire k v\n\nUnsafe version of [removeAll](#removeAll).\nThis is unsafe in the sense that it uses `Prelude.unsafeRefEq` for equality testing.\nAKA `===` in javascript.\n\nSo it could fail depending on what the values are.\nUse with caution!\n\nHowever, it provides a nice wrapper around the safe version.\ni.e. you don't have to pass a two typeclass dictionary references to the safe version.\n\n###### unsafeReplaceValByKey\n###### v -> k -> Inquire k v -> Inquire k v\n\nUnsafe version of [replaceValByKey](#replaceValByKey).\nThis is unsafe in the sense that it uses `Prelude.unsafeRefEq` for equality testing.\nAKA `===` in javascript.\n\nSo it could fail depending on what the values are.\nUse with caution!\n\nHowever, it provides a nice wrapper around the safe version.\ni.e. you don't have to pass a two typeclass dictionary references to the safe version.\n\n###### unsafeReplaceValByVal\n###### v -> v -> Inquire k v -> Inquire k v\n\nUnsafe version of [replaceValByVal](#replaceValByVal).\nThis is unsafe in the sense that it uses `Prelude.unsafeRefEq` for equality testing.\nAKA `===` in javascript.\n\nSo it could fail depending on what the values are.\nUse with caution!\n\nHowever, it provides a nice wrapper around the safe version.\ni.e. you don't have to pass a two typeclass dictionary references to the safe version.\n\n#### Zipper\n\nThe Zipper is a purely functional data structure for manipulating other data structures.\nAn immense amount of information can be found on Zippers.\nIt was first written about as a [Functional Pearl][the zipper] by [Gérard Huet][huet].\nThe basic idea is that you create a `hole` in a data structure that you want to modify,\nand keep track of the `context` to that `hole`.\nOnce you modify the `hole`, you can then use the `context` to find your way back to the top of the structure.\n\nIn our case, the `hole` will be an Inquire, and the `context` the path to the top of the Inquire.\nWe can move in the four cardinal directions: Up, Down, Left, Right.\nThis allows us to go to any position in our Inquire,\nmodify that Predicate, Junction, or Wrap, and return the new structure easily.\n\n###### toInquireZ\n###### Inquire k v -> InquireZ k v\n\nCreates a new Zipper from an Inquire.\nThis is how we can start to manipulate our Inquire.\n\n###### fromInquireZ\n###### InquireZ k v -> Inquire k v\n\nReturns our modified Inquire from a Zipper.\n\n###### zipLeft\n###### InquireZ k v -> Maybe (InquireZ k v)\n\nMoves to the left of the current `hole`, if possible, or does nothing.\n\n###### zipRight\n###### InquireZ k v -> Maybe (InquireZ k v)\n\nMoves to the right of the current `hole`, if possible, or does nothing.\n\n###### zipDown\n###### InquireZ k v -> Maybe (InquireZ k v)\n\nMoves down or to the right of the current `hole`, if possible, or does nothing.\n\n###### zipUp\n###### InquireZ k v -> Maybe (InquireZ k v)\n\nMoves up of the current `hole`, if possible, or does nothing.\n\n###### zipUpmost\n###### InquireZ k v -> InquireZ k v\n\nMoves to the top of the Zipper.\n\n###### zipLeftmost\n###### InquireZ k v -> InquireZ k v\n\nMoves as far to the left of the Zipper as possible.\n\n###### zipRightmost\n###### InquireZ k v -> InquireZ k v\n\nMoves as far to the right of the Zipper as possible.\n\n###### getHole\n###### InquireZ k v -> Inquire k v\n\nPeeks into the Zipper and returns the current Inquire in the `hole`.\n\n###### query\n###### (Inquire k v -> a) -> InquireZ k v -> a\n\nApplies a function to the current Inquire in the `hole` and returns the result.\n\n###### modify\n###### (Inquire k v -> Inquire k v) -> InquireZ k v -> InquireZ k v\n\nApplies a function to the current Inquire in the `hole`.\n\n\n## Examples\n\nSo let's say we've got a Todo list available at some endpoint.\nWe'd like to retrieve all of the items in the list that are due after tax day 2014.\nWe'll use moment to make things a bit easier.\n\n```javascript\n> inquire = require('inquire')\n> I = inquire.Inquire\n> moment = require('moment')\n> query0 = I.gt('due')(moment('Apr 15, 2014'))\n> I.generate(query0)\n'due>Tue%20Apr%2015%202014%2000%3A00%3A00%20GMT-0700'\n```\n\nLater on if you decide to change the date value,\nthere are combinators that make it much easier than doing this by hand:\n\n```javascript\n> IC = inquire.Inquire_Combinators\n> query1 = IC.unsafeReplaceValByKey('tonight')('due')(query0)\n> I.generate(query1)\n'due>tonight'\n```\n\nMaybe instead you want to move the cut-off point a month sooner, so March 15, 2014.\nThis can be done using the fact that Inquire is a Functor.\n\n```javascript\n> prevMonth = function(x) { return moment(x).subtract('month', 1); }\n> query2 = IC.map(prevMonth)(query0)\n> I.generate(query2)\n'due>Sat%20Mar%2015%202014%2000%3A00%3A00%20GMT-0700'\n```\n\nOf course, this will fail miserably if you have more values that aren't moments.\nThe more robust way currently is to use the Zipper.\nLet's start by making our query a bit bigger and seeing it fail.\n\n```javascript\n> query3 = I.and(query0)(IC.fromArrayPair([['user', 'Joe'], ['subject', 'bills']]))\n> I.generate(query3)\n'due>Tue%20Apr%2015%202014%2000%3A00%3A00%20GMT-0700&subject=bills&user=Joe'\n> query4 = IC.map(prevMonth)(query3)\n> I.generate(query4)\n'due>Sat%20Mar%2015%202014%2000%3A00%3A00%20GMT-0700&subject=Invalid%20date&user=Invalid%20date'\n```\n\nSo as we can see, it failed because the function was expecting to operate on moments.\n\nN.B. This wouldn't be a problem in a language like purescript, as the line wouldn't have even compile.\nThis is only a concern in javascript because it does not respect types.\n\nSo let's use our zipper to find that specific date, and change it.\nWe know it's the leftmost predicate in our query, so let's go there, and modify that.\n\nThe basic idea with the Zipper is that it allows you to traverse a data structure,\nmodify some part of it, and then return the new modified structure.\n\n```javascript\n> IZ = inquire.Inquire_Zipper\n> zip0 = IZ.toInquireZ(query3)\n> zip1 = IZ.zipLeftmost(zip0)\n> zip2 = IZ.modify(IC.map(prevMonth))(zip1)\n> query5 = IZ.fromInquireZ(zip2)\n> I.generate(query5)\n'due>Sat%20Mar%2015%202014%2000%3A00%3A00%20GMT-0700&subject=bills&user=Joe'\n```\n\nWonderful! We see that the Zipper made it so our logic was expressed almost verbatim in the code.\nIt was composable and reusable.\n\n[armet]: http://armet.github.io/\n[inquire]: https://npmjs.org/package/inquire\n[fantasy land]: https://github.com/fantasyland/fantasy-land\n[the zipper]: http://www.st.cs.uni-saarland.de/edu/seminare/2005/advanced-fp/docs/huet-zipper.pdf\n[huet]: http://pauillac.inria.fr/~huet/\n","maintainers":[{"name":"joneshf","email":"jones3.hardy@gmail.com"}],"time":{"modified":"2022-06-19T01:27:48.394Z","created":"2013-06-16T21:16:11.114Z","0.0.1":"2013-06-16T21:16:13.042Z","0.0.2":"2013-06-19T02:09:27.705Z","0.0.3":"2013-06-19T02:38:09.383Z","0.0.4":"2013-06-19T13:52:13.893Z","0.0.5":"2013-06-19T19:27:58.496Z","0.0.6":"2013-06-20T18:00:33.650Z","0.1.0":"2013-06-23T20:49:54.039Z","0.1.1":"2013-06-23T22:11:05.871Z","0.2.0":"2013-07-16T06:34:25.566Z","0.2.1":"2013-07-17T07:06:35.246Z","0.3.0":"2013-08-04T01:55:39.755Z","0.3.1":"2013-09-06T19:10:23.442Z","0.3.2":"2013-09-11T04:35:47.839Z","0.4.0":"2014-03-06T15:26:34.091Z","0.4.1":"2014-03-09T02:40:05.592Z","0.4.2":"2014-03-09T19:14:23.151Z","0.4.3":"2014-03-18T23:35:57.859Z","0.4.4":"2014-03-19T00:48:06.357Z","0.4.5":"2014-03-31T21:20:11.773Z","0.4.8":"2014-04-01T01:43:40.511Z"},"author":{"name":"Concordus Applications"},"repository":{"type":"git","url":"git://github.com/concordusapps/inquire.js.git"},"homepage":"https://github.com/concordusapps/inquire.js","keywords":["armet","query","string","url"],"contributors":[{"name":"Hardy Jones","email":"jones3.hardy@gmail.com","url":"https://github.com/joneshf"}],"bugs":{"url":"https://github.com/concordusapps/inquire.js/issues"},"license":"MIT","readmeFilename":"README.md","users":{"jameswain":true}}