* User input sanitation: reimplement disableEveryone into disableMentions
* Change default value of ClientOptions#disableMentions to 'none'
* Update type declarations of disableMentions to include default
* update for compliance with ESLint
* Overlooked these files. Updated for complete compliance with ESLint
* add ClientOptions#disableMentions and MessageOptions#disableMentions
* provide tests
* don't sanitize controlled mentions
* add @here mentions to tests
* fix indents (6 spaces instead of 8)
* add Util#cleanContent tests
* add typings for removeMentions
* replace @ with @\u200b AFTER cleaning content as suggested instead of using removeMentions
* better explanation of this option
* no newline in Util.removeMentions
* fix long line
* remove double space
* remove comments (change has been reverted)
* Use Util.removeMentions to remove mentions
* use Util.removeMentions in Util.cleanContent
* Initial commit: add 5 initial managers
- Base manager
- GuildChannelManager
- MessageManager
- PresenceManager
- Reaction Manager
- Added LimitedCollection
* Add GuildEmojiManager, various fixes
* Modify some managers and add guildmembermanager
* Initial integration
* Delete old stores
* Integration part two, removed LRUCollection
- Most of the integration has been finished
- TODO typings
- Removed LRUCollection, needless sweeping
* Typings + stuff i somehow missed in ChannelManager
* LimitedCollection typings/ final changes
* Various jsdoc and syntactical fixes, Removed Util.mixin()
* tslint fix
* Grammatical and logical changes
* Delete temporary file placed by mistake
* Grammatical changes
* Add missing type
* Update jsdoc examples
* fix: ChannelManager#remove should call cache#delete not cache#remove
* fix recursive require
* Fix missed cache in util
* fix: more missed cache
* Remove accidental _fetchMany change from #3645
* fix: use .cache.delete() over .remove()
* fix: missing cache in ReactionCollector
* fix: missed cache in client
* fix: members is a collection not a manager
Co-Authored-By: Sugden <28943913+NotSugden@users.noreply.github.com>
* fix: various docs and cache fixes
* fix: missed cache
* fix: missing _roles
* Final testing and debugging
* LimitedCollection: return the Collection instead of undefined on .set
* Add cache to BaseManager in typings
* Commit fixes i forgot to stage yesterday
* Update invite events
* Account for new commit
* fix: MessageReactionRemoveAll should call .cache.clear()
* fix: add .cache at various places, correct return type
* docs: remove mentions of 'store'
* Add extra documented properties to typings
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
* src: Step 1 of who knows how many
* src: Remove accidentally committed test file
* src: Remove useless added property in package.json
* docs: Trailing spaces, come back >.>
* src: Buhbye uws, we will miss you..not!
* src: Move 'auto' shard selection from totalShardCount to shards
* src: tweak
* src: Filter out floats from shard IDs
You want half of a shard or what?
* src: Misc cleanup and bugfix for GUILD_BAN_ADD
* src: Rewrite checkReady
* src: Misse this while merging master into my branch
* typings: Bring these up to date
* typings: Forgot allReady event
* src: Don't checkReady if the shard isn't waiting for guilds
* src: Fix a possible bug for when the ws dies and the session becomes -1
* src: Hopefully fix last edge case that could case a shard to infinitely boot loop
* src: Rename totalShardCount to shardCount
* src: Small bugfix
* src: Correct error message for shardCount being imvalid
Co-Authored-By: bdistin <bdistin@gmail.com>
* src: Small tweaks
* src: If this doesn't fix the issues I'm gonna throw a brick at my PC
* src: I swear, STOP BREAKING
* src: *groans at a certain snake*
* src: Use undefined instead of null on destroy in close event
Setting it to null sets the close code to null, which causes a WebSocket error to be thrown. The error is thrown from WebSocket, although there is no connection alive. Fun times!
* src: @SpaceEEC's requested changes
* src: Remove zucc from discord.js
Discord is removing support for it, sooo... Bye bye
* src: Missed this
* src: Apply @kyranet's suggestions
Co-Authored-By: Antonio Román <kyradiscord@gmail.com>
* src: @kyranet's suggestions
* src: Remove pako, update debug messages
- Pako is officially gone from both enviroments
Install zlib-sync on node.js if you want it
- Improve a few debug messages some more
- Discover that internal sharding works in browsers but please don't do that
* Disambiguate the description of <client>.channels
Although not explicitly said, the current wording makes it seem like all channels are cached and available at any time in this store. Hopefully this variation makes it a bit clearer.
* make more explicit (I think)
* remove trailing white spaces
* docs: make voice public
* typings: Update typings to match the docs
* typings: ClientVoiceManager is nullable in Client
Co-Authored-By: vladfrangu <kingdgrizzle@gmail.com>
* typings: Mark client as readonly
Co-Authored-By: vladfrangu <kingdgrizzle@gmail.com>
* src: Make the client readonly
* src: Remove Client#voiceConnections getter in favor of ClientVoiceManager#connections
* src: WIP Internal Sharding refactor
* src: Refactor unavailable guild check
Co-Authored-By: kyranet <kyradiscord@gmail.com>
* src: More WIP Code
F in the chat to the old manager
* src: It should work but Discord says no.
Seriously why is this not working!
* fix: Inflator causing issues
* src: Finishing touches and typings
* misc: Proper debug message
* fix: Making things hidden needs writable: true as well
* fix: Sharding allowing multiple of the same shard, negative shards or strings
* fix: Again... edge cases
I love you guys .w.
* misc: Touchups
* misc: Better error?
* docs: Typo
* typings: Requested changes
* src: Requested changes
* src: Fix issues, validate provided shard options and more
* src: Forgot to remove the listener
* lint: eslint complaining
* fix: Setting shardCount to auto crashing the process
* misc: Requested changes
* typings: Correct typings for shardCount client option
* typings: Add invalidSession event to the shard and correct typings
* src: Minor docs adjustements, and code consistency between setHelloTimeout and setHeartbeatTimeout
* src: Don't block reconnect while creating shards
Might fix silent disconnects *again*
* src: Prevent reconnect from running if the Manager isn't READY
That way, if a shard dies while we're still spawning, it won't cause issues
* fix: Retry to reconnect if there's a network error going on.
The manager *should* keep reconnecting unless the token is invalid
* src: Enhance onClose handler for shards in the manager
- If the close code is between 1000 and 2000 (inclusive), you cannot resume
I tested this locally
- If there's a session ID still present, immediately try to resume
Faster resumes :papaBless:
Otherwise, the invalid session event will trigger and it'll handle accordingly
I swear if I see a SINGULAR Silent DC I'm yeeting
* src: Fix error check
* src: Make sure message exists on the error
* src: Used the wrong property for the shardQueue
* src: Make the hello timeout be made by the client
god help
* docs: Correct docs for WSEvents
* misc: Remove old events from the Events constant
* src: Throw the HTTP error if we don't get a 401
* typings: Can't forget about them
* src: Implement some more fail safes just in case
Seriously, better safe than sorry! Gotta failproof it completely
* Remove GroupDMChannels
they sparked no joy
* Start partials for message deletion
* MessageUpdate partials
* Add partials as an opt-in client option
* Add fetch() to Message
* Message.author should never be undefined
* Fix channels being the wrong type
* Allow fetching channels
* Refactor and add reaction add partials
* Reaction remove partials
* Check for emoji first
* fix message fetching
janky
* User partials in audit logs
* refactor overwrite code
* guild member partials
* partials as a whitelist
* document GuildMember#fetch
* fix: check whether a structure is a partial, not whether cache is true
* typings: Updated for latest commit (#3075)
* partials: fix messageUpdate behaviour (now "old" message can be partial)
* partials: add warnings and docs
* partials: add partials to index.yml
* partials: tighten "partial" definitions
* partials: fix embed-only messages counting as partials