
Security News
Crates.io Users Targeted by Phishing Emails
The Rust Security Response WG is warning of phishing emails from rustfoundation.dev targeting crates.io users.
pxg-collection
Advanced tools
A Collection (Associative Array like) Class for ES6. Now supporting dot and bracket without a proxy, and generator/yield control flows.
This module has been deprecated. Please use the latest release of dictionaryjs which now supports all es6 features.
See:
A Collection (Associative Array like) Class for ES6. Now supporting dot and bracket without a proxy, and generator/yield control flows.
npm install pxg-collection
You may find the older version (with less features) but will work with older version of Node.js: dictionaryjs
A version made with Proxy is also available which will automatically invalidate keys: dictionaryjs-es6
However, do note: node.js (v8/chromium) has a known bug when debugging around Proxy, which is the reason why this new Collection class was made.
let Collection = require("pxg-collection"); let collection = new Collection(); collection.set("bob.smith","bob.smith@email.com"); collection.["john.doe"] = "john.doe@email.com"; console.log(collection["bob.smith"]); collection.empty();
let collection = new Collection(resume, cacheKeys);
Where:
Caching keys should only be enabled if you plan to strictly use the set(key,value) method, or if you plan to invalidate() yourself manually.
You may access keys using the get/set methods, but also using the dot operator and brackets.
Standard get/set methods:
collection.set("key","value"); let out = collection.get("key);
Dot operator:
collection.key = "value"; let out = collection.key;
Bracket operators:
collection["key"] = "value"; let out = collection["key"];
You may also use the getDefault(key,defaultValue) method if the key was not found (or is null):
let out = collection.getDefault("test","not found");
if (collection.has("key")) { //.. } if (collection.hasOwnProperty("key")) { //.. }
To remove a key, you may use the remove(key) method, or the delete operator:
collection.remove("key"); //or... delete collection["key"];
To empty the collection:
//blocking collecton.empty(); //non-blocking: collection.asyncEmpty(function() { //on completion });
collection.forEach(function(key,value) { console.log(key,value); });
collection.asyncForEach(function(key,value,cbNext) { console.log(key,value); cbNext(); });
Each value within the collection can be accessed in a for...of loop. This is blocking.
for (let value of collection) { console.log(value); }
To loop through each key within the collection you may use the for...in loop. This is blocking.
for (let key in collection) { console.log(key + "=" + collection[key]); }
//using the size method: console.log("Collection size:", collection.size()); //using the length property: console.log("Collection size:", collection.length);
Using the suspend module you may write async code using the new yield command. Here is an example that will show how you can write async code in a very clean manner:
var Collection = require("pxg-collection"); var suspend = require("suspend"), resume = suspend.resume; var collection = new Collection(resume); //setup collection with some test values: collection["foo"] = "bar"; collection["its a me"] = "mario"; collection["hello"] = "bye"; suspend(function*() { console.log("Collection contains:"); //looping (non blocking) yield collection.asyncForEach(function(index,item,cbNext) { console.log(" ",index,item); cbNext(); }); console.log("Looping complete..."); console.log("Emptying collection:"); //emptying (non blocking) yield collection.asyncEmpty(); console.log("Empty complete..."); })();
These methods you may not find useful, but are documented in case you do:
FAQs
A Collection (Associative Array like) Class for ES6. Now supporting dot and bracket without a proxy, and generator/yield control flows.
We found that pxg-collection demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The Rust Security Response WG is warning of phishing emails from rustfoundation.dev targeting crates.io users.
Product
Socket now lets you customize pull request alert headers, helping security teams share clear guidance right in PRs to speed reviews and reduce back-and-forth.
Product
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.