{"_id":"@actualwave/map-of-sets","_rev":"4-4af9e72b7e99311a31a98f4cbd115c3b","name":"@actualwave/map-of-sets","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"@actualwave/map-of-sets","version":"0.0.1","keywords":["js","javascript"],"author":{"url":"http://actualwave.com/","name":"Oleg Galaburda","email":"burdiuz@gmail.com"},"license":"MIT","_id":"@actualwave/map-of-sets@0.0.1","maintainers":[{"name":"actualwave","email":"burdiuz@gmail.com"}],"homepage":"https://github.com/burdiuz/js-map-of-sets","bugs":{"url":"https://github.com/burdiuz/js-map-of-sets/issues","email":"burdiuz@gmail.com"},"dist":{"shasum":"18a98690f3116973bb09b95979bd89ea207248b8","tarball":"https://registry.npmjs.org/@actualwave/map-of-sets/-/map-of-sets-0.0.1.tgz","fileCount":9,"integrity":"sha512-8lAoJwP2g6UEhGTYdFyUK8cr8b3KWdo6b6a0TDQY+5OMGkVM4/afidLUg6TFInfv6LdonODaQVMQN2PgM9DkXw==","signatures":[{"sig":"MEUCIQDX7uE/cabVkSI2tmfbRYYy4/dRFHuHph+uESGRWYrctAIgdoCdRzS0dscFcfRlrUEoZusNT0fr9q6La48U7CgUJAk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26664,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbsyJYCRA9TVsSAnZWagAAUDgP/1uJnVng2YZFMBMfS+ZJ\nQdjt9JdmhbDYjuB/4wYDufYGGMGu5ugPMBB+SWxNJR08YM3p7fBXmPzAXUQ2\nY9Xdtlm0bEYscjtHmwYyBMzqGXGY0Am5ntymcs8aRC1YCBjVwYxyxBD8Bmys\nMWfzVQHGfFEo4cNWaCc8ZuQTrErpEXI93t+APdvi0jKAD4HL6j5phRKIlKcf\nvJo0DOZkjhsKpNLa9uQVOLZHk3U5Gn9w869RazvjGE8U39K5ff/bP+9hQt0m\nHg+pAtV6vIjqC5vfw9SOhDdf2Y8LP+KKt41iLHKlkUH06jkyAoBFfPudnSbI\nraW9ZxbtsHwSOUW2j4QJVgfDj2KDOfozwYKHP4QVk2UVuzWlYzGEG9yDWRMj\nwp1LzuoLu1JncWfhFxnjaXNfW5trNY6vBofVNNk82AVpTij8UeREKYpXy1b1\nMmYKNWdxfQ4xB0qHienqRT7LiWxo3vsYMDoJd4O4+fxhsVIk7V5cw53ZlSg3\nYbNYttTEV2ANrpWf4zjDvR1bQkXne4rSBdmff3zPkRb9HyA4g8Vv0LBGGffg\nBHX8PxSm0ioTys9PDizGq6ZRtBRNnEt9yPoVQ4jOeThkc7NdKVMTjxMmR36v\nyR0LH5nwtPFKWAf/Zym8ViqU7Qr0YUI+JGfW7jvh+ul6Fles4YnFuYj4NvJm\npmCI\r\n=sVmn\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"collectCoverage":true,"coverageDirectory":"coverage","coverageReporters":["json","lcov"],"collectCoverageFrom":["source/**/*.js","!**/node_modules/**","!**/vendor/**"],"modulePathIgnorePatterns":["\\/\\."]},"main":"index.js","babel":{"env":{"test":{"plugins":["babel-plugin-transform-es2015-modules-commonjs","babel-plugin-transform-flow-strip-types","babel-plugin-transform-class-properties",["babel-plugin-transform-object-rest-spread",{"useBuiltIns":true}]],"presets":["jest"]}}},"gitHead":"b542bb4a85cd7764208b9d728a893c6d374f0a47","scripts":{"flow":"flow","lint":"eslint \"source/**/*.js\"","test":"jest --colors","build":"rollup --config","start":"npm run build","precommit":"npm run build && npm run test && npm run lint-staged","test:watch":"jest --colors --watch","build:watch":"rollup --config --watch \"./source\"","lint-staged":"lint-staged"},"_npmUser":{"name":"actualwave","email":"burdiuz@gmail.com"},"repository":{"url":"git+https://github.com/burdiuz/js-map-of-sets.git","type":"git"},"_npmVersion":"5.6.0","description":"Storage based on Map that may hold more than one unique value per key using Set's.","directories":{},"lint-staged":{"source/**/*.js":["prettier --write","eslint --fix","git add"]},"_nodeVersion":"8.11.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^23.6.0","husky":"^1.0.1","eslint":"^5.6.1","chokidar":"^2.0.4","flow-bin":"^0.81.0","prettier":"^1.14.3","@babel/core":"^7.1.2","lint-staged":"^7.3.0","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","babel-preset-jest":"^23.2.0","rollup-plugin-json":"^3.1.0","eslint-plugin-react":"^7.11.1","rollup-plugin-babel":"^4.0.3","rollup-plugin-serve":"^0.6.0","eslint-config-airbnb":"^17.1.0","eslint-plugin-import":"^2.14.0","rollup-plugin-terser":"^3.0.0","babel-plugin-istanbul":"^5.0.1","eslint-plugin-jsx-a11y":"^6.1.1","rollup-plugin-commonjs":"^9.1.8","rollup-plugin-livereload":"^0.6.0","rollup-plugin-node-resolve":"^3.4.0","@babel/plugin-external-helpers":"^7.0.0","@babel/plugin-syntax-object-rest-spread":"^7.0.0","babel-plugin-transform-class-properties":"^6.24.1","@babel/plugin-transform-flow-strip-types":"^7.0.0","babel-plugin-transform-es2015-modules-commonjs":"^6.26.2"},"_npmOperationalInternal":{"tmp":"tmp/map-of-sets_0.0.1_1538466391981_0.8533323071318382","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"@actualwave/map-of-sets","version":"0.0.2","keywords":["js","javascript"],"author":{"url":"http://actualwave.com/","name":"Oleg Galaburda","email":"burdiuz@gmail.com"},"license":"MIT","_id":"@actualwave/map-of-sets@0.0.2","maintainers":[{"name":"actualwave","email":"burdiuz@gmail.com"}],"homepage":"https://github.com/burdiuz/js-map-of-sets","bugs":{"url":"https://github.com/burdiuz/js-map-of-sets/issues","email":"burdiuz@gmail.com"},"dist":{"shasum":"7cf1c7381d655ed9d6dc5650a9b9cb020c55bb50","tarball":"https://registry.npmjs.org/@actualwave/map-of-sets/-/map-of-sets-0.0.2.tgz","fileCount":9,"integrity":"sha512-p+Tkny2mlt7mtllUEdirgbSyH6rZ0HdVoPsz2l2xm/AOikVDFs7CUk5inctMwNWEkExPKEt7/YVZtWwV74Kj5w==","signatures":[{"sig":"MEQCICqfoLj6bH8TUB9A+iZ9nPXtLt7vdVg3Aitt1Up1jzJNAiAriiW3hr07q6YTArI0FgzZGIMW1o8KUAlAbI8nAtptNQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":27772,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb6K/eCRA9TVsSAnZWagAAodEP/2TNvqFdoewsN3gRmy7b\n558tMLf+dtoCv/mqbNytFwxGjoFdF/Akfdon0s2U1qadtLyHSN38fqp1ilYX\nCBrY3LHErFYhXktcPzu/Nl9A/NMKbtQyctZM1AHixJJksy5upd/gZRmMZAcA\nx7tSk0d3wMfJZunZnvzcuGuxPB2eU1gTxEQFARtv2JvGhxuAyi02Vz/8fm7U\n/tHOsoo3Fxq4gvso1WE4x5qGXVHryFET+rOqVf5QCnOg4oosbHRDEFws1FlP\nEZ7xwcaYcWENlE/pQS6wY9zmjoQw9fRVuxjhj0ktZpwHKc6v60AZ5gxZyD/2\n+1S3t8FlFsxYlue10K4ARxSoYU/X0Ro/MncJBN/PyfNou9FM/u5T0KqWOrv/\nGRNUPofConbsqpe+dM/THDQmlrgaHUCidU3imMgX/DVBrfxXXzuxI97ZxZzA\nyuvZW2RSGbTu2n0G0CV25CpnxVbCovy9ryvzZFqP3zSPdcVUDvgu7piXRfsf\nJBCLZHb+cB+hBRaemovdT/bmj0zi337QzGT5JCvmSNg+nBQoWPlZMmB6Ww+u\nPWbZSwZWZnZAZ6uVYTTlSPP4DIdfUf/2QMRwgJnUTEF3yUxQ52VkC8TD7F4g\n1lHrrH8bssv+xGdE9u3+B1eHKE9DlVKeZp3Dc/vAm+U5PwJz/pyb9YQE7lYH\nQEtD\r\n=7aM4\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"collectCoverage":true,"coverageDirectory":"coverage","coverageReporters":["json","lcov"],"collectCoverageFrom":["source/**/*.js","!**/node_modules/**","!**/vendor/**"],"modulePathIgnorePatterns":["\\/\\."]},"main":"index.js","babel":{"env":{"test":{"plugins":["babel-plugin-transform-es2015-modules-commonjs","babel-plugin-transform-flow-strip-types","babel-plugin-transform-class-properties",["babel-plugin-transform-object-rest-spread",{"useBuiltIns":true}]],"presets":["jest"]}}},"gitHead":"f6c4c04623fc2ebc53add73dd91bf87b7d281435","scripts":{"flow":"flow","lint":"eslint \"source/**/*.js\"","test":"jest --colors","build":"rollup --config","start":"npm run build","precommit":"npm run build && npm run test && npm run lint-staged","test:watch":"jest --colors --watch","build:watch":"rollup --config --watch \"./source\"","lint-staged":"lint-staged"},"_npmUser":{"name":"actualwave","email":"burdiuz@gmail.com"},"repository":{"url":"git+https://github.com/burdiuz/js-map-of-sets.git","type":"git"},"_npmVersion":"6.4.1","description":"Storage based on Map that may hold more than one unique value per key using Set's.","directories":{},"lint-staged":{"source/**/*.js":["prettier --write","eslint --fix","git add"]},"_nodeVersion":"8.12.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^23.6.0","husky":"^1.1.3","eslint":"^5.9.0","chokidar":"^2.0.4","flow-bin":"^0.86.0","prettier":"^1.15.2","@babel/core":"^7.1.5","lint-staged":"^8.0.4","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","babel-preset-jest":"^23.2.0","rollup-plugin-json":"^3.1.0","eslint-plugin-react":"^7.11.1","rollup-plugin-babel":"^4.0.3","rollup-plugin-serve":"^0.6.0","eslint-config-airbnb":"^17.1.0","eslint-plugin-import":"^2.14.0","rollup-plugin-terser":"^3.0.0","babel-plugin-istanbul":"^5.1.0","eslint-plugin-jsx-a11y":"^6.1.2","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-livereload":"^0.6.0","rollup-plugin-node-resolve":"^3.4.0","@babel/plugin-external-helpers":"^7.0.0","@babel/plugin-syntax-object-rest-spread":"^7.0.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-flow-strip-types":"^6.22.0","@babel/plugin-transform-flow-strip-types":"^7.0.0","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-es2015-modules-commonjs":"^6.26.2"},"_npmOperationalInternal":{"tmp":"tmp/map-of-sets_0.0.2_1541976029981_0.32408890778142774","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"@actualwave/map-of-sets","description":"Storage based on Map that may hold more than one unique value per key using Set's.","version":"0.0.3","main":"index.js","types":"index.d.ts","keywords":["js","javascript","typescript"],"homepage":"https://github.com/burdiuz/js-map-of-sets","bugs":{"url":"https://github.com/burdiuz/js-map-of-sets/issues","email":"burdiuz@gmail.com"},"license":"MIT","author":{"name":"Oleg Galaburda","email":"burdiuz@gmail.com","url":"http://actualwave.com/"},"repository":{"type":"git","url":"git+https://github.com/burdiuz/js-map-of-sets.git"},"_id":"@actualwave/map-of-sets@0.0.3","gitHead":"01eb5abddd5b76d15487c06cfd6c1bba152f9068","_nodeVersion":"24.6.0","_npmVersion":"11.5.1","dist":{"integrity":"sha512-Ux+STyhOKzuBmB34T8DIFMCkIlkUfio4hk295WgFWJXiOBtqghSAN4icxmMPbXm5X8PV/KvoJmTz2tQffN2oVQ==","shasum":"cdf8b2c0d053e80b1d88bac6080213baa78dc105","tarball":"https://registry.npmjs.org/@actualwave/map-of-sets/-/map-of-sets-0.0.3.tgz","fileCount":11,"unpackedSize":25140,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDDBDRhkyupAx/uEFjZ12dH+TOm/D9aj0xSkRSSgYO0SAiEA50Yq3GRoj9p6+H4pJm3xvp0VwPYFuNTfJp/f7MjqEhg="}]},"_npmUser":{"name":"actualwave","email":"burdiuz@gmail.com"},"directories":{},"maintainers":[{"name":"actualwave","email":"burdiuz@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/map-of-sets_0.0.3_1777746556526_0.7365789686574025"},"_hasShrinkwrap":false}},"time":{"created":"2018-10-02T07:46:31.815Z","modified":"2026-05-02T18:29:16.791Z","0.0.1":"2018-10-02T07:46:32.187Z","0.0.2":"2018-11-11T22:40:30.119Z","0.0.3":"2026-05-02T18:29:16.671Z"},"bugs":{"url":"https://github.com/burdiuz/js-map-of-sets/issues","email":"burdiuz@gmail.com"},"author":{"name":"Oleg Galaburda","email":"burdiuz@gmail.com","url":"http://actualwave.com/"},"license":"MIT","homepage":"https://github.com/burdiuz/js-map-of-sets","keywords":["js","javascript","typescript"],"repository":{"type":"git","url":"git+https://github.com/burdiuz/js-map-of-sets.git"},"description":"Storage based on Map that may hold more than one unique value per key using Set's.","maintainers":[{"name":"actualwave","email":"burdiuz@gmail.com"}],"readme":"# Map of Sets\n\nSimple data storage that holds multiple unique values per key — a `Map<K, Set<V>>` with a convenient API.\n\n```\nMap {\n  [key1]: Set[value1, value2, value3],\n  [key2]: Set[value1, value2, value3],\n  [key3]: Set[value1, value2, value3],\n}\n```\n\n## Installation\n\n```bash\nnpm install @actualwave/map-of-sets\n```\n\n## Usage\n\n```typescript\nimport MapOfSets, { createMapOfSets } from '@actualwave/map-of-sets';\n\nconst sets = new MapOfSets<string, string>();\nsets.add('key', 'value 1');\nsets.add('key', 'value 2');\nsets.add('key', 'value 3');\nsets.add('key', 'value 2'); // duplicate — ignored\n\nconsole.log(sets.get('key')); // Set { 'value 1', 'value 2', 'value 3' }\nconsole.log(sets.list('key')); // ['value 1', 'value 2', 'value 3']\n```\n\n## API\n\n| Method | Description |\n|---|---|\n| `has(key)` | Returns `true` if the key exists and its Set is non-empty |\n| `hasValue(key, value)` | Returns `true` if the value exists under the key |\n| `get(key)` | Returns the `Set` for the key, or `undefined` |\n| `list(key)` | Returns an array of values for the key, or `[]` |\n| `forEach(callback)` | Calls `callback(value, key, map)` for every value of every key |\n| `eachValue(key, callback)` | Calls `callback(value, key, map)` for every value of the given key |\n| `add(key, value)` | Adds a value to the key's Set (creates the Set if needed) |\n| `set(key, values)` | Replaces all values for the key with a `Set` or array; removes the key if empty |\n| `remove(key)` | Removes the key and all its values |\n| `removeValue(key, value)` | Removes a single value; removes the key if the Set becomes empty |\n| `clone()` | Returns a deep copy of the map |\n","readmeFilename":"README.md"}