bitmask-permissions v1.0.1
bitmask-permissions
A Node.js package for managing permissions using bitwise operations.
Description
bitmask-permissions is a lightweight library for managing permissions using bitmask values. It allows you to easily add, remove, and validate permissions with high performance and minimal memory usage.
Installation
Install the package using npm:
npm install bitmask-permissionsOr using yarn:
yarn add bitmask-permissionsUsage
Here's a basic example of how to use the bitmask-permissions library:
import { BitmaskPermission } from 'bitmask-permissions';
import { permissions } from './constants/permissions';
const bitmask = new BitmaskPermission(permissions);
const initialPermissions = 0;
const updatedPermissions = bitmask.assignPermission(initialPermissions, 'GET');
const hasGetPermission = bitmask.validatePermission(updatedPermissions, 'GET');
console.log(hasGetPermission); // trueAPI
BitmaskPermission
constructor(permissionsList: Array<Permissions>)
Creates a new instance of BitmaskPermission.
permissionsList: An array of permissions.
getPermissionsList(): Array<Permissions>
Returns the list of permissions.
validatePermission(permissions: number, permission: string): boolean
Validates if the permissions value contains the specified permission.
permissions: The permissions as a bitmask value.permission: The name of the permission.
assignPermission(permissions: number, permission: string): number
Assigns a permission to the permissions value.
permissions: The permissions as a bitmask value.permission: The name of the permission.
removePermission(permissions: number, permission: string): number
Removes a permission from the permissions value.
permissions: The permissions as a bitmask value.permission: The name of the permission.
getPermissions(permissions: number): string[]
Gets an array of permission names from the permissions value.
permissions: The permissions as a bitmask value.
Examples
Assigning and Validating Permissions
import { BitmaskPermission } from 'bitmask-permissions';
import { permissions } from './constants/permissions';
const bitmask = new BitmaskPermission(permissions);
let permissionsValue = 0;
permissionsValue = bitmask.assignPermission(permissionsValue, 'GET');
permissionsValue = bitmask.assignPermission(permissionsValue, 'POST');
const hasGetPermission = bitmask.validatePermission(permissionsValue, 'GET');
console.log(hasGetPermission); // true
const hasPutPermission = bitmask.validatePermission(permissionsValue, 'PUT');
console.log(hasPutPermission); // falseRemoving Permissions
import { BitmaskPermission } from 'bitmask-permissions';
import { permissions } from './constants/permissions';
const bitmask = new BitmaskPermission(permissions);
let permissionsValue = 1 | 2 | 4; // Assume 1 = GET, 2 = POST, 4 = PUT
permissionsValue = bitmask.removePermission(permissionsValue, 'GET');
const hasGetPermission = bitmask.validatePermission(permissionsValue, 'GET');
console.log(hasGetPermission); // falseContributing
Contributions are welcome! Please feel free to submit a pull request or open an issue on GitHub.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Contact
Author: Felix Manuel Martinez Sosa
GitHub: Fmanuel809