Class

CacheController

Public cache facade: limits, stats, sweeps, and cascade teardown entry points. Not a second source of truth — wraps managers / MessageCache.

Constructor

new CacheController(client: Client, limits: ResolvedCacheLimits)
ParamTypeDescription
clientClient
limitsResolvedCacheLimits

Properties

cascading: boolean (readonly)

Whether a cascade teardown is currently in progress.

limits: ResolvedCacheLimits (readonly)

Resolved limits applied at Client construction.

Methods

cascadeChannel(channel: Channel, from: 'global' | 'guild' | 'both'): void

Keep dual channel indexes + message cache aligned when a channel leaves a cache. Uses `Map.prototype.delete` so ChannelManager/Guild channel `delete` overrides do not re-enter.

ParamTypeDescription
channelChannel

Channel being removed

from'global' | 'guild' | 'both'

Which index initiated the removal (`global` = client.channels, `guild` = guild.channels)

cascadeGuild(guild: Guild): void

Tear down nested caches when a guild leaves `client.guilds`. Removes channels from the global index, clears message caches, and empties guild collections. Does not mass-delete `client.users`.

ParamTypeDescription
guildGuild
stats(): CacheStats

Current sizes for each cache bucket.

sweepChannels(filter?: (channel: Channel, id: string) => boolean): number

Sweep channels from the global index (cascades guild index + message cache). Returns count removed.

ParamTypeDescription
filter?(channel: Channel, id: string) => boolean
sweepGuilds(filter?: (guild: Guild, id: string) => boolean): number

Sweep guilds (cascades channels + message caches). Returns count removed.

ParamTypeDescription
filter?(guild: Guild, id: string) => boolean
sweepMembers(filter?: (member: GuildMember, guildId: string) => boolean): number
ParamTypeDescription
filter?(member: GuildMember, guildId: string) => boolean
sweepMessages(filter?: (message: APIMessage, channelId: string) => boolean, channelId?: string): number
ParamTypeDescription
filter?(message: APIMessage, channelId: string) => boolean
channelId?string
sweepUsers(filter?: (user: User, id: string) => boolean): number
ParamTypeDescription
filter?(user: User, id: string) => boolean