{"_id":"venn","_rev":"48-facca0cf2944986b428481ee30c1d1ea","name":"venn","description":"fluent API library for set operations","dist-tags":{"latest":"1.1.2"},"versions":{"0.1.0":{"name":"venn","preferGlobal":true,"version":"0.1.0","author":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"description":"unambitious fluent API library for set operations.","repository":{"type":"git","url":"https://github.com/bitoiu/venn.git"},"keywords":["venn","set","intersect","union"],"dependencies":{"requirejs":"2.1.x"},"devDependencies":{"mocha":"1.9.x","chai":"1.5.x"},"scripts":{"test":"mocha"},"license":"MIT","engines":{"node":">=0.6"},"readme":"venn\n====\n\n[![Build Status](https://travis-ci.org/bitoiu/venn.png)](https://travis-ci.org/bitoiu/venn)\n\nunambitious fluent API library for set operations.\n","readmeFilename":"README.md","_id":"venn@0.1.0","dist":{"shasum":"6192cdba5bcb0909d78e1170a9a7e4f35fcd031b","tarball":"https://registry.npmjs.org/venn/-/venn-0.1.0.tgz","integrity":"sha512-4YshzWOkox1RRawdURcmitH54l/qmTp/MEUs98ifI/gEaZGJ9ckHx6IytQCcobNSCOcJoHEs5XC5Mbs5IuhhPA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCVsYHbVJJ9y02lJBZ89k4AGEZgiS2U8jmFlyUAAgA/ugIgMp/Li8UhuPtPygTZmbgkbGIc4EcXzlpU6rjq/lWISuI="}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"maintainers":[{"name":"bitoiu","email":"vmrmonteiro@gmail.com"}],"directories":{}},"0.1.1":{"name":"venn","preferGlobal":true,"version":"0.1.1","author":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"description":"unambitious fluent API library for set operations.","repository":{"type":"git","url":"https://github.com/bitoiu/venn.git"},"keywords":["venn","set","intersect","union"],"dependencies":{"requirejs":"2.1.x"},"devDependencies":{"mocha":"1.9.x","chai":"1.5.x"},"scripts":{"test":"mocha"},"license":"MIT","engines":{"node":">=0.6"},"readme":"# venn [![Build Status](https://travis-ci.org/bitoiu/venn.png)](https://travis-ci.org/bitoiu/venn)\n\nunambitious fluent API library for set operations.\n\n## Usage\n\nA venn set is just an array with some added features:\n\n```javascript\n\n  var venn = require(\"venn\")\n  \n  venn.create([1,2]) // returns [1,2]\n```\n\nYou can now chain operations to this set, like a union\n\n```javascript\n  venn.create([1,2])\n      .union([1,2,3,4]) // returns [1,2,3,4]  \n```\n\nOr an intersection\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4]) \n      .intersection([1,5]) // returns [1]\n```\n\nOr a mix of everything\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4]) \n      .intersection([1,5])\n      .union([2]) // returns [1,5,2]      \n```\n\n## Opinions\n\n* venn does not guarantee order (maybe one day)\n\n## Next steps\n\n* venn is only working for literals, strings, numbers, etc. Work on the way for objects, the proper stuff.\n","readmeFilename":"README.md","_id":"venn@0.1.1","dist":{"shasum":"a049ceee4d1bd1dc9cadde5898fc7b96f1738819","tarball":"https://registry.npmjs.org/venn/-/venn-0.1.1.tgz","integrity":"sha512-s2OWOAQkxlJi/P34cW0E7lT91kNwlLCpq3q31qf9qypDfUwCuboCtend0tp+Ge7YiTCBcpaAdFOJNyKV9PWITg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdVKxgEjb+Y8uMxWUCoprNVNpBz0XbyCYPTaUR1Kcc0QIgFYy0KVCMMTfY5/Ag+KlhExk5dQka8Y2q29TJye2rXns="}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"maintainers":[{"name":"bitoiu","email":"vmrmonteiro@gmail.com"}],"directories":{}},"0.3.0":{"name":"venn","preferGlobal":false,"version":"0.3.0","author":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"description":"unambitious fluent API library for set operations.","repository":{"type":"git","url":"https://github.com/bitoiu/venn.git"},"keywords":["venn","set","intersect","union"],"dependencies":{"requirejs":"2.1.x","amdefine":">=0.0.5"},"devDependencies":{"mocha":"1.9.x","chai":"1.5.x","karma":">=0.8.x","lodash":"1.3.x"},"scripts":{"test":"./node_modules/.bin/karma start --single-run --browsers PhantomJS && mocha"},"license":"MIT","engines":{"node":">=0.6"},"readme":"# venn [![Build Status](https://travis-ci.org/bitoiu/venn.png)](https://travis-ci.org/bitoiu/venn) [![NPM version](https://badge.fury.io/js/venn.png)](http://badge.fury.io/js/venn)\n\n![wiki stolen logo](http://upload.wikimedia.org/wikipedia/commons/9/99/Venn0001.svg)\n\nfluent API library for set operations:\n* supports objects\n* AMD and node compatible\n\n### Usage\n\nA venn set is just an array with some added features:\n\n```javascript\n\n  var venn = require(\"venn\")\n  \n  venn.create([1,2]) // returns [1,2]\n```\n\nYou can now chain operations to this set, like a union\n\n```javascript\n  venn.create([1,2])\n      .union([1,2,3,4]) // returns [1,2,3,4]  \n```\n\nOr an intersection\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4]) \n      .intersection([1,5]) // returns [1]\n```\n\nOr a mix of everything\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4]) \n      .intersection([1,5])\n      .union([2]) // returns [1,5,2]      \n```\n\nYou can also use objects\n\n```javascript\n    venn.create([\n        {name: \"vitor\", age: \"23\"}\n      , {name: \"khov\",  age: \"24\"}\n      , {name: \"pat\",   age: \"30\"}])\n      .intersection([\n        {name: \"vitor\",  age: \"23\"}\n      , {name: \"newguy\", age: \"0\"}\n      , {name: \"pat\",    age: \"50\"}])\n      .union([\n        {name: \"khov\", age : \"10\"}\n      , {name: \"nuno\", age : \"20\"}]) // returns vitor, khov and nuno\n```\n","readmeFilename":"README.md","_id":"venn@0.3.0","dist":{"shasum":"7390c92f9c254c44e6910d053301517eeda92193","tarball":"https://registry.npmjs.org/venn/-/venn-0.3.0.tgz","integrity":"sha512-KIOfxPri62rTvUpQljArt3l5oheCMAjJSNiU3AXhLSbnv51qcjz4nVXMqNit/BaZbpYoErBxWG5cS9yELdpIhw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBidOdJTkOVgwB+L2p22RrxsaEvwTVIb4Oa+b5V3absQIgd8PGVLuHfILu4Vq1CNn2aHfmInIaQ4KaSFycXodg3qI="}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"maintainers":[{"name":"bitoiu","email":"vmrmonteiro@gmail.com"}],"directories":{}},"0.4.0":{"name":"venn","preferGlobal":false,"version":"0.4.0","author":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"description":"unambitious fluent API library for set operations.","repository":{"type":"git","url":"https://github.com/bitoiu/venn.git"},"keywords":["venn","set","intersect","union"],"dependencies":{"requirejs":"2.1.x","amdefine":">=0.0.5"},"devDependencies":{"mocha":"1.9.x","chai":"1.5.x","karma":">=0.8.x","lodash":"1.3.x","karma-mocha":"0.1","karma-requirejs":"0.1"},"scripts":{"test":"./node_modules/.bin/karma start --single-run --browsers PhantomJS && mocha"},"license":"MIT","engines":{"node":">=0.6"},"readme":"# venn [![Build Status](https://travis-ci.org/bitoiu/venn.png)](https://travis-ci.org/bitoiu/venn) [![NPM version](https://badge.fury.io/js/venn.png)](http://badge.fury.io/js/venn)\n\n![wiki stolen logo](http://upload.wikimedia.org/wikipedia/commons/9/99/Venn0001.svg)\n\nfluent API library for set operations:\n* supports objects\n* AMD and node compatible\n\n\n*Note: I've noticed I had some downloads on npm, please send your issues and comments if you have any. I kind of stopped this half way through because it served my objectives, but I will resume development soon for the little bit and pieces that are missing.*\n\n### Usage\n\nA venn set is just an array with some added features:\n\n```javascript\n\n  var venn = require(\"venn\")\n  \n  venn.create([1,2]) // returns [1,2]\n```\n\nYou can now chain operations to this set, like a union\n\n```javascript\n  venn.create([1,2])\n      .union([1,2,3,4]) // returns [1,2,3,4]  \n```\n\nOr an intersection\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4]) \n      .intersection([1,5]) // returns [1]\n```\n\nOr a mix of everything\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4]) \n      .intersection([1,5])\n      .union([2]) // returns [1,5,2]      \n```\n\nYou can also use objects\n\n```javascript\n    venn.create([\n        {name: \"vitor\", age: \"23\"}\n      , {name: \"khov\",  age: \"24\"}\n      , {name: \"pat\",   age: \"30\"}])\n      .intersection([\n        {name: \"vitor\",  age: \"23\"}\n      , {name: \"newguy\", age: \"0\"}\n      , {name: \"pat\",    age: \"50\"}])\n      .union([\n        {name: \"khov\", age : \"10\"}\n      , {name: \"nuno\", age : \"20\"}]) // returns vitor, khov and nuno\n```\n","readmeFilename":"README.md","_id":"venn@0.4.0","dist":{"shasum":"504a8b841bf53826ece46cbab300fe28d95044c0","tarball":"https://registry.npmjs.org/venn/-/venn-0.4.0.tgz","integrity":"sha512-4K2ZvT3iOUd252XVNADzJgBwTwC1hqZKf9ij7g1SVca113ViBzmzcsM1br55vWhBHYlJfbcnCnaHHojZpO/4kA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFFnOWG0uWH4dqPs0aq9f0Dr5GII3BprHTe7gJmNwGRAAiEAvLGIBqSY38fsNbtqFls/r1x9oDxv6Iprc9Ulzxwipq8="}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"maintainers":[{"name":"bitoiu","email":"vmrmonteiro@gmail.com"}],"directories":{}},"0.6.0":{"name":"venn","preferGlobal":false,"version":"0.6.0","author":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"description":"unambitious fluent API library for set operations.","repository":{"type":"git","url":"https://github.com/bitoiu/venn.git"},"keywords":["venn","set","intersect","union"],"dependencies":{"requirejs":"2.1.x","amdefine":">=0.0.5"},"devDependencies":{"mocha":"1.9.x","chai":"1.5.x","karma":">=0.8.x","lodash":"1.3.x","karma-mocha":"0.1","karma-requirejs":"0.1"},"scripts":{"test":"./node_modules/.bin/karma start --single-run --browsers PhantomJS && mocha"},"license":"MIT","engines":{"node":">=0.6"},"readme":"# venn [![Build Status](https://travis-ci.org/bitoiu/venn.png)](https://travis-ci.org/bitoiu/venn) [![NPM version](https://badge.fury.io/js/venn.png)](http://badge.fury.io/js/venn)\n\n## Motivation\n\nOne of these days I was looking for a library that would allow me to do simple set operations, mostly intersection and unions. There's so many that do it, like underscore, the problem I found was that none of them had a fluent API, so I took a take on doing my own.\n\nCompatible with AMD and node.\n\n### getting started \n\nA venn set is just an array on steroids:\n\n```javascript\n\n  var venn = require(\"venn\")\n  venn.create([1,2])   \n  console.log(venn) // [1,2]\n\n```\n\n### union\n\nYou can now chain operations to this set, like an union:\n\n```javascript\n  venn.create([1,2])\n      .union([1,2,3,4])\n      .union([5]) // [1,2,3,4,5]  \n```\n\n### intersection\n\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4]) \n      .intersection([1,5]) // [1]\n```\n\n### chaining everything\n\nOr a mix of everything\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4,5]) \n      .intersection([1,5])\n      .union([2]) // [1,5,2]      \n```\n\n### Objects\n\nIf you're crazy you can use venn without a key function. We'll just figure it out how to index the objects.\n\n```javascript\n    venn.create([\n        {name: \"vitor\", age: \"23\"}\n      , {name: \"khov\",  age: \"24\"}\n      , {name: \"pat\",   age: \"30\"}])\n      .intersection([\n        {name: \"vitor\",  age: \"23\"}\n      , {name: \"newguy\", age: \"0\"}\n      , {name: \"pat\",    age: \"50\"}])\n      .union([\n        {name: \"khov\", age : \"10\"}\n      , {name: \"nuno\", age : \"20\"}]) \n\n    // vitor, khov and nuno\n```\n\n### Key function\n\nBut really, write your own key function:\n\n```javascript\n  \n    var myKeyFunction = function(item) {\n      return item.name\n    }\n    \n    venn.create([\n        {name: \"vitor\", age: \"100\"}\n      , {name: \"khov\",  age: \"100\"}], myKeyFunction)\n      .intersection([\n        {name: \"vitor\", age: \"0\"}\n      , {name: \"khov\",  age: \"0\"}\n      .union([\n        {name: \"khov\",  age : \"-100\"}\n      , {name: \"nuno\",  age : \"20\"}]) \n   \n    // vitor, khov(the first of them), nuno\n```\n\n### Some notes\n\n* The keyFunction only needs to be set once for each venn object (as you would expect)\n* Don't forget if you apply a built-in array function like `filter` or `map` the returning object is not a venn object (as you would once again expect)\n\nLet me know if there are improvements I can do to the library. I might take some time to implement the other less used set operations.\n\n","readmeFilename":"README.md","_id":"venn@0.6.0","dist":{"shasum":"58bba7c572465bbd3eb135d497622421ac313b4f","tarball":"https://registry.npmjs.org/venn/-/venn-0.6.0.tgz","integrity":"sha512-A0ofuDSjDsZ2a7kOwQT3hxpFOyowGo9SfHMD7n3Nf5JldQN1QPVjoirJ49DRuGztlGHwzxjUc+Ua63AmSKO1kg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHqTlvBrkI5WV3DvWAeD9MWpcBfrUkuY0l3swsH5zJ6XAiEA/8/ba8i61bDRGLuSb7N8K17SMXatl/HhPyJeMES7ZEA="}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"maintainers":[{"name":"bitoiu","email":"vmrmonteiro@gmail.com"}],"directories":{}},"0.6.1":{"name":"venn","preferGlobal":false,"version":"0.6.1","author":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"description":"fluent API library for set operations","repository":{"type":"git","url":"https://github.com/bitoiu/venn.git"},"keywords":["venn","set","intersect","union"],"dependencies":{"requirejs":"2.1.x","amdefine":">=0.0.5"},"devDependencies":{"mocha":"1.9.x","chai":"1.5.x","karma":">=0.8.x","lodash":"1.3.x","karma-mocha":"0.1","karma-requirejs":"0.1","grunt-cli":"~0.1.6","grunt-contrib-uglify":"~0.2.2","grunt-release":"~0.6.0"},"scripts":{"test":"./node_modules/.bin/karma start --single-run --browsers PhantomJS && mocha"},"license":"MIT","engines":{"node":">=0.6"},"readme":"# venn [![Build Status](https://travis-ci.org/bitoiu/venn.png)](https://travis-ci.org/bitoiu/venn) [![NPM version](https://badge.fury.io/js/venn.png)](http://badge.fury.io/js/venn)\n\n## Motivation\n\nOne of these days I was looking for a library that would allow me to do simple set operations, mostly intersection and unions. There's so many that do it, like underscore, the problem I found was that none of them had a fluent API, so I took a take on doing my own.\n\nCompatible with AMD and node.\n\n### getting started \n\nA venn set is just an array on steroids:\n\n```javascript\n\n  var venn = require(\"venn\")\n  venn.create([1,2])   \n  console.log(venn) // [1,2]\n\n```\n\n### union\n\nYou can now chain operations to this set, like an union:\n\n```javascript\n  venn.create([1,2])\n      .union([1,2,3,4])\n      .union([5]) // [1,2,3,4,5]  \n```\n\n### intersection\n\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4]) \n      .intersection([1,5]) // [1]\n```\n\n### chaining everything\n\nOr a mix of everything\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4,5]) \n      .intersection([1,5])\n      .union([2]) // [1,5,2]      \n```\n\n### Objects\n\nIf you're crazy you can use venn without a key function. We'll just figure it out how to index the objects.\n\n```javascript\n    venn.create([\n        {name: \"vitor\", age: \"23\"}\n      , {name: \"khov\",  age: \"24\"}\n      , {name: \"pat\",   age: \"30\"}])\n      .intersection([\n        {name: \"vitor\",  age: \"23\"}\n      , {name: \"newguy\", age: \"0\"}\n      , {name: \"pat\",    age: \"50\"}])\n      .union([\n        {name: \"khov\", age : \"10\"}\n      , {name: \"nuno\", age : \"20\"}]) \n\n    // vitor, khov and nuno\n```\n\n### Key function\n\nBut really, write your own key function:\n\n```javascript\n  \n    var myKeyFunction = function(item) {\n      return item.name\n    }\n    \n    venn.create([\n        {name: \"vitor\", age: \"100\"}\n      , {name: \"khov\",  age: \"100\"}], myKeyFunction)\n      .intersection([\n        {name: \"vitor\", age: \"0\"}\n      , {name: \"khov\",  age: \"0\"}\n      .union([\n        {name: \"khov\",  age : \"-100\"}\n      , {name: \"nuno\",  age : \"20\"}]) \n   \n    // vitor, khov(the first of them), nuno\n```\n\n### Some notes\n\n* The keyFunction only needs to be set once for each venn object (as you would expect)\n* Don't forget if you apply a built-in array function like `filter` or `map` the returning object is not a venn object (as you would once again expect)\n\nLet me know if there are improvements I can do to the library. I might take some time to implement the other less used set operations.\n\n","readmeFilename":"README.md","_id":"venn@0.6.1","dist":{"shasum":"8cb1e23977ccc32e7a4629e380030916e1046e88","tarball":"https://registry.npmjs.org/venn/-/venn-0.6.1.tgz","integrity":"sha512-cJ2SASGvxb/cRnQXq+oa6+CN2Wpf8lsNA2PrQ5bk+nvoqjM6Orwj0gvq5pMYY97ev5839fU33KBsQbaAt31cSQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEEUn5+7NeMSS0XlWLY+fGdXm3Ci5WrN2vquRef542n6AiEA/jYYa78+FPZHleNni7UaXLZMJxO/b69v6X3aAwL5XR0="}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"maintainers":[{"name":"bitoiu","email":"vmrmonteiro@gmail.com"}],"directories":{}},"0.6.2":{"name":"venn","preferGlobal":false,"version":"0.6.2","author":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"description":"fluent API library for set operations","repository":{"type":"git","url":"https://github.com/bitoiu/venn.git"},"keywords":["venn","set","intersect","union"],"dependencies":{"requirejs":"2.1.x","amdefine":">=0.0.5"},"devDependencies":{"mocha":"1.9.x","chai":"1.5.x","karma":">=0.8.x","lodash":"1.3.x","karma-mocha":"0.1","karma-requirejs":"0.1","grunt-cli":"~0.1.6","grunt-contrib-uglify":"~0.2.2","grunt-release":"~0.6.0"},"scripts":{"test":"./node_modules/.bin/karma start --single-run --browsers PhantomJS && mocha"},"license":"MIT","engines":{"node":">=0.6"},"readme":"# venn [![Build Status](https://travis-ci.org/bitoiu/venn.png)](https://travis-ci.org/bitoiu/venn) [![NPM version](https://badge.fury.io/js/venn.png)](http://badge.fury.io/js/venn)\n\n## Motivation\n\nOne of these days I was looking for a library that would allow me to do simple set operations, mostly intersection and unions. There's so many that do it, like underscore, the problem I found was that none of them had a fluent API, so I took a take on doing my own.\n\nCompatible with AMD and node.\n\n### getting started \n\nA venn set is just an array on steroids:\n\n```javascript\n\n  var venn = require(\"venn\")\n  venn.create([1,2])   \n  console.log(venn) // [1,2]\n\n```\n\n### union\n\nYou can now chain operations to this set, like an union:\n\n```javascript\n  venn.create([1,2])\n      .union([1,2,3,4])\n      .union([5]) // [1,2,3,4,5]  \n```\n\n### intersection\n\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4]) \n      .intersection([1,5]) // [1]\n```\n\n### chaining everything\n\nOr a mix of everything\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4,5]) \n      .intersection([1,5])\n      .union([2]) // [1,5,2]      \n```\n\n### Objects\n\nIf you're crazy you can use venn without a key function. We'll just figure it out how to index the objects.\n\n```javascript\n    venn.create([\n        {name: \"vitor\", age: \"23\"}\n      , {name: \"khov\",  age: \"24\"}\n      , {name: \"pat\",   age: \"30\"}])\n      .intersection([\n        {name: \"vitor\",  age: \"23\"}\n      , {name: \"newguy\", age: \"0\"}\n      , {name: \"pat\",    age: \"50\"}])\n      .union([\n        {name: \"khov\", age : \"10\"}\n      , {name: \"nuno\", age : \"20\"}]) \n\n    // vitor, khov and nuno\n```\n\n### Key function\n\nBut really, write your own key function:\n\n```javascript\n  \n    var myKeyFunction = function(item) {\n      return item.name\n    }\n    \n    venn.create([\n        {name: \"vitor\", age: \"100\"}\n      , {name: \"khov\",  age: \"100\"}], myKeyFunction)\n      .intersection([\n        {name: \"vitor\", age: \"0\"}\n      , {name: \"khov\",  age: \"0\"}\n      .union([\n        {name: \"khov\",  age : \"-100\"}\n      , {name: \"nuno\",  age : \"20\"}]) \n   \n    // vitor, khov(the first of them), nuno\n```\n\n### Some notes\n\n* The keyFunction only needs to be set once for each venn object (as you would expect)\n* Don't forget if you apply a built-in array function like `filter` or `map` the returning object is not a venn object (as you would once again expect)\n\nLet me know if there are improvements I can do to the library. I might take some time to implement the other less used set operations.\n\n","readmeFilename":"README.md","_id":"venn@0.6.2","dist":{"shasum":"0a15e36368610be4ddf9ce2b17c6c8fe72360225","tarball":"https://registry.npmjs.org/venn/-/venn-0.6.2.tgz","integrity":"sha512-vy0nmNlEZWt8ax0ftnYxXcOL1MAwDGDjUMRJ6PeahDEa8ivtRc1UTieDWBQOL6GHQ3WZ10SeSDGUrC12Dr+n2Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF1uXUuGFG82Hfidl188gjXVP86voN+BJKhzrXxHaJdDAiEA+EqQ/5rjiNOvVCTnfEywQULhnUviDRLFmVgoMgchL8I="}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"maintainers":[{"name":"bitoiu","email":"vmrmonteiro@gmail.com"}],"directories":{}},"0.6.4":{"name":"venn","preferGlobal":false,"version":"0.6.4","author":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"description":"fluent API library for set operations","repository":{"type":"git","url":"https://github.com/bitoiu/venn.git"},"keywords":["venn","set","intersect","union"],"dependencies":{"requirejs":"2.1.x","amdefine":">=0.0.5"},"devDependencies":{"mocha":"1.9.x","chai":"1.5.x","karma":">=0.8.x","lodash":"1.3.x","karma-mocha":"0.1","karma-requirejs":"0.1","grunt-cli":"~0.1.6","grunt-contrib-uglify":"~0.2.2","grunt-release":"~0.6.0","grunt-git":"~0.1.5"},"scripts":{"test":"./node_modules/.bin/karma start --single-run --browsers PhantomJS && mocha"},"license":"MIT","engines":{"node":">=0.6"},"readme":"# venn [![Build Status](https://travis-ci.org/bitoiu/venn.png)](https://travis-ci.org/bitoiu/venn) [![NPM version](https://badge.fury.io/js/venn.png)](http://badge.fury.io/js/venn)\n\n## Motivation\n\nOne of these days I was looking for a library that would allow me to do simple set operations, mostly intersection and unions. There's so many that do it, like underscore, the problem I found was that none of them had a fluent API, so I took a take on doing my own.\n\nCompatible with AMD and node.\n\n### getting started \n\nA venn set is just an array on steroids:\n\n```javascript\n\n  var venn = require(\"venn\")\n  venn.create([1,2])   \n  console.log(venn) // [1,2]\n\n```\n\n### union\n\nYou can now chain operations to this set, like an union:\n\n```javascript\n  venn.create([1,2])\n      .union([1,2,3,4])\n      .union([5]) // [1,2,3,4,5]  \n```\n\n### intersection\n\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4]) \n      .intersection([1,5]) // [1]\n```\n\n### chaining everything\n\nOr a mix of everything\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4,5]) \n      .intersection([1,5])\n      .union([2]) // [1,5,2]      \n```\n\n### Objects\n\nIf you're crazy you can use venn without a key function. We'll just figure it out how to index the objects.\n\n```javascript\n    venn.create([\n        {name: \"vitor\", age: \"23\"}\n      , {name: \"khov\",  age: \"24\"}\n      , {name: \"pat\",   age: \"30\"}])\n      .intersection([\n        {name: \"vitor\",  age: \"23\"}\n      , {name: \"newguy\", age: \"0\"}\n      , {name: \"pat\",    age: \"50\"}])\n      .union([\n        {name: \"khov\", age : \"10\"}\n      , {name: \"nuno\", age : \"20\"}]) \n\n    // vitor, khov and nuno\n```\n\n### Key function\n\nBut really, write your own key function:\n\n```javascript\n  \n    var myKeyFunction = function(item) {\n      return item.name\n    }\n    \n    venn.create([\n        {name: \"vitor\", age: \"100\"}\n      , {name: \"khov\",  age: \"100\"}], myKeyFunction)\n      .intersection([\n        {name: \"vitor\", age: \"0\"}\n      , {name: \"khov\",  age: \"0\"}\n      .union([\n        {name: \"khov\",  age : \"-100\"}\n      , {name: \"nuno\",  age : \"20\"}]) \n   \n    // vitor, khov(the first of them), nuno\n```\n\n### Some notes\n\n* The keyFunction only needs to be set once for each venn object (as you would expect)\n* Don't forget if you apply a built-in array function like `filter` or `map` the returning object is not a venn object (as you would once again expect)\n\nLet me know if there are improvements I can do to the library. I might take some time to implement the other less used set operations.\n\n","readmeFilename":"README.md","_id":"venn@0.6.4","dist":{"shasum":"4572a74dd5519f66974d32ac399ce478ddaadb55","tarball":"https://registry.npmjs.org/venn/-/venn-0.6.4.tgz","integrity":"sha512-EsFrGFnO8iOS5S1UwgB/fjGsvux5u/3H8nw//lHsYA6OlOX2LmZYglMoJQKkINM0XWQQveGsEe6WANauzaUzlg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFh2sOlvWPPLoMyx8ozsD6yfI/hfccm2a43N2TF1cEvnAiEAsAxKw1VfuzN/ZhJpZV2O4Z6oxMFWhW4H/avOnN+ysEc="}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"maintainers":[{"name":"bitoiu","email":"vmrmonteiro@gmail.com"}],"directories":{}},"0.6.5":{"name":"venn","preferGlobal":false,"version":"0.6.5","author":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"description":"fluent API library for set operations","repository":{"type":"git","url":"https://github.com/bitoiu/venn.git"},"keywords":["venn","set","intersect","union"],"dependencies":{"requirejs":"2.1.x","amdefine":">=0.0.5"},"devDependencies":{"mocha":"1.9.x","chai":"1.5.x","karma":">=0.8.x","lodash":"1.3.x","karma-mocha":"0.1","karma-requirejs":"0.1","grunt-cli":"~0.1.6","grunt-contrib-uglify":"~0.2.2","grunt-release":"~0.6.0","grunt-git":"~0.1.5"},"scripts":{"test":"./node_modules/.bin/karma start --single-run --browsers PhantomJS && mocha"},"license":"MIT","engines":{"node":">=0.6"},"readme":"# venn [![Build Status](https://travis-ci.org/bitoiu/venn.png)](https://travis-ci.org/bitoiu/venn) [![NPM version](https://badge.fury.io/js/venn.png)](http://badge.fury.io/js/venn)\n\n## Motivation\n\nOne of these days I was looking for a library that would allow me to do simple set operations, mostly intersection and unions. There's so many that do it, like underscore, the problem I found was that none of them had a fluent API, so I took a take on doing my own.\n\nCompatible with AMD and node.\n\n### getting started \n\nA venn set is just an array on steroids:\n\n```javascript\n\n  var venn = require(\"venn\")\n  venn.create([1,2])   \n  console.log(venn) // [1,2]\n\n```\n\n### union\n\nYou can now chain operations to this set, like an union:\n\n```javascript\n  venn.create([1,2])\n      .union([1,2,3,4])\n      .union([5]) // [1,2,3,4,5]  \n```\n\n### intersection\n\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4]) \n      .intersection([1,5]) // [1]\n```\n\n### chaining everything\n\nOr a mix of everything\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4,5]) \n      .intersection([1,5])\n      .union([2]) // [1,5,2]      \n```\n\n### Objects\n\nIf you're crazy you can use venn without a key function. We'll just figure it out how to index the objects.\n\n```javascript\n    venn.create([\n        {name: \"vitor\", age: \"23\"}\n      , {name: \"khov\",  age: \"24\"}\n      , {name: \"pat\",   age: \"30\"}])\n      .intersection([\n        {name: \"vitor\",  age: \"23\"}\n      , {name: \"newguy\", age: \"0\"}\n      , {name: \"pat\",    age: \"50\"}])\n      .union([\n        {name: \"khov\", age : \"10\"}\n      , {name: \"nuno\", age : \"20\"}]) \n\n    // vitor, khov and nuno\n```\n\n### Key function\n\nBut really, write your own key function:\n\n```javascript\n  \n    var myKeyFunction = function(item) {\n      return item.name\n    }\n    \n    venn.create([\n        {name: \"vitor\", age: \"100\"}\n      , {name: \"khov\",  age: \"100\"}], myKeyFunction)\n      .intersection([\n        {name: \"vitor\", age: \"0\"}\n      , {name: \"khov\",  age: \"0\"}\n      .union([\n        {name: \"khov\",  age : \"-100\"}\n      , {name: \"nuno\",  age : \"20\"}]) \n   \n    // vitor, khov(the first of them), nuno\n```\n\n### Some notes\n\n* The keyFunction only needs to be set once for each venn object (as you would expect)\n* Don't forget if you apply a built-in array function like `filter` or `map` the returning object is not a venn object (as you would once again expect)\n\nLet me know if there are improvements I can do to the library. I might take some time to implement the other less used set operations.\n\n","readmeFilename":"README.md","_id":"venn@0.6.5","dist":{"shasum":"0e02a8c453929ef37c51bffc73df2cfdfd425bbb","tarball":"https://registry.npmjs.org/venn/-/venn-0.6.5.tgz","integrity":"sha512-TnddhrjJzklXCQc4VW6C0TObHw5lfnjxxTRToOUvC0cYVN84gW08uriSXKmKDBowlxw2ZLgMCORqo1dNf/vD1w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE9s9XyuBUXYgiH+QQif8vn2hlkE6zaFWnAsAHfdk4iqAiEAzcWEgVU6EH2YBsqTPZRGf4vCTsiivq9CiDa8Ahr2uOU="}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"maintainers":[{"name":"bitoiu","email":"vmrmonteiro@gmail.com"}],"directories":{}},"0.6.6":{"name":"venn","preferGlobal":false,"version":"0.6.6","author":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"description":"fluent API library for set operations","repository":{"type":"git","url":"https://github.com/bitoiu/venn.git"},"keywords":["venn","set","intersect","union"],"dependencies":{"requirejs":"2.1.x","amdefine":">=0.0.5"},"devDependencies":{"mocha":"1.9.x","chai":"1.5.x","karma":">=0.8.x","lodash":"1.3.x","karma-mocha":"0.1","karma-requirejs":"0.1","grunt-cli":"~0.1.6","grunt-contrib-uglify":"~0.2.2","grunt-release":"~0.6.0","grunt-git":"~0.1.5"},"scripts":{"test":"./node_modules/.bin/karma start --single-run --browsers PhantomJS && mocha"},"license":"MIT","engines":{"node":">=0.6"},"readme":"# venn [![Build Status](https://travis-ci.org/bitoiu/venn.png)](https://travis-ci.org/bitoiu/venn) [![NPM version](https://badge.fury.io/js/venn.png)](http://badge.fury.io/js/venn)\n\n## Motivation\n\nOne of these days I was looking for a library that would allow me to do simple set operations, mostly intersection and unions. There's so many that do it, like underscore, the problem I found was that none of them had a fluent API, so I took a take on doing my own.\n\nCompatible with AMD and node.\n\n### getting started \n\nA venn set is just an array on steroids:\n\n```javascript\n\n  var venn = require(\"venn\")\n  venn.create([1,2])   \n  console.log(venn) // [1,2]\n\n```\n\n### union\n\nYou can now chain operations to this set, like an union:\n\n```javascript\n  venn.create([1,2])\n      .union([1,2,3,4])\n      .union([5]) // [1,2,3,4,5]  \n```\n\n### intersection\n\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4]) \n      .intersection([1,5]) // [1]\n```\n\n### chaining everything\n\nOr a mix of everything\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4,5]) \n      .intersection([1,5])\n      .union([2]) // [1,5,2]      \n```\n\n### Objects\n\nIf you're crazy you can use venn without a key function. We'll just figure it out how to index the objects.\n\n```javascript\n    venn.create([\n        {name: \"vitor\", age: \"23\"}\n      , {name: \"khov\",  age: \"24\"}\n      , {name: \"pat\",   age: \"30\"}])\n      .intersection([\n        {name: \"vitor\",  age: \"23\"}\n      , {name: \"newguy\", age: \"0\"}\n      , {name: \"pat\",    age: \"50\"}])\n      .union([\n        {name: \"khov\", age : \"10\"}\n      , {name: \"nuno\", age : \"20\"}]) \n\n    // vitor, khov and nuno\n```\n\n### Key function\n\nBut really, write your own key function:\n\n```javascript\n  \n    var myKeyFunction = function(item) {\n      return item.name\n    }\n    \n    venn.create([\n        {name: \"vitor\", age: \"100\"}\n      , {name: \"khov\",  age: \"100\"}], myKeyFunction)\n      .intersection([\n        {name: \"vitor\", age: \"0\"}\n      , {name: \"khov\",  age: \"0\"}\n      .union([\n        {name: \"khov\",  age : \"-100\"}\n      , {name: \"nuno\",  age : \"20\"}]) \n   \n    // vitor, khov(the first of them), nuno\n```\n\n### Some notes\n\n* The keyFunction only needs to be set once for each venn object (as you would expect)\n* Don't forget if you apply a built-in array function like `filter` or `map` the returning object is not a venn object (as you would once again expect)\n\nLet me know if there are improvements I can do to the library. I might take some time to implement the other less used set operations.\n\n","readmeFilename":"README.md","_id":"venn@0.6.6","dist":{"shasum":"846ed04d9f01ccae337d97e99948dac39b9a2bd2","tarball":"https://registry.npmjs.org/venn/-/venn-0.6.6.tgz","integrity":"sha512-ZttSfbIWspdd01xV1Yh6hZACABiVuwl1n8k37IgVCNIsQtq/otIqmUewMvUK0fbF+GBevOegfv/YZ8Jwcu7IsA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDyE9Ut4FzwNnwebBlPLUF6BJvMqruCG04dcfEz+odqMQIhAIoKQ+fZ8RiIQ0Aw9GsUHcsdqBCsX3ER1fgCgCnnzcNR"}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"maintainers":[{"name":"bitoiu","email":"vmrmonteiro@gmail.com"}],"directories":{}},"0.6.7":{"name":"venn","preferGlobal":false,"version":"0.6.7","author":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"description":"fluent API library for set operations","repository":{"type":"git","url":"https://github.com/bitoiu/venn.git"},"keywords":["venn","set","intersect","union"],"dependencies":{"requirejs":"2.1.x","amdefine":">=0.0.5"},"devDependencies":{"mocha":"1.9.x","chai":"1.5.x","karma":">=0.8.x","lodash":"1.3.x","karma-mocha":"0.1","karma-requirejs":"0.1","grunt-cli":"~0.1.6","grunt-contrib-uglify":"~0.2.2","grunt-release":"~0.6.0","grunt-git":"~0.1.5"},"scripts":{"test":"./node_modules/.bin/karma start --single-run --browsers PhantomJS && mocha"},"license":"MIT","engines":{"node":">=0.6"},"readme":"# venn [![Build Status](https://travis-ci.org/bitoiu/venn.png)](https://travis-ci.org/bitoiu/venn) [![NPM version](https://badge.fury.io/js/venn.png)](http://badge.fury.io/js/venn)\n\n## Motivation\n\nOne of these days I was looking for a library that would allow me to do simple set operations, mostly intersection and unions. There's so many that do it, like underscore, the problem I found was that none of them had a fluent API, so I took a take on doing my own.\n\nCompatible with AMD and node.\n\n### getting started \n\nA venn set is just an array on steroids:\n\n```javascript\n\n  var venn = require(\"venn\")\n  venn.create([1,2])   \n  console.log(venn) // [1,2]\n\n```\n\n### union\n\nYou can now chain operations to this set, like an union:\n\n```javascript\n  venn.create([1,2])\n      .union([1,2,3,4])\n      .union([5]) // [1,2,3,4,5]  \n```\n\n### intersection\n\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4]) \n      .intersection([1,5]) // [1]\n```\n\n### chaining everything\n\nOr a mix of everything\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4,5]) \n      .intersection([1,5])\n      .union([2]) // [1,5,2]      \n```\n\n### Objects\n\nIf you're crazy you can use venn without a key function. We'll just figure it out how to index the objects.\n\n```javascript\n    venn.create([\n        {name: \"vitor\", age: \"23\"}\n      , {name: \"khov\",  age: \"24\"}\n      , {name: \"pat\",   age: \"30\"}])\n      .intersection([\n        {name: \"vitor\",  age: \"23\"}\n      , {name: \"newguy\", age: \"0\"}\n      , {name: \"pat\",    age: \"50\"}])\n      .union([\n        {name: \"khov\", age : \"10\"}\n      , {name: \"nuno\", age : \"20\"}]) \n\n    // vitor, khov and nuno\n```\n\n### Key function\n\nBut really, write your own key function:\n\n```javascript\n  \n    var myKeyFunction = function(item) {\n      return item.name\n    }\n    \n    venn.create([\n        {name: \"vitor\", age: \"100\"}\n      , {name: \"khov\",  age: \"100\"}], myKeyFunction)\n      .intersection([\n        {name: \"vitor\", age: \"0\"}\n      , {name: \"khov\",  age: \"0\"}\n      .union([\n        {name: \"khov\",  age : \"-100\"}\n      , {name: \"nuno\",  age : \"20\"}]) \n   \n    // vitor, khov(the first of them), nuno\n```\n\n### Some notes\n\n* The keyFunction only needs to be set once for each venn object (as you would expect)\n* Don't forget if you apply a built-in array function like `filter` or `map` the returning object is not a venn object (as you would once again expect)\n\nLet me know if there are improvements I can do to the library. I might take some time to implement the other less used set operations.\n\n","readmeFilename":"README.md","_id":"venn@0.6.7","dist":{"shasum":"4f578d08080c0051b31f6136a411406835ba2a4e","tarball":"https://registry.npmjs.org/venn/-/venn-0.6.7.tgz","integrity":"sha512-o88a+OAxlFQu/+MXSiCKsRqsK8bkB+zJmBIiUetx9Gr3oqCJxPMefAwclsNNh0h3pBqlQkWe9UqTdNShq3cCJA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIENxXTUJG0vU3kT1EMHiR3ZTXbUBiY3ZhZjyOTiwFmMDAiBvZW+26Q72YjPYguAsgcIn9UcYnei1Z+Wa7mk1wXrYHA=="}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"maintainers":[{"name":"bitoiu","email":"vmrmonteiro@gmail.com"}],"directories":{}},"0.6.8":{"name":"venn","preferGlobal":false,"version":"0.6.8","author":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"description":"fluent API library for set operations","repository":{"type":"git","url":"https://github.com/bitoiu/venn.git"},"keywords":["venn","set","intersect","union"],"dependencies":{"requirejs":"2.1.x","amdefine":">=0.0.5"},"devDependencies":{"mocha":"1.9.x","chai":"1.5.x","karma":">=0.8.x","lodash":"1.3.x","karma-mocha":"0.1","karma-requirejs":"0.1","grunt-cli":"~0.1.6","grunt-contrib-uglify":"~0.2.2","grunt-release":"~0.6.0","grunt-git":"~0.1.5"},"scripts":{"test":"./node_modules/.bin/karma start --single-run --browsers PhantomJS && mocha"},"license":"MIT","engines":{"node":">=0.6"},"readme":"# venn [![Build Status](https://travis-ci.org/bitoiu/venn.png)](https://travis-ci.org/bitoiu/venn) [![NPM version](https://badge.fury.io/js/venn.png)](http://badge.fury.io/js/venn)\n\n## Motivation\n\nOne of these days I was looking for a library that would allow me to do simple set operations, mostly intersection and unions. There's so many that do it, like underscore, the problem I found was that none of them had a fluent API, so I took a take on doing my own.\n\nCompatible with AMD and node.\n\n### getting started \n\nA venn set is just an array on steroids:\n\n```javascript\n\n  var venn = require(\"venn\")\n  venn.create([1,2])   \n  console.log(venn) // [1,2]\n\n```\n\n### union\n\nYou can now chain operations to this set, like an union:\n\n```javascript\n  venn.create([1,2])\n      .union([1,2,3,4])\n      .union([5]) // [1,2,3,4,5]  \n```\n\n### intersection\n\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4]) \n      .intersection([1,5]) // [1]\n```\n\n### chaining everything\n\nOr a mix of everything\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4,5]) \n      .intersection([1,5])\n      .union([2]) // [1,5,2]      \n```\n\n### Objects\n\nIf you're crazy you can use venn without a key function. We'll just figure it out how to index the objects.\n\n```javascript\n    venn.create([\n        {name: \"vitor\", age: \"23\"}\n      , {name: \"khov\",  age: \"24\"}\n      , {name: \"pat\",   age: \"30\"}])\n      .intersection([\n        {name: \"vitor\",  age: \"23\"}\n      , {name: \"newguy\", age: \"0\"}\n      , {name: \"pat\",    age: \"50\"}])\n      .union([\n        {name: \"khov\", age : \"10\"}\n      , {name: \"nuno\", age : \"20\"}]) \n\n    // vitor, khov and nuno\n```\n\n### Key function\n\nBut really, write your own key function:\n\n```javascript\n  \n    var myKeyFunction = function(item) {\n      return item.name\n    }\n    \n    venn.create([\n        {name: \"vitor\", age: \"100\"}\n      , {name: \"khov\",  age: \"100\"}], myKeyFunction)\n      .intersection([\n        {name: \"vitor\", age: \"0\"}\n      , {name: \"khov\",  age: \"0\"}\n      .union([\n        {name: \"khov\",  age : \"-100\"}\n      , {name: \"nuno\",  age : \"20\"}]) \n   \n    // vitor, khov(the first of them), nuno\n```\n\n### Some notes\n\n* The keyFunction only needs to be set once for each venn object (as you would expect)\n* Don't forget if you apply a built-in array function like `filter` or `map` the returning object is not a venn object (as you would once again expect)\n\nLet me know if there are improvements I can do to the library. I might take some time to implement the other less used set operations.\n\n","readmeFilename":"README.md","_id":"venn@0.6.8","dist":{"shasum":"76424b1d2947c5b9487bbed06ed933d80e79722e","tarball":"https://registry.npmjs.org/venn/-/venn-0.6.8.tgz","integrity":"sha512-Ob84JtbUmLRMWJprLwOXByFkKJuUUINR0p6xHpCs6SSfXEQ9WjSxLBa/KTcV41A7J4AfNdz0S+nO1mRaWU+7Qw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH5bSbP2eZhqskJZyYXQLuhv0K8YIhR+baWkNuggZUJJAiEAjQeq3ZQmXPdhdJny01uDYxigc87IzpKEtMhUAPzNU84="}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"maintainers":[{"name":"bitoiu","email":"vmrmonteiro@gmail.com"}],"directories":{}},"0.6.9":{"name":"venn","preferGlobal":false,"version":"0.6.9","author":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"description":"fluent API library for set operations","repository":{"type":"git","url":"https://github.com/bitoiu/venn.git"},"keywords":["venn","set","intersect","union"],"dependencies":{"requirejs":"2.1.x","amdefine":">=0.0.5"},"devDependencies":{"mocha":"1.9.x","chai":"1.5.x","karma":">=0.8.x","lodash":"1.3.x","karma-mocha":"0.1","karma-requirejs":"0.1","grunt-cli":"~0.1.6","grunt-contrib-uglify":"~0.2.2","grunt-release":"~0.6.0","grunt-git":"~0.1.5"},"scripts":{"test":"./node_modules/.bin/karma start --single-run --browsers PhantomJS && mocha"},"license":"MIT","engines":{"node":">=0.6"},"readme":"# venn [![Build Status](https://travis-ci.org/bitoiu/venn.png)](https://travis-ci.org/bitoiu/venn) [![NPM version](https://badge.fury.io/js/venn.png)](http://badge.fury.io/js/venn)\n\n## Motivation\n\nOne of these days I was looking for a library that would allow me to do simple set operations, mostly intersection and unions. There's so many that do it, like underscore, the problem I found was that none of them had a fluent API, so I took a take on doing my own.\n\nCompatible with AMD and node.\n\n### getting started \n\nA venn set is just an array on steroids:\n\n```javascript\n\n  var venn = require(\"venn\")\n  venn.create([1,2])   \n  console.log(venn) // [1,2]\n\n```\n\n### union\n\nYou can now chain operations to this set, like an union:\n\n```javascript\n  venn.create([1,2])\n      .union([1,2,3,4])\n      .union([5]) // [1,2,3,4,5]  \n```\n\n### intersection\n\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4]) \n      .intersection([1,5]) // [1]\n```\n\n### chaining everything\n\nOr a mix of everything\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4,5]) \n      .intersection([1,5])\n      .union([2]) // [1,5,2]      \n```\n\n### Objects\n\nIf you're crazy you can use venn without a key function. We'll just figure it out how to index the objects.\n\n```javascript\n    venn.create([\n        {name: \"vitor\", age: \"23\"}\n      , {name: \"khov\",  age: \"24\"}\n      , {name: \"pat\",   age: \"30\"}])\n      .intersection([\n        {name: \"vitor\",  age: \"23\"}\n      , {name: \"newguy\", age: \"0\"}\n      , {name: \"pat\",    age: \"50\"}])\n      .union([\n        {name: \"khov\", age : \"10\"}\n      , {name: \"nuno\", age : \"20\"}]) \n\n    // vitor, khov and nuno\n```\n\n### Key function\n\nBut really, write your own key function:\n\n```javascript\n  \n    var myKeyFunction = function(item) {\n      return item.name\n    }\n    \n    venn.create([\n        {name: \"vitor\", age: \"100\"}\n      , {name: \"khov\",  age: \"100\"}], myKeyFunction)\n      .intersection([\n        {name: \"vitor\", age: \"0\"}\n      , {name: \"khov\",  age: \"0\"}\n      .union([\n        {name: \"khov\",  age : \"-100\"}\n      , {name: \"nuno\",  age : \"20\"}]) \n   \n    // vitor, khov(the first of them), nuno\n```\n\n### Some notes\n\n* The keyFunction only needs to be set once for each venn object (as you would expect)\n* Don't forget if you apply a built-in array function like `filter` or `map` the returning object is not a venn object (as you would once again expect)\n\nLet me know if there are improvements I can do to the library. I might take some time to implement the other less used set operations.\n\n","readmeFilename":"README.md","_id":"venn@0.6.9","dist":{"shasum":"024afa0dd7a91401e927c99ac15e0b2adcbc9ac3","tarball":"https://registry.npmjs.org/venn/-/venn-0.6.9.tgz","integrity":"sha512-rUz6+ElptKqADmMlKe5/Vmqu4WnOk5JFPECy9PmmTHHaeRmYCh8Qz/H0ZIPyCWVsews6zOrbAEBK0wApY9f9Ew==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGErWrax4ex/2e8QICNchJTF9+tq+72SEjuDVkNmdoEAAiAVNq+IFXOymNk/omFkJOU31lAuNAi2EFNQOYsNHAYjVw=="}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"maintainers":[{"name":"bitoiu","email":"vmrmonteiro@gmail.com"}],"directories":{}},"0.6.10":{"name":"venn","preferGlobal":false,"version":"0.6.10","author":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"description":"fluent API library for set operations","repository":{"type":"git","url":"https://github.com/bitoiu/venn.git"},"keywords":["venn","set","intersect","union"],"dependencies":{"requirejs":"2.1.x","amdefine":">=0.0.5"},"devDependencies":{"mocha":"1.9.x","chai":"1.5.x","karma":">=0.8.x","lodash":"1.3.x","karma-mocha":"0.1","karma-requirejs":"0.1","grunt-cli":"~0.1.6","grunt-contrib-uglify":"~0.2.2","grunt-release":"~0.6.0","grunt-git":"~0.1.5"},"scripts":{"test":"./node_modules/.bin/karma start --single-run --browsers PhantomJS && mocha"},"license":"MIT","engines":{"node":">=0.6"},"readme":"# venn [![Build Status](https://travis-ci.org/bitoiu/venn.png)](https://travis-ci.org/bitoiu/venn) [![NPM version](https://badge.fury.io/js/venn.png)](http://badge.fury.io/js/venn)\n\n## Motivation\n\nOne of these days I was looking for a library that would allow me to do simple set operations, mostly intersection and unions. There's so many that do it, like underscore, the problem I found was that none of them had a fluent API, so I took a take on doing my own.\n\nCompatible with AMD and node.\n\n### getting started \n\nA venn set is just an array on steroids:\n\n```javascript\n\n  var venn = require(\"venn\")\n  venn.create([1,2])   \n  console.log(venn) // [1,2]\n\n```\n\n### union\n\nYou can now chain operations to this set, like an union:\n\n```javascript\n  venn.create([1,2])\n      .union([1,2,3,4])\n      .union([5]) // [1,2,3,4,5]  \n```\n\n### intersection\n\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4]) \n      .intersection([1,5]) // [1]\n```\n\n### chaining everything\n\nOr a mix of everything\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4,5]) \n      .intersection([1,5])\n      .union([2]) // [1,5,2]      \n```\n\n### Objects\n\nIf you're crazy you can use venn without a key function. We'll just figure it out how to index the objects.\n\n```javascript\n    venn.create([\n        {name: \"vitor\", age: \"23\"}\n      , {name: \"khov\",  age: \"24\"}\n      , {name: \"pat\",   age: \"30\"}])\n      .intersection([\n        {name: \"vitor\",  age: \"23\"}\n      , {name: \"newguy\", age: \"0\"}\n      , {name: \"pat\",    age: \"50\"}])\n      .union([\n        {name: \"khov\", age : \"10\"}\n      , {name: \"nuno\", age : \"20\"}]) \n\n    // vitor, khov and nuno\n```\n\n### Key function\n\nBut really, write your own key function:\n\n```javascript\n  \n    var myKeyFunction = function(item) {\n      return item.name\n    }\n    \n    venn.create([\n        {name: \"vitor\", age: \"100\"}\n      , {name: \"khov\",  age: \"100\"}], myKeyFunction)\n      .intersection([\n        {name: \"vitor\", age: \"0\"}\n      , {name: \"khov\",  age: \"0\"}\n      .union([\n        {name: \"khov\",  age : \"-100\"}\n      , {name: \"nuno\",  age : \"20\"}]) \n   \n    // vitor, khov(the first of them), nuno\n```\n\n### Some notes\n\n* The keyFunction only needs to be set once for each venn object (as you would expect)\n* Don't forget if you apply a built-in array function like `filter` or `map` the returning object is not a venn object (as you would once again expect)\n\nLet me know if there are improvements I can do to the library. I might take some time to implement the other less used set operations.\n\n","readmeFilename":"README.md","_id":"venn@0.6.10","dist":{"shasum":"ca088aa14904d2e88bea73e906edfb3076898151","tarball":"https://registry.npmjs.org/venn/-/venn-0.6.10.tgz","integrity":"sha512-ERX2PVViuH2njbAnLNBMn9sEJPSim9jdmQ4RrP2xt3LwU6JdXGmzJldlQQFHgpgBRofhvokGpCnLb0ID49NJeQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC7/7UHM+YTuEarGpVBzLMeBvbiiMoF5zM9a4hdnNz/kwIgMUZsFWcP2OLqbKxWZlcHCDlkitBGiGiQ99S1/iOy+SQ="}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"maintainers":[{"name":"bitoiu","email":"vmrmonteiro@gmail.com"}],"directories":{}},"0.6.11":{"name":"venn","preferGlobal":false,"version":"0.6.11","author":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"description":"fluent API library for set operations","repository":{"type":"git","url":"https://github.com/bitoiu/venn.git"},"keywords":["venn","set","intersect","union"],"dependencies":{"requirejs":"2.1.x","amdefine":">=0.0.5"},"devDependencies":{"mocha":"1.9.x","chai":"1.5.x","karma":">=0.8.x","lodash":"1.3.x","karma-mocha":"0.1","karma-requirejs":"0.1","grunt-cli":"~0.1.6","grunt-contrib-uglify":"~0.2.2","grunt-release":"~0.6.0","grunt-git":"~0.1.5"},"scripts":{"test":"./node_modules/.bin/karma start --single-run --browsers PhantomJS && mocha"},"license":"MIT","engines":{"node":">=0.6"},"readme":"# venn [![Build Status](https://travis-ci.org/bitoiu/venn.png)](https://travis-ci.org/bitoiu/venn) [![NPM version](https://badge.fury.io/js/venn.png)](http://badge.fury.io/js/venn)\n\n## Motivation\n\nOne of these days I was looking for a library that would allow me to do simple set operations, mostly intersection and unions. There's so many that do it, like underscore, the problem I found was that none of them had a fluent API, so I took a take on doing my own.\n\nCompatible with AMD and node.\n\n### getting started \n\nA venn set is just an array on steroids:\n\n```javascript\n\n  var venn = require(\"venn\")\n  venn.create([1,2])   \n  console.log(venn) // [1,2]\n\n```\n\n### union\n\nYou can now chain operations to this set, like an union:\n\n```javascript\n  venn.create([1,2])\n      .union([1,2,3,4])\n      .union([5]) // [1,2,3,4,5]  \n```\n\n### intersection\n\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4]) \n      .intersection([1,5]) // [1]\n```\n\n### chaining everything\n\nOr a mix of everything\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4,5]) \n      .intersection([1,5])\n      .union([2]) // [1,5,2]      \n```\n\n### Objects\n\nIf you're crazy you can use venn without a key function. We'll just figure it out how to index the objects.\n\n```javascript\n    venn.create([\n        {name: \"vitor\", age: \"23\"}\n      , {name: \"khov\",  age: \"24\"}\n      , {name: \"pat\",   age: \"30\"}])\n      .intersection([\n        {name: \"vitor\",  age: \"23\"}\n      , {name: \"newguy\", age: \"0\"}\n      , {name: \"pat\",    age: \"50\"}])\n      .union([\n        {name: \"khov\", age : \"10\"}\n      , {name: \"nuno\", age : \"20\"}]) \n\n    // vitor, khov and nuno\n```\n\n### Key function\n\nBut really, write your own key function:\n\n```javascript\n  \n    var myKeyFunction = function(item) {\n      return item.name\n    }\n    \n    venn.create([\n        {name: \"vitor\", age: \"100\"}\n      , {name: \"khov\",  age: \"100\"}], myKeyFunction)\n      .intersection([\n        {name: \"vitor\", age: \"0\"}\n      , {name: \"khov\",  age: \"0\"}\n      .union([\n        {name: \"khov\",  age : \"-100\"}\n      , {name: \"nuno\",  age : \"20\"}]) \n   \n    // vitor, khov(the first of them), nuno\n```\n\n### Some notes\n\n* The keyFunction only needs to be set once for each venn object (as you would expect)\n* Don't forget if you apply a built-in array function like `filter` or `map` the returning object is not a venn object (as you would once again expect)\n\nLet me know if there are improvements I can do to the library. I might take some time to implement the other less used set operations.\n\n","readmeFilename":"README.md","_id":"venn@0.6.11","dist":{"shasum":"f81165973a8d4fd52b4c6c64d5eabdf26e606621","tarball":"https://registry.npmjs.org/venn/-/venn-0.6.11.tgz","integrity":"sha512-yjp2qXr55S6hnoy6LQHyiz6TE7FPXBA8Jw8yEnXe/eIT7rObqvRUhD+V0z8IfXD1u7iZ4TCKx/iuLm7GUKRyug==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMnr6sm7Ltu8OrCqbJGFq8LZeU2ggFAXuBEKxfww/3tQIgQBVi+c0qp/E4RtuGuBjT2Xsimlr17fGgBN/DcUX5tuU="}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"maintainers":[{"name":"bitoiu","email":"vmrmonteiro@gmail.com"}],"directories":{}},"0.7.1":{"name":"venn","preferGlobal":false,"version":"0.7.1","author":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"description":"fluent API library for set operations","repository":{"type":"git","url":"https://github.com/bitoiu/venn.git"},"keywords":["venn","set","intersect","union"],"dependencies":{"requirejs":"2.1.x","amdefine":">=0.0.5"},"devDependencies":{"mocha":"1.9.x","chai":"1.5.x","karma":">=0.8.x","lodash":"1.3.x","karma-mocha":"0.1","karma-requirejs":"0.1","grunt-cli":"~0.1.6","grunt-contrib-uglify":"~0.2.2","grunt-release":"~0.6.0","grunt-git":"~0.1.5"},"scripts":{"test":"./node_modules/.bin/karma start --single-run --browsers PhantomJS && mocha"},"license":"MIT","engines":{"node":">=0.6"},"readme":"# venn [![Build Status](https://travis-ci.org/bitoiu/venn.png)](https://travis-ci.org/bitoiu/venn) [![NPM version](https://badge.fury.io/js/venn.png)](http://badge.fury.io/js/venn)\n\n## Motivation\n\nOne of these days I was looking for a library that would allow me to do simple set operations, mostly intersection and unions. There's so many that do it, like underscore, the problem I found was that none of them had a fluent API, so I took a take on doing my own.\n\nCompatible with AMD and node.\n\n### getting started \n\nA venn set is just an array on steroids:\n\n```javascript\n\n  var venn = require(\"venn\")\n  venn.create([1,2])   \n  console.log(venn) // [1,2]\n\n```\n\n### union\n\nYou can now chain operations to this set, using `union` or `or`:\n\n```javascript\n  venn.create([1,2])\n      .union([1,2,3,4])\n      .or([5]) // [1,2,3,4,5]\n```\n\n`union` and `or` are just alias for the same operation.\n\n### intersection\n\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4]) \n      .intersection([1,5]) // [1]\n```\n\nif you prefer you can also use `and` instead of `intersection`\n\n### chaining everything\n\nOr a mix of everything\n\n```javascript\n    venn.create([1,2])\n      .or([1,2,3,4,5])\n      .and([1,5])\n      .or([2]) // [1,5,2]\n```\n\n### Objects\n\nIf you're crazy you can use venn without a key function. We'll just figure it out how to index the objects.\n\n```javascript\n    venn.create([\n        {name: \"vitor\", age: \"23\"}\n      , {name: \"khov\",  age: \"24\"}\n      , {name: \"pat\",   age: \"30\"}])\n      .intersection([\n        {name: \"vitor\",  age: \"23\"}\n      , {name: \"newguy\", age: \"0\"}\n      , {name: \"pat\",    age: \"50\"}])\n      .union([\n        {name: \"khov\", age : \"10\"}\n      , {name: \"nuno\", age : \"20\"}]) \n\n    // vitor, khov and nuno\n```\n\n### Key function\n\nBut really, write your own key function:\n\n```javascript\n  \n    var myKeyFunction = function(item) {\n      return item.name\n    }\n    \n    venn.create([\n        {name: \"vitor\", age: \"100\"}\n      , {name: \"khov\",  age: \"100\"}], myKeyFunction)\n      .and([\n        {name: \"vitor\", age: \"0\"}\n      , {name: \"khov\",  age: \"0\"}\n      .or([\n        {name: \"khov\",  age : \"-100\"}\n      , {name: \"nuno\",  age : \"20\"}]) \n   \n    // vitor, khov(the first of them), nuno\n```\n\n### Some notes\n\n* The keyFunction only needs to be set once for each venn object (as you would expect)\n* Don't forget if you apply a built-in array function like `filter` or `map` the returning object is not a venn object (as you would once again expect)\n\nLet me know if there are improvements I can do to the library. I might take some time to implement the other less used set operations.\n\n","readmeFilename":"README.md","_id":"venn@0.7.1","dist":{"shasum":"a8f9664d5149d27c4dabc5a2fc36ed1bbe298f53","tarball":"https://registry.npmjs.org/venn/-/venn-0.7.1.tgz","integrity":"sha512-Uf+aJqo1hOT5lBnfxiUni941nBuhX3o4LGmNz10VYn/G8l+QJxbacPNGuHmH4UDil2Jrp8preW5uMQBM9CSlDA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDo5SYg5LauOV6xnEsX6gVP52guy2hZ1sb0AR1fqenPgQIgZShrgZcDrrxOUnU3BkndUoyt3orrUEDdkWAxrbYzzig="}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"maintainers":[{"name":"bitoiu","email":"vmrmonteiro@gmail.com"}],"directories":{}},"0.7.2":{"name":"venn","preferGlobal":false,"version":"0.7.2","author":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"description":"fluent API library for set operations","repository":{"type":"git","url":"https://github.com/bitoiu/venn.git"},"keywords":["venn","set","intersect","union"],"dependencies":{"requirejs":"2.1.x","amdefine":">=0.0.5"},"devDependencies":{"mocha":"1.9.x","chai":"1.5.x","karma":">=0.8.x","lodash":"1.3.x","karma-mocha":"0.1","karma-requirejs":"0.1","grunt-cli":"~0.1.6","grunt-contrib-uglify":"~0.2.2","grunt-release":"~0.6.0","grunt-git":"~0.1.5"},"scripts":{"test":"./node_modules/.bin/karma start --single-run --browsers PhantomJS && mocha"},"license":"MIT","engines":{"node":">=0.6"},"readme":"# venn [![Build Status](https://travis-ci.org/bitoiu/venn.png)](https://travis-ci.org/bitoiu/venn) [![NPM version](https://badge.fury.io/js/venn.png)](http://badge.fury.io/js/venn)\n\n## Motivation\n\nOne of these days I was looking for a library that would allow me to do simple set operations, mostly intersection and unions. There's so many that do it, like underscore, the problem I found was that none of them had a fluent API, so I took a take on doing my own.\n\nCompatible with AMD and node.\n\n### getting started \n\nA venn set is just an array on steroids:\n\n```javascript\n\n  var venn = require(\"venn\")\n  venn.create([1,2])   \n  console.log(venn) // [1,2]\n\n```\n\n### union\n\nYou can now chain operations to this set, using `union` or `or`:\n\n```javascript\n  venn.create([1,2])\n      .union([1,2,3,4])\n      .or([5]) // [1,2,3,4,5]\n```\n\n`union` and `or` are just alias for the same operation.\n\n### intersection\n\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4]) \n      .intersection([1,5]) // [1]\n```\n\nif you prefer you can also use `and` instead of `intersection`\n\n### chaining everything\n\nOr a mix of everything\n\n```javascript\n    venn.create([1,2])\n      .or([1,2,3,4,5])\n      .and([1,5])\n      .or([2]) // [1,5,2]\n```\n\n### If you want to be negative about it, you can check out `not`\n\n```javascript\n    venn.create([1,2,3,4,5])\n      .not([4])\n      .not([5]) // [1,2,3]\n```\n\n### Objects\n\nIf you're crazy you can use venn without a key function. We'll just figure it out how to index the objects.\n\n```javascript\n    venn.create([\n        {name: \"vitor\", age: \"23\"}\n      , {name: \"khov\",  age: \"24\"}\n      , {name: \"pat\",   age: \"30\"}])\n      .intersection([\n        {name: \"vitor\",  age: \"23\"}\n      , {name: \"newguy\", age: \"0\"}\n      , {name: \"pat\",    age: \"50\"}])\n      .union([\n        {name: \"khov\", age : \"10\"}\n      , {name: \"nuno\", age : \"20\"}]) \n\n    // vitor, khov and nuno\n```\n\n### Key function\n\nBut really, write your own key function:\n\n```javascript\n  \n    var myKeyFunction = function(item) {\n      return item.name\n    }\n    \n    venn.create([\n        {name: \"vitor\", age: \"100\"}\n      , {name: \"khov\",  age: \"100\"}], myKeyFunction)\n      .and([\n        {name: \"vitor\", age: \"0\"}\n      , {name: \"khov\",  age: \"0\"}\n      .or([\n        {name: \"khov\",  age : \"-100\"}\n      , {name: \"nuno\",  age : \"20\"}]) \n   \n    // vitor, khov(the first of them), nuno\n```\n\n### Some notes\n\n* The keyFunction only needs to be set once for each venn object (as you would expect)\n* Don't forget if you apply a built-in array function like `filter` or `map` the returning object is not a venn object (as you would once again expect)\n\nLet me know if there are improvements I can do to the library. I might take some time to implement the other less used set operations.\n\n","readmeFilename":"README.md","_id":"venn@0.7.2","dist":{"shasum":"8b64d748e43dac3ee6a8dc194934a54bb44b8141","tarball":"https://registry.npmjs.org/venn/-/venn-0.7.2.tgz","integrity":"sha512-+V+lrBJv0vRH+E0h47WNp9MRL+FE7SZnK1xybeVBgxZ2egv6/Z48D5WbkGUCkCOvdJKNqEWebN6CL0UXewNjaQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCykkhjeLds/gW9bNhNxAsAEHstcN/UfqM8J/sPJJT1YAIhAOFelWQg5bq9pvUepJwmnCPngZuONYbgmzkvGpSeoQK1"}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"maintainers":[{"name":"bitoiu","email":"vmrmonteiro@gmail.com"}],"directories":{}},"1.0.1":{"name":"venn","preferGlobal":false,"version":"1.0.1","author":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"description":"fluent API library for set operations","repository":{"type":"git","url":"https://github.com/bitoiu/venn.git"},"keywords":["venn","set","intersect","union"],"dependencies":{"requirejs":"2.1.x","amdefine":">=0.0.5"},"devDependencies":{"mocha":"1.9.x","chai":"1.5.x","karma":">=0.8.x","lodash":"1.3.x","karma-mocha":"0.1","karma-requirejs":"0.1","grunt-cli":"~0.1.6","grunt-contrib-uglify":"~0.2.2","grunt-release":"~0.6.0","grunt-git":"~0.1.5"},"scripts":{"test":"./node_modules/.bin/karma start --single-run --browsers PhantomJS && mocha"},"license":"MIT","engines":{"node":">=0.6"},"readme":"# venn [![Build Status](https://travis-ci.org/bitoiu/venn.png)](https://travis-ci.org/bitoiu/venn) [![NPM version](https://badge.fury.io/js/venn.png)](http://badge.fury.io/js/venn)\n\n## Motivation\n\nOne of these days I was looking for a library that would allow me to do simple set operations, mostly intersection and unions. There's so many that do it, like underscore, the problem I found was that none of them had a fluent API, so I took a take on doing my own.\n\nCompatible with AMD and node.\n\n### getting started \n\nA venn set is just an array on steroids:\n\n```javascript\n\n  var venn = require(\"venn\")\n  venn.create([1,2])   \n  console.log(venn) // [1,2]\n\n```\n\n### union\n\nYou can now chain operations to this set, using `union` or `or`:\n\n```javascript\n  venn.create([1,2])\n      .union([1,2,3,4])\n      .or([5]) // [1,2,3,4,5]\n```\n\n`union` and `or` are just alias for the same operation.\n\n### intersection\n\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4]) \n      .intersection([1,5]) // [1]\n```\n\nif you prefer you can also use `and` instead of `intersection`\n\n### chaining everything\n\nOr a mix of everything\n\n```javascript\n    venn.create([1,2])\n      .or([1,2,3,4,5])\n      .and([1,5])\n      .or([2]) // [1,5,2]\n```\n\n### If you want to be negative about it, you can check out `not`\n\n```javascript\n    venn.create([1,2,3,4,5])\n      .not([4])\n      .not([5]) // [1,2,3]\n```\n\n### Objects\n\nIf you're crazy you can use venn without a key function. We'll just figure it out how to index the objects.\n\n```javascript\n    venn.create([\n        {name: \"vitor\", age: \"23\"}\n      , {name: \"khov\",  age: \"24\"}\n      , {name: \"pat\",   age: \"30\"}])\n      .intersection([\n        {name: \"vitor\",  age: \"23\"}\n      , {name: \"newguy\", age: \"0\"}\n      , {name: \"pat\",    age: \"50\"}])\n      .union([\n        {name: \"khov\", age : \"10\"}\n      , {name: \"nuno\", age : \"20\"}]) \n\n    // vitor, khov and nuno\n```\n\n### Key function\n\nBut really, write your own key function:\n\n```javascript\n  \n    var myKeyFunction = function(item) {\n      return item.name\n    }\n    \n    venn.create([\n        {name: \"vitor\", age: \"100\"}\n      , {name: \"khov\",  age: \"100\"}], myKeyFunction)\n      .and([\n        {name: \"vitor\", age: \"0\"}\n      , {name: \"khov\",  age: \"0\"}\n      .or([\n        {name: \"khov\",  age : \"-100\"}\n      , {name: \"nuno\",  age : \"20\"}]) \n   \n    // vitor, khov(the first of them), nuno\n```\n\n### Some notes\n\n* The keyFunction only needs to be set once for each venn object (as you would expect)\n* Don't forget if you apply a built-in array function like `filter` or `map` the returning object is not a venn object (as you would once again expect)\n\nLet me know if there are improvements I can do to the library. I might take some time to implement the other less used set operations.\n\n","readmeFilename":"README.md","_id":"venn@1.0.1","dist":{"shasum":"6038436699da02087eefffd73612def25f3dec14","tarball":"https://registry.npmjs.org/venn/-/venn-1.0.1.tgz","integrity":"sha512-lP+GvUBBeX1lCnAAys2TJzjdu9WZDz9xWGzITNtD/4GR2aMfNrYfEEgzOmw16yJzlKbZTpl9bYpUlGV2XEETvQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGVwVplfQh4cqegWqkWP2As4kBASzqeX6TFU6Jl88IpnAiBZPbM7UxtiIhQf91CdFf++bm/t77pv8k8xjY/h9MDPBQ=="}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"maintainers":[{"name":"bitoiu","email":"vmrmonteiro@gmail.com"}],"directories":{}},"1.0.2":{"name":"venn","preferGlobal":false,"version":"1.0.2","author":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"description":"fluent API library for set operations","repository":{"type":"git","url":"https://github.com/bitoiu/venn.git"},"keywords":["venn","set","intersect","union"],"dependencies":{"requirejs":"2.1.x","amdefine":">=0.0.5"},"devDependencies":{"mocha":"1.9.x","chai":"1.5.x","karma":">=0.8.x","lodash":"1.3.x","karma-mocha":"0.1","karma-requirejs":"0.1","grunt-cli":"~0.1.6","grunt-contrib-uglify":"~0.2.2","grunt-release":"~0.6.0","grunt-git":"~0.1.5"},"scripts":{"test":"./node_modules/.bin/karma start --single-run --browsers PhantomJS && mocha"},"license":"MIT","engines":{"node":">=0.6"},"_id":"venn@1.0.2","dist":{"shasum":"088e559bf485742b2e2050283ae9a50714338508","tarball":"https://registry.npmjs.org/venn/-/venn-1.0.2.tgz","integrity":"sha512-KcG+vAry/SrnK7hpPHRwHt5BtksjOejr8HfRAHeGuAfQt6QK61JcNTv6FBDW4SAVcuYsHaL34HT4QvK0BHXZpg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICQ1RVCaCdVz0KSD7yDvRnogewX85IrXd9+usKzJDfcTAiEAjhiXwC8X0z3sFT9IcyhXVUtylqaq0oXsYzJA1SDAVZ0="}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"maintainers":[{"name":"bitoiu","email":"vmrmonteiro@gmail.com"}],"directories":{}},"1.0.6":{"name":"venn","preferGlobal":false,"version":"1.0.6","author":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"description":"fluent API library for set operations","repository":{"type":"git","url":"git+https://github.com/bitoiu/venn.git"},"keywords":["venn","set","intersect","union"],"dependencies":{"amdefine":">=0.0.5","npm":"^6.4.1","requirejs":"2.1.x"},"devDependencies":{"chai":"1.5.x","grunt-cli":"~0.1.6","grunt-contrib-uglify":"~0.2.2","grunt-git":"~0.1.5","grunt-release":"~0.6.0","jshint":"^2.9.6","lodash":"1.3.x","mocha":"^1.9.0"},"scripts":{"test":"./node_modules/mocha/bin/mocha","quality":"./node_modules/jshint/bin/jshint venn.js"},"license":"MIT","engines":{"node":">=0.6"},"gitHead":"a60e6b52dc45b640a361d68b4da47a4e7e072baf","bugs":{"url":"https://github.com/bitoiu/venn/issues"},"homepage":"https://github.com/bitoiu/venn#readme","_id":"venn@1.0.6","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"dist":{"integrity":"sha512-6MlJJ413QIF0YzPyH2kbjk6EiyMjzbErFBU9kZtR/7EgGFmyISEXa2Ejt9q24jNJFpy9TmpMXSLr+5OZbjYczQ==","shasum":"2996f34712ce03c7063217c5ce347858ef232ad3","tarball":"https://registry.npmjs.org/venn/-/venn-1.0.6.tgz","fileCount":22,"unpackedSize":24700,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbuzn7CRA9TVsSAnZWagAA/0YQAIzku62mqBeZHD/qNgth\nBomfbNqWGaq0XaSpqOedPSP+SyQRnY9JuDiOg9gpbuiOuLXM+Qqe2mTkPGoR\nDDfInlp79PZmSi6e8Z4qXFHaiS/EtLSJjH1/2AA65O840rG1Y4vkuCL2KL1G\nvbt3ig/67pKQSGwWtWLFI+XanH068P8oB20PmBCv2CsUV/N9UKjrrYSbNwmO\nGwUiUfibrOirYmLdSgWLrZ6YMoljleUewZYnZ47g3xLNZdNbbLFOfAGy8yCe\nONf3Ag/r1B9lEz2YfG46O6MKoVjDPfZi9DRTwNk/YWhrbG4/8tM4Mu0sNqJY\nLkrJf26XkyB3U9xe3+kkAPG0S/tLDqsKps8KNssk0seMP2FPz4ILo5Ju8P/T\n1alhS92GCWvJsBDVj3TVCl7JAd38Ru0wgdgkVw7m1FvzGmMAmK/8ZU9klwv9\ngP8mxTukdJmz+kEIsK1XTxla2o3QFJHPwFYlQHxFgS6BdiHNA6lm5Cp57lhU\nR6qF6mbE4Vf9WujdSlk++M8AOTLtdzZdK+EYQqtOEJWVYnUp3ose9BU3vdyH\nZLgLQHDa5ZobgeQ37fOhkFjYuF52Y5GPlbLDt1el4Jenu3/HdQITDQIP/ClM\nAeKJE8QpY9hBmJomHvp3YImKJNj3DWg3sdFFDCijCCVXf+v+TCDboHEE1o0y\nCUGT\r\n=h6bc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGl64PFqFIWIVzwwODsc4lyX3pq6cVKvLqDLNYdhGzGVAiEA4Q+CGCtvkEVAmh4a8XVQWtVlPvKbu7OE99zEkOhhocc="}]},"maintainers":[{"name":"bitoiu","email":"vmrmonteiro@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/venn_1.0.6_1538996730954_0.23480014981941078"},"_hasShrinkwrap":false},"1.0.3":{"name":"venn","preferGlobal":false,"version":"1.0.3","author":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"description":"fluent API library for set operations","repository":{"type":"git","url":"git+https://github.com/bitoiu/venn.git"},"keywords":["venn","set","intersect","union"],"dependencies":{"amdefine":">=0.0.5","npm":"^6.4.1","requirejs":"2.1.x"},"devDependencies":{"chai":"1.5.x","grunt":"^1.0.3","grunt-cli":"^1.3.2","grunt-contrib-uglify":"^4.0.0","grunt-git":"~0.1.5","grunt-release":"^0.14.0","karma":">=0.8.x","karma-mocha":"0.1","karma-phantomjs-launcher":"^1.0.4","karma-requirejs":"0.1","lodash":"^4.17.11","mocha":"^6.0.0"},"scripts":{"test":"karma start --single-run --browsers PhantomJS && mocha"},"license":"MIT","engines":{"node":">=0.6"},"gitHead":"690854f199c914099a73e72e8e7e1312c7c546f3","bugs":{"url":"https://github.com/bitoiu/venn/issues"},"homepage":"https://github.com/bitoiu/venn#readme","_id":"venn@1.0.3","_npmVersion":"6.4.1","_nodeVersion":"11.3.0","_npmUser":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"dist":{"integrity":"sha512-NQT0wiBgPlJMZJ/ib5ohMh/bu/D2pkblvt1gvenZhSQEizqfZEOxv8RxGeqHLbSBQ8FYGUI+i0ywCxwuZfb9zw==","shasum":"0ed60ea5e18aea1c40febdafd91b4b3df98e8b78","tarball":"https://registry.npmjs.org/venn/-/venn-1.0.3.tgz","fileCount":12,"unpackedSize":20852,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcbbGQCRA9TVsSAnZWagAAY24P/i5YsARhA3LqMEyaGBjp\n/DiEitdtsBGoWsI1tYF8JXmfM6hhI6VvwplmzJkAe2D3MuF9+LweQUesuObk\nWmL7Rixbcrs2Y+HW4wYadsEAq5TE4CfhDp5yC7F0ZJ9akYEaz8MvoIvsVECi\nlSYSshk8Gy/+u+YPQUqFeeWq9HPOaFdk3Bdx0jBiZtBkmPW0+kLHzJQG07/j\n57CyZkudb1ucHtvJC2cHc1BRLLfjeZXCuzIyuY7owgtYdEQS1rKDXU2Lb+Nv\nDAUfjt+bsygtlkHSGgklTcaDN6awpqFg2TUzljzoEfiJvkmX1GhuZAaCJvW6\nwdpRgAhWrwVsnJ+BMkB483F+E1B7ImlJykWXDVM19RtpOUJ0U/yTFb97LtzQ\n8wJFt1xHbsGvqPw2lb854wF/9jA+n2b/56dQKmDwl+qW4OANDgYNaSciMVW+\nCNBl6+p3g107xPQZuZp0xLymbR8im9vpesdHtswv5JwGENt8BEFXHa7baPmG\nzOReCzFL3x0YByhXyVrDRD8ZQcDcLyXdqniCdC7khGPcPhvFCJCjXwoj4xCX\nVfDxUmFjbXmClZzRXOdDxMXVTcrK9U8VKbTUzzhkbBpCJDR6N04wQq3u56LE\nQH+J4aB54ljOojmSqw9jFiVNJzKVUz/psSq8uUEhT/18XFESowpyuG/uLbVU\nYPDQ\r\n=+LW2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1/39FG1dudGt6IGsEl7dv88jN0WcgkprnMgHNL02nUAIgAhKY9xDZ7Ulz4NaO0fuBK72bHBMhlo7GJ1lToa+xSMs="}]},"maintainers":[{"name":"bitoiu","email":"vmrmonteiro@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/venn_1.0.3_1550692751479_0.7432897872658"},"_hasShrinkwrap":false},"1.1.1":{"name":"venn","preferGlobal":false,"version":"1.1.1","author":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"description":"fluent API library for set operations","repository":{"type":"git","url":"git+https://github.com/bitoiu/venn.git"},"keywords":["venn","set","intersect","union"],"dependencies":{"amdefine":">=0.0.5","npm":"^6.4.1","requirejs":"2.1.x"},"devDependencies":{"chai":"1.5.x","grunt":"^1.0.3","grunt-cli":"^1.3.2","grunt-contrib-uglify":"^4.0.0","grunt-git":"~0.1.5","grunt-release":"^0.14.0","karma":">=0.8.x","karma-mocha":"0.1","karma-phantomjs-launcher":"^1.0.4","karma-requirejs":"0.1","lodash":"^4.17.11","mocha":"^6.0.0"},"scripts":{"test":"karma start --single-run --browsers PhantomJS && mocha","grunt-build":"grunt","grunt-release":"grunt release"},"license":"MIT","engines":{"node":">=0.6"},"gitHead":"473768f7b2fd8f73d20bd811329d2e2bee4a0d6d","bugs":{"url":"https://github.com/bitoiu/venn/issues"},"homepage":"https://github.com/bitoiu/venn#readme","_id":"venn@1.1.1","_npmVersion":"6.4.1","_nodeVersion":"11.3.0","_npmUser":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"dist":{"integrity":"sha512-qIBG6KP2Gl/4QcnVdFsKNlo4xBwoFUvRDuwSkFqvPqPrinsNq2UAlmoGo+6DBtFreM8eJ/iOYv8Uid3L8xlc7w==","shasum":"f370ffa3c14e766a23656476cdf72df86ce0a8d2","tarball":"https://registry.npmjs.org/venn/-/venn-1.1.1.tgz","fileCount":12,"unpackedSize":21084,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcbbccCRA9TVsSAnZWagAAhksP/j1Jv9M494Nh5WpRD8Zp\nfusIu0xym9RnQh2jgw39Jvzx/v3Coh4Ow0XIgCf0KLQvB60BU9rcsERqlJq6\nI4SEG/PpCNs5FbcJks0XB4nep2zI9kxNLKlSSwQl7fEvzEjyYoBOwH0q2vvr\nHvUWaWJO5BykEXT7rOyQ4NfsfA43u3SbemFNdh0VTZSnh2fPoKCu7VFoWEIv\nrgHkRCx1+YUjG0qRls3WFIGyZ+H9oqmQThhJjyOgpWjr6rLIgJWJDSLn6thn\ndE8SpjA3dmO+Ik3XVWp/Nfg96bNA6zmh/Y2DsNedkBms+/vWqE+Uhg7i7I0+\npUxzTMOH7WoY85MnikQri6wfDQPLiQmTFHrASMCG3N0K9UCOjOkOU61qZoEe\nOGA9fuloBtlSY0jFqM5vy4Q5C4gWZBGQI13Z9zDtKAjCiMyY5CaY7Og7ypjB\n6BjrhI8sxIbXsIfaThQ1nxlAc8B4anw4AbAfr7dgk72Wwtl9+74HIqZgoCj9\nMPkGzeZDZkWlzVqHS3Siq69/pnP6j8I3ev46jfGNqvQ2okpQTAkQFvpwHiRi\nG4ja/eHsZdmjye31IuZsKqy3QDwhuqGy+Ntpw+5o/yfd3/5vCasTxy0QnI1B\n/IIprrfuuZ3HQ90LQ35Bhkk1zmbsyWXyx/pegylYeT6L9I/7mcDK4+mlwCHA\n6YOB\r\n=dtrV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAXcb/ftf81GHiAn+caH1id8tiUK2AlwKzqOYKEO4J8uAiEA0u3ABbDeu5To/vNDV9axHO17XeprwKE+bbC+f0VL9m0="}]},"maintainers":[{"name":"bitoiu","email":"vmrmonteiro@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/venn_1.1.1_1550694172427_0.8158567724054118"},"_hasShrinkwrap":false},"1.1.2":{"name":"venn","preferGlobal":false,"version":"1.1.2","author":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"description":"fluent API library for set operations","repository":{"type":"git","url":"git+https://github.com/bitoiu/venn.git"},"main":"venn.min.js","keywords":["venn","set","intersect","union"],"dependencies":{"amdefine":">=0.0.5","npm":"^6.4.1","requirejs":"2.1.x"},"devDependencies":{"chai":"1.5.x","grunt":"^1.0.3","grunt-cli":"^1.3.2","grunt-contrib-uglify":"^4.0.0","grunt-git":"~0.1.5","grunt-release":"^0.14.0","karma":">=0.8.x","karma-mocha":"0.1","karma-phantomjs-launcher":"^1.0.4","karma-requirejs":"0.1","lodash":"^4.17.11","mocha":"^6.0.0"},"scripts":{"test":"karma start --single-run --browsers PhantomJS && mocha","grunt-build":"grunt","grunt-release":"grunt release"},"license":"MIT","engines":{"node":">=0.6"},"gitHead":"599487181d9ad54c2e7a48e68294dc4835b483d8","bugs":{"url":"https://github.com/bitoiu/venn/issues"},"homepage":"https://github.com/bitoiu/venn#readme","_id":"venn@1.1.2","_npmVersion":"6.4.1","_nodeVersion":"11.3.0","_npmUser":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"dist":{"integrity":"sha512-CR3AbX/49gxMuMUyjlE2Q4XdYulSZfX8JoOI1g0od41ssKQfZPofmnHuHzSmuhBlUsi7qqEpNK5x6TXRSSlE7w==","shasum":"2282b42e8f80c667810e2f62e89495ed43d76a43","tarball":"https://registry.npmjs.org/venn/-/venn-1.1.2.tgz","fileCount":12,"unpackedSize":21109,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcbqZ0CRA9TVsSAnZWagAAaQsP/3iOEjptyYXkLDrAFgTL\nhD0FM3XkP1TIkvWBJGDtcSAUWdqa2iBEqZgce11zNNifKgIf0GYbtjGxHDZs\n45Tmx5AOpafUIjP2QodB3AXCvhtpQMoPFV9zCItJhitU9Mxpqh8G7BctRB3d\nT2c65Mjrbw2oT83SfeoQDBvXJu5g6vzWRF1kk4sP9/fe7tNKSUNe6vLyg+F+\nZpXNDiE4eSKo3r3LjhvvE8wOg4v0uD8QQP8MlBnR/PaRP4iCZR53m4uw1R2R\nmVABzvMDHLAsAlWtn38YpV+xhBpCgpFtI2acmgSQ92v9sXvYA3SEv6cfwBS4\nMtM3ruFZZYW8de0weII20n4A83vPJdVuLI2UM17zpFyn4t9PtcnySL2QZ+mI\nXXiSCSzhgxH4h2amfZKwUqH+rmKB5vDGiuj+KYLAjKqWzzYcs20IagILY90G\nqLWvSEUqrFEv5yvySuAaCzf03phCx+GP8TcGGNrgCJynputm+RXHjoUq1wmG\nz6/JFPqqfTpMcDP/SOoF+K1ZPXalDBIj5SKSf1z3jjLHA8XGgfuXzq1ZMEuq\nWuD08sdpe/FAM8dERnacmBZQ9W2wy4nHzdtz9z6/P7fim1kf5QxLe5BIMauU\nPOtV6SOclJK1Z4dmzOm2Ax1KRz72w3SLtjvJxKatI7W56juTL/4n3jC4R1Ht\nU2cq\r\n=9u4e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA99lctcdBpzdCmIcQj20shuolaWDCf+I7LG8mC3OT9rAiEAu6bXDXYwkivZPYZ6ZHMklJQVRjI8F2ipCc0Qie8jKKM="}]},"maintainers":[{"name":"bitoiu","email":"vmrmonteiro@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/venn_1.1.2_1550755443614_0.3522645213909108"},"_hasShrinkwrap":false}},"readme":"# venn \n \n[![NPM version](https://badge.fury.io/js/venn.png)](http://badge.fury.io/js/venn)\n\n## Motivation\n\nOne of these days I was looking for a library that would allow me to do simple set operations, mostly intersection and union. There's a lot of libraries that do this but I didn't find one with a fluent API. This a stab at one:\n\nCompatible with AMD and node.\n\n### getting started \n\nA venn set is just an array on steroids:\n\n```javascript\n\n  var venn = require(\"venn\")\n  venn.create([1,2])   \n  console.log(venn) // [1,2]\n\n```\n\n### union\n\nYou can now chain operations to this set, using `union` or `or`:\n\n```javascript\n  venn.create([1,2])\n      .union([1,2,3,4])\n      .or([5]) // [1,2,3,4,5]\n```\n\n`union` and `or` are just alias for the same operation.\n\n### intersection\n\n\n```javascript\n    venn.create([1,2])\n      .union([1,2,3,4]) \n      .intersection([1,5]) // [1]\n```\n\nif you prefer you can also use `and` instead of `intersection`\n\n\n### not\n\nIf you want to be negative about it, you can check out `not`\n\n```javascript\n    venn.create([1,2,3,4,5])\n      .not([4])\n      .not([5]) // [1,2,3]\n```\n\n### chaining everything\n\nOr a mix of everything\n\n```javascript\n    venn.create([1,2])\n      .or([1,2,3,4,5])\n      .and([1,5])\n      .or([2]) // [1,5,2]\n```\n\n### Objects\n\nIf you're crazy you can use venn without a key function. We'll just figure it out how to index the objects.\n\n```javascript\n    venn.create([\n        {name: \"vitor\", age: \"23\"}\n      , {name: \"khov\",  age: \"24\"}\n      , {name: \"pat\",   age: \"30\"}])\n      .intersection([\n        {name: \"vitor\",  age: \"23\"}\n      , {name: \"newguy\", age: \"0\"}\n      , {name: \"pat\",    age: \"50\"}])\n      .union([\n        {name: \"khov\", age : \"10\"}\n      , {name: \"nuno\", age : \"20\"}]) \n\n    // vitor, khov and nuno\n```\n\n### Key function\n\nBut really, write your own key function:\n\n```javascript\n  \n    var myKeyFunction = function(item) {\n      return item.name\n    }\n    \n    venn.create([\n        {name: \"vitor\", age: \"100\"}\n      , {name: \"khov\",  age: \"100\"}], myKeyFunction)\n      .and([\n        {name: \"vitor\", age: \"0\"}\n      , {name: \"khov\",  age: \"0\"}\n      .or([\n        {name: \"khov\",  age : \"-100\"}\n      , {name: \"nuno\",  age : \"20\"}]) \n   \n    // vitor, khov(the first of them), nuno\n```\n\n### Some notes\n\n* The keyFunction only needs to be set once for each venn object (as you would expect)\n* Don't forget if you apply a built-in array function like `filter` or `map` the returning object is not a venn object (as you would once again expect)\n\nLet me know if there are improvements I can do to the library. I might take some time to implement the other less used set operations.\n\n","maintainers":[{"name":"bitoiu","email":"vmrmonteiro@gmail.com"}],"time":{"modified":"2022-06-28T10:00:56.167Z","created":"2013-06-20T20:52:21.284Z","0.1.0":"2013-06-20T20:52:24.852Z","0.1.1":"2013-06-21T18:15:48.482Z","0.3.0":"2013-07-10T21:23:30.323Z","0.4.0":"2013-10-08T18:50:19.206Z","0.6.0":"2013-10-12T23:52:12.978Z","0.6.1":"2013-10-13T21:14:33.677Z","0.6.2":"2013-10-13T21:15:23.828Z","0.6.4":"2013-10-13T21:33:57.346Z","0.6.5":"2013-10-13T21:36:59.418Z","0.6.6":"2013-10-13T21:44:35.538Z","0.6.7":"2013-10-13T22:09:50.013Z","0.6.8":"2013-10-14T20:03:07.177Z","0.6.9":"2013-10-14T20:07:34.727Z","0.6.10":"2013-10-14T20:08:11.659Z","0.6.11":"2013-10-14T20:26:35.795Z","0.7.1":"2013-10-22T21:21:42.644Z","0.7.2":"2013-10-24T20:17:44.166Z","1.0.1":"2013-10-26T16:32:42.667Z","1.0.2":"2013-11-12T20:50:38.817Z","1.0.5":"2018-10-08T10:58:56.390Z","1.0.6":"2018-10-08T11:05:31.091Z","1.0.3":"2019-02-20T19:59:11.622Z","1.1.1":"2019-02-20T20:22:52.549Z","1.1.2":"2019-02-21T13:24:03.750Z"},"author":{"name":"bitoiu","email":"vmrmonteiro@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/bitoiu/venn.git"},"keywords":["venn","set","intersect","union"],"license":"MIT","readmeFilename":"README.md","homepage":"https://github.com/bitoiu/venn#readme","bugs":{"url":"https://github.com/bitoiu/venn/issues"}}