{"_id":"@bloomlabs/permission-calculator","name":"@bloomlabs/permission-calculator","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"@bloomlabs/permission-calculator","version":"0.0.1","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs","types":"./dist/index.d.ts"}},"description":"A utility package to manage Discord permission flags using bitwise operations, built for ease of use and flexibility with TypeScript.","scripts":{"dev":"bun --watch src/index.ts","start":"bun src/index.ts","build":"tsup","prepublishOnly":"bun run build","test":"bun test"},"keywords":["bloomlabs","discord","permissions","discord-permissions","permission-calculator"],"license":"MIT","homepage":"https://github.com/Bloom-Labs-Tech/permissions-calculator#readme","repository":{"type":"git","url":"git+https://github.com/Bloom-Labs-Tech/permissions-calculator.git"},"bugs":{"url":"https://github.com/Bloom-Labs-Tech/permissions-calculator/issues"},"author":{"name":"Bloomlabs","email":"support@bloomlabs.me"},"devDependencies":{"@biomejs/biome":"1.4.1","@types/bun":"latest","dts-bundle-generator":"^9.5.1","semantic-release":"^22.0.12","tsup":"^8.2.3","typescript":"^5.5.4"},"release":{"branches":["main"]},"_id":"@bloomlabs/permission-calculator@0.0.1","gitHead":"7dcd37b4b7dee40ec8a9b551cf143d5017582901","_nodeVersion":"20.15.1","_npmVersion":"10.7.0","dist":{"integrity":"sha512-pFLq179JULiGqSXJzgbCq9sDoj1ek9M2Vc24rhvab+OY6qYGUf6/DcyIsOajCSjhNoSz+LtY7F+0zC6uSVzkfg==","shasum":"598d5aa9da33c1b635c40ea5d99eec4f5fcf23d2","tarball":"https://registry.npmjs.org/@bloomlabs/permission-calculator/-/permission-calculator-0.0.1.tgz","fileCount":7,"unpackedSize":25578,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZUZJz7Q0usaNtbHfI/8fppKrjX5QvA5StbSBPpT1C9AIgLQLewoWStuSEHLu1eaVVrrdSKQ7taIifxgLOHmS8OAY="}]},"_npmUser":{"name":"ivanoliverfabra","email":"fabra.ivanoliver@gmail.com"},"directories":{},"maintainers":[{"name":"ivanoliverfabra","email":"fabra.ivanoliver@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/permission-calculator_0.0.1_1727191644217_0.8018979757384794"},"_hasShrinkwrap":false}},"time":{"created":"2024-09-24T15:27:24.047Z","0.0.1":"2024-09-24T15:27:24.421Z","modified":"2024-09-24T15:27:24.781Z"},"maintainers":[{"name":"ivanoliverfabra","email":"fabra.ivanoliver@gmail.com"}],"description":"A utility package to manage Discord permission flags using bitwise operations, built for ease of use and flexibility with TypeScript.","homepage":"https://github.com/Bloom-Labs-Tech/permissions-calculator#readme","keywords":["bloomlabs","discord","permissions","discord-permissions","permission-calculator"],"repository":{"type":"git","url":"git+https://github.com/Bloom-Labs-Tech/permissions-calculator.git"},"author":{"name":"Bloomlabs","email":"support@bloomlabs.me"},"bugs":{"url":"https://github.com/Bloom-Labs-Tech/permissions-calculator/issues"},"license":"MIT","readme":"# @bloomlabs/permission-calculator\n\nA utility package to manage Discord permission flags using bitwise operations, built for ease of use and flexibility with TypeScript.\n\n## Features\n\n- Define and manage permission flags using `bigint` values.\n- Add, remove, and check permissions with an intuitive API.\n- Support for resolving permissions by their names or `bigint` values.\n- Retrieve a list of permission names from a combined permission value.\n\n## Installation\n\nInstall the package:\n\n```bash\nnpm install @bloomlabs/permission-calculator\n```\n\n```bash\nyarn add @bloomlabs/permission-calculator\n```\n\n```bash\npnpm add @bloomlabs/permission-calculator\n```\n\n```bash\nbun add @bloomlabs/permission-calculator\n```\n\n## Usage\n\n### Importing the Package\n\n```ts\nimport {\n  PermissionFlags,\n  PermissionCalculator,\n} from \"@bloomlabs/permission-calculator\";\n```\n\n### Creating a Permission Calculator\n\n```ts\n// Initialize a PermissionCalculator with default permissions (none)\nconst permissions = new PermissionCalculator();\n\n// Add permission to SEND_MESSAGES and MANAGE_CHANNELS\npermissions.add([\"SEND_MESSAGES\", \"MANAGE_CHANNELS\"]);\n\n// Check if a permission is present\nconsole.log(permissions.has(\"SEND_MESSAGES\")); // true\n\n// Remove a permission\npermissions.remove(\"SEND_MESSAGES\");\n\n// Get the combined permission value\nconsole.log(permissions.value); // Permission value as bigint\n\n// Get the list of permissions enabled\nconsole.log(permissions.getPermissionsList()); // ['MANAGE_CHANNELS']\n```\n\n### Adding and Removing Permissions\n\n```ts\n// Add a single permission\npermissions.add(\"BAN_MEMBERS\");\n\n// Add multiple permissions\npermissions.add([\"VIEW_AUDIT_LOG\", \"KICK_MEMBERS\"]);\n\n// Remove a permission\npermissions.remove(\"BAN_MEMBERS\");\n```\n\n### Checking Permissions\n\n```ts\nif (permissions.has(\"ADMINISTRATOR\")) {\n  console.log(\"User has administrator permissions\");\n}\n```\n\n### Static Methods\n\n- **`PermissionCalculator.getPermissionsFromValue(value)`**: Get the list of permission names from a combined permission value.\n- **`PermissionCalculator.parsePermissions(value)`**: Parse a permission or an array of permissions into a combined `bigint` value.\n\n```ts\nconst permissionsList = PermissionCalculator.getPermissionsFromValue(\n  permissions.value\n);\nconsole.log(permissionsList); // Output: ['VIEW_AUDIT_LOG', 'KICK_MEMBERS']\n```\n\n## API Reference\n\n### `PermissionFlags`\n\nA constant object containing all available permission flags. Each flag is a `bigint` value.\n\n### `PermissionCalculator`\n\nA class to manage permissions using bitwise operations.\n\n#### Methods\n\n- **`add(permission: PermissionFlagResolvable): this`**: Adds one or more permissions.\n- **`remove(permission: PermissionFlagResolvable): this`**: Removes one or more permissions.\n- **`has(permission: PermissionFlagResolvable): boolean`**: Checks if one or more permissions are included.\n- **`get value(): bigint`**: Returns the combined permissions as a `bigint`.\n- **`getPermissionsList(): string[]`**: Returns a list of permission names included in the current permissions.\n- **`static getPermissionsFromValue(value: bigint | string | number | undefined | null): string[]`**: Returns a list of permission names from a combined permission value.\n- **`static parse(value: bigint | string | number | undefined | null): bigint`**: Parses a value into a `bigint`.\n- **`static parsePermissions(value: PermissionFlagResolvable): bigint`**: Parses a permission or array of permissions into a `bigint`.\n\n## License\n\nThis package is licensed under the MIT License. See [LICENSE](./LICENSE) for more details.\n\n---\n\nEnjoy using the `@bloomlabs/permission-calculator` package! Feedback is welcome!\n","readmeFilename":"README.md"}