refactor: permissions (which fixes bug on last commit)

This commit is contained in:
Yuzu 2022-09-08 00:02:18 -05:00
parent 128649dbb8
commit 412ba2b28d

View File

@ -13,7 +13,8 @@ export type PermissionResolvable =
| bigint | bigint
| PermissionString | PermissionString
| PermissionString[] | PermissionString[]
| BitwisePermissionFlags; | BitwisePermissionFlags
| BitwisePermissionFlags[];
export class Permissions implements BitField<bigint> { export class Permissions implements BitField<bigint> {
/** Stores a reference to BitwisePermissionFlags */ /** Stores a reference to BitwisePermissionFlags */
@ -71,7 +72,7 @@ export class Permissions implements BitField<bigint> {
return true; return true;
} }
return (this.bitfield & bbit) !== bbit; return (this.bitfield & bbit) === bbit;
} }
any(bit: PermissionResolvable): boolean { any(bit: PermissionResolvable): boolean {
@ -81,7 +82,7 @@ export class Permissions implements BitField<bigint> {
return true; return true;
} }
return (this.bitfield & bbit) === 0n; return (this.bitfield & bbit) !== Permissions.None;
} }
equals(bit: PermissionResolvable): boolean { equals(bit: PermissionResolvable): boolean {
@ -113,13 +114,17 @@ export class Permissions implements BitField<bigint> {
return Permissions.resolve( return Permissions.resolve(
bit bit
.map(p => BigInt(Permissions.Flags[p])) .map(p => BigInt(Permissions.Flags[p]))
.reduce((acc, cur) => acc | cur, 0n) .reduce((acc, cur) => acc | cur, Permissions.None)
); );
default: default:
throw new TypeError(`Cannot resolve permission: ${bit}`); throw new TypeError(`Cannot resolve permission: ${bit}`);
} }
} }
static sum(permissions: Array<bigint | number>) {
return permissions.reduce((y, x) => BigInt(y) | BigInt(x), Permissions.None);
}
static reduce(permissions: PermissionResolvable[]): Permissions { static reduce(permissions: PermissionResolvable[]): Permissions {
const solved = permissions.map(Permissions.resolve); const solved = permissions.map(Permissions.resolve);