
Research
/Security News
Intercom’s npm Package Compromised in Ongoing Mini Shai-Hulud Worm Attack
Compromised intercom-client@7.0.4 npm package is tied to the ongoing Mini Shai-Hulud worm attack targeting developer and CI/CD secrets.
js-bit-list
Advanced tools
// Import the class
const BitList = require("js-bit-list");
// Create new bit list
let list = new BitList();
// Add some values
list.setBit(3, 1);
list.setBit(4, 1);
// Convert to number
let num = list.toNumber(); // Gives 2**3 + 2**4 = 24
// Convert to array
let arr = list.toArray(); // Gives [0, 0, 0, 1, 1]
// Predefined values
let predefinedList = new BitList([0, 0, 0, 1, 1, 0, 0]);
let predefinedListFromNumber = new BitList(31);
Bit list may work with objects so it is convenient to use it when you need to configure something. Imagine you have a list of cities and want to configure, which of them are available for delivery.
// Create a list of keys (your cities here)
const Cities = ["Moscow", "London", "Paris", "Prague"];
// Tip: extend BitList to use your own keys
const CitiesBitList = BitList.useKeys(Cities);
/**
* v1.1.0- (not recommended)
*/
class CitiesBitList extends BitList {
setObject(object) {
return super.setObject(object, Cities);
}
toObject() {
return super.toObject(Cities);
}
}
/**
* END v1.1.0-
*/
// Then use your class for configuration
let citiesOfRussia = new CitiesBitList().setObject({ Moscow: true });
// Convert to number
let citiesNumber = citiesOfRussia.toNumber();
// ...
// Later, convert it back to object
let citiesFromNumber = new CitiesBitList(citiesNumber).toObject();
The new useBitList() hook may be used in React applications.
import BitList from "js-bit-list";
import { useBitList } from "js-bit-list/hook";
const MyBitList = BitList.useKeys(["myKey"]);
const [list, setList] = useBitList(MyBitList, { myKey: 1 });
// Later
const listNumber = list.toNumber();
list.setObject({ myKey: 0 });
setList(list);
const BitList = require("js-bit-list");
const FruitsBitList = BitList.useKeys(["apple", "banana", "orange"])
// .checkKey()
FruitsBitList.checkKey("apple") // -> 0
FruitsBitList.checkKey("tomato") // -> Error
// .get() and .set()
const fruitsList = new FruitsBitList();
fruitsList.get("apple") // -> 0
fruitsList.set("orange", 1);
fruitsList.get("orange") // -> 1
// .enabledKeys(), .disabledKeys(), .keys()
fruitsList.enabledKeys() // -> ["orange"]
fruitsList.disabledKeys() // -> ["apple", "banana"]
fruitsList.keys() // -> ["apple", "banana", "orange"]
FAQs
Store arrays of boolean values in numbers.
We found that js-bit-list 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.

Research
/Security News
Compromised intercom-client@7.0.4 npm package is tied to the ongoing Mini Shai-Hulud worm attack targeting developer and CI/CD secrets.

Research
Socket detected a malicious supply chain attack on PyPI package lightning versions 2.6.2 and 2.6.3, which execute credential-stealing malware on import.

Research
A brand-squatted TanStack npm package used postinstall scripts to steal .env files and exfiltrate developer secrets to an attacker-controlled endpoint.