"use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Permissions = require("../Constants.js").Permissions; var ChannelPermissions = (function () { function ChannelPermissions(permissions) { _classCallCheck(this, ChannelPermissions); this.permissions = permissions; } ChannelPermissions.prototype.serialise = function serialise(explicit) { var _this = this; var hp = function hp(perm) { return _this.hasPermission(perm, explicit); }; return { // general createInstantInvite: hp(Permissions.createInstantInvite), kickMembers: hp(Permissions.kickMembers), banMembers: hp(Permissions.banMembers), managePermissions: hp(Permissions.managePermissions), manageChannel: hp(Permissions.manageChannel), manageServer: hp(Permissions.manageServer), // text readMessages: hp(Permissions.readMessages), sendMessages: hp(Permissions.sendMessages), sendTTSMessages: hp(Permissions.sendTTSMessages), manageMessages: hp(Permissions.manageMessages), embedLinks: hp(Permissions.embedLinks), attachFiles: hp(Permissions.attachFiles), readMessageHistory: hp(Permissions.readMessageHistory), mentionEveryone: hp(Permissions.mentionEveryone), // voice voiceConnect: hp(Permissions.voiceConnect), voiceSpeak: hp(Permissions.voiceSpeak), voiceMuteMembers: hp(Permissions.voiceMuteMembers), voiceDeafenMembers: hp(Permissions.voiceDeafenMembers), voiceMoveMembers: hp(Permissions.voiceMoveMembers), voiceUseVAD: hp(Permissions.voiceUseVAD) }; }; ChannelPermissions.prototype.serialize = function serialize() { // ;n; return this.serialise(); }; ChannelPermissions.prototype.hasPermission = function hasPermission(perm) { var explicit = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1]; if (perm instanceof String || typeof perm === "string") { perm = Permissions[perm]; } if (!perm) { return false; } if (!explicit) { // implicit permissions allowed if (!!(this.permissions & Permissions.manageRoles)) { // manageRoles allowed, they have all permissions return true; } } return !!(this.permissions & perm); }; return ChannelPermissions; })(); module.exports = ChannelPermissions;