Files
discordeno/packages/utils/src/permissions.ts
Jonathan Ho 84295907d5 test(utils): add test (#2764)
* test(utils): remove old test

* test(utils): add color test

* test(utils): fix import mocha

* test(utils): fix test type error

* test(utils): remove dev code

* fix(utils): bucket not export all function

* test(utils): add some test for bucket

* fix(utils): close #2775

* test(utils): add test for permissions.ts

* test(utils): fix missing mocha import

* fix(utils): better fix for #2775
2023-02-10 12:35:38 -06:00

23 lines
990 B
TypeScript

import type { PermissionStrings } from '@discordeno/types'
import { BitwisePermissionFlags } from '@discordeno/types'
/** This function converts a bitwise string to permission strings */
export function calculatePermissions(permissionBits: bigint): PermissionStrings[] {
return Object.keys(BitwisePermissionFlags).filter((permission) => {
// Since Object.keys() not only returns the permission names but also the bit values we need to return false if it is a Number
if (Number(permission)) return false
// Check if permissionBits has this permission
return permissionBits & BigInt(BitwisePermissionFlags[permission as PermissionStrings])
}) as PermissionStrings[]
}
/** This function converts an array of permissions into the bitwise string. */
export function calculateBits(permissions: PermissionStrings[]): string {
return permissions
.reduce((bits, perm) => {
bits |= BigInt(BitwisePermissionFlags[perm])
return bits
}, 0n)
.toString()
}