New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

bitfun

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

bitfun

Functions for manipulating bitmasks as numbers

latest
Source
npmnpm
Version
1.2.1
Version published
Maintainers
1
Created
Source

bitfun

Functions for manipulating bitmasks as numbers. Deterministic, without side effects.

Installation

npm i bitfun -S

How to play

import * as bitfun from 'bitfun';

...
const mask = bitfun.add(1, [1,2]) // mask equals 3
...

- But i don't like using numbers!
- Easy

import * as bitfun from 'bitfun';

const rights = {
  NONE: 0,
  READ: 1,
  WRITE: 2,
  EXECUTE: 4
};

...
if (bitfun.includes(user.rights, [rights.READ, rights.WRITE])) {
...

You can put constants to separate file and import them as you wish.

API

bitfun.fromArray(array)

  • array <Array<Number>> Array of flags.
  • Returns: <Number> Bitmask.

Creates a new bitmask from specified array.

> bitfun.fromArray([1,2])    01,10
< 3                          11
> bitfun.fromArray([1,2,3])    01,10,11
< 3                            11

bitfun.toArray(mask)

  • mask <Number> Bitmask.
  • Returns: <Array<Number>> Array of flags.

Creates array of flags from specified bitmask.

> bitfun.toArray(3)         11
< [1,2]                     01,10
> bitfun.toArray(5)         101
< [1,4]                     001,100
> bitfun.toArray(0)
< []

bitfun.add(mask, array)

  • mask <Number> Bitmask.
  • array <Array<Number>> Array of flags.
  • Returns: <Number> New bitmask.

Adds bits to an existing bitmask.

> bitfun.add(2, [1])        10 | 01
< 3                         11
> bitfun.add(3, [1,2,3])    11 | 01,10,11
< 3                         11

bitfun.remove(mask, array)

  • mask <Number> Bitmask.
  • array <Array<Number>> Array of flags.
  • Returns: <Number> New bitmask.

Removes bits from an existing bitmask.

> bitfun.remove(2, [1])       10 | 01
< 2                           10
> bitfun.remove(3, [1,2,3])   11 | 01,10,11
< 0                           00

bitfun.equals(mask, array)

  • mask <Number> Bitmask.
  • array <Array<Number>> Array of flags.
  • Returns: <Boolean> Match.

Returns true if mask includes only specified bits.

> bitfun.equals(2, [1])      10 | 01
< false                      10 | 01
> bitfun.equals(2, [1, 2])   10 | 01,10
< false                      10 | 11
> bitfun.equals(3, [1])      11 | 01
< false                      11 | 01
> bitfun.equals(3, [1,2])    11 | 01,10
< true                       11 | 11

bitfun.includes(mask, array)

  • mask <Number> Bitmask.
  • array <Array<Number>> Array of flags.
  • Returns: <Boolean> Match.

Returns true if mask includes all of the specified bits.

> bitfun.includes(2, [1])      10 | 01
< false                        10 | 01
> bitfun.includes(2, [1,2])    10 | 01,10
< false                        10 | 11
> bitfun.includes(3, [1])      11 | 01
< true                         11 | 01
> bitfun.includes(3, [1,2])    11 | 01,10
< true                         11 | 11

bitfun.excludes(mask, array)

  • mask <Number> Bitmask.
  • array <Array<Number>> Array of flags.
  • Returns: <Boolean> Match.

Returns true if mask includes some or none of the specified bits.

> bitfun.excludes(2, [1])      10 | 01
< true                         10 | 01
> bitfun.excludes(2, [1,2])    10 | 01,10
< true                         10 | 11
> bitfun.excludes(3, [1])      11 | 01
< false                        11 | 01
> bitfun.excludes(3, [1,2])    11 | 01,10
< false                        11 | 11

bitfun.noneOf(mask, array)

  • mask <Number> Bitmask.
  • array <Array<Number>> Array of flags.
  • Returns: <Boolean> Match.

Returns true if mask includes none of the specified bits.

> bitfun.noneOf(2, [1])      10 | 01
< true                       10 | 01
> bitfun.noneOf(2, [1,2])    10 | 01,10
< false                      10 | 11
> bitfun.noneOf(3, [1])      11 | 01
< false                      11 | 01
> bitfun.noneOf(3, [1,2])    11 | 01,10
< false                      11 | 11

Testing

npm test

Keywords

bitmask

FAQs

Package last updated on 17 Nov 2023

Did you know?

Socket

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.

Install

Related posts