UNPKG

darkcord

Version:

A NodeJS Package to interact with Discord API

119 lines (118 loc) 3.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CacheManager = void 0; const ChannelDataManager_1 = require("../../manager/ChannelDataManager"); const DataManager_1 = require("../../manager/DataManager"); const EmojiDataManager_1 = require("../../manager/EmojiDataManager"); const GuildDataManager_1 = require("../../manager/GuildDataManager"); const RoleDataManager_1 = require("../../manager/RoleDataManager"); const UserDataManager_1 = require("../../manager/UserDataManager"); const Constants_1 = require("../../utils/Constants"); const Cache_1 = require("./Cache"); class CacheManager { client; channels; guilds; emojis; users; roles; threads; constructor(client) { this.client = client; this.channels = this._createCache("channels"); this.threads = this._createCache("threads"); this.emojis = this._createCache("emojis"); this.guilds = this._createCache("guilds"); this.users = this._createCache("users"); this.roles = this._createCache("roles"); } _createCache(option) { const options = this.client.options.cache; switch (option) { case "guilds": { if (this._cacheLimit("guilds")) { this.client.emit("warn", "Limiting guild cache can cause problems"); } return new GuildDataManager_1.GuildDataManager( this, this._cacheLimit("guilds"), ); } case "channels": { return new ChannelDataManager_1.ClientChannelsDataManager( options?.channels ?? Infinity, this, ); } case "roles": { return new RoleDataManager_1.ClientRoles(options?.roles ?? Infinity); } case "users": { return new UserDataManager_1.UserDataManager( options?.users ?? Infinity, this, ); } case "emojis": { return new EmojiDataManager_1.EmojiDataManager( options?.emojis ?? Infinity, this, ); } default: { return new DataManager_1.DataCache(); } } } cleanup(clearGuilds = false) { this.channels.cache.clear(); this.emojis.cache.clear(); this.users.cache.clear(); this.roles.cache.clear(); this.threads.clear(); if (clearGuilds) { this.guilds.cache.clear(); } } isPartialCache(cache) { switch (cache) { case "emojis": { return this._partial(Constants_1.Partials.Emoji); } case "roles": { return this._partial(Constants_1.Partials.Role); } case "reactions": { return this._partial(Constants_1.Partials.Reaction); } case "stickers": { return this._partial(Constants_1.Partials.Sticker); } case "users": { return this._partial(Constants_1.Partials.User); } default: { return false; } } } _partial(p) { return Boolean(this.client.options.partials?.includes(p)); } _cacheInstance(o) { return o instanceof Cache_1.Cache; } _cacheLimit(option) { const o = this.client.options.cache?.[option] || 0; return this._cacheInstance(o) ? o.limit === 0 ? Infinity : o.limit : typeof o === "number" ? o === 0 ? Infinity : o : o.maxSize; } } exports.CacheManager = CacheManager;