summaryrefslogtreecommitdiff
path: root/node_modules/@discordjs/collection
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/@discordjs/collection')
-rw-r--r--node_modules/@discordjs/collection/CHANGELOG.md190
-rw-r--r--node_modules/@discordjs/collection/LICENSE191
-rw-r--r--node_modules/@discordjs/collection/README.md67
-rw-r--r--node_modules/@discordjs/collection/dist/index.d.mts457
-rw-r--r--node_modules/@discordjs/collection/dist/index.d.ts457
-rw-r--r--node_modules/@discordjs/collection/dist/index.js543
-rw-r--r--node_modules/@discordjs/collection/dist/index.js.map1
-rw-r--r--node_modules/@discordjs/collection/dist/index.mjs517
-rw-r--r--node_modules/@discordjs/collection/dist/index.mjs.map1
-rw-r--r--node_modules/@discordjs/collection/package.json76
10 files changed, 2500 insertions, 0 deletions
diff --git a/node_modules/@discordjs/collection/CHANGELOG.md b/node_modules/@discordjs/collection/CHANGELOG.md
new file mode 100644
index 0000000..2c43057
--- /dev/null
+++ b/node_modules/@discordjs/collection/CHANGELOG.md
@@ -0,0 +1,190 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+# [@discordjs/collection@1.5.3](https://github.com/discordjs/discord.js/compare/@discordjs/collection@1.5.2...@discordjs/collection@1.5.3) - (2023-08-17)
+
+## Documentation
+
+- Update Node.js requirement to 16.11.0 (#9764) ([188877c](https://github.com/discordjs/discord.js/commit/188877c50af70f0d5cffb246620fa277435c6ce6))
+
+# [@discordjs/collection@1.5.2](https://github.com/discordjs/discord.js/compare/@discordjs/collection@1.5.1...@discordjs/collection@1.5.2) - (2023-07-31)
+
+## Refactor
+
+- **collection:** Reduce `reduce`'s code (#9581) ([b85a3f2](https://github.com/discordjs/discord.js/commit/b85a3f2ddee8fc5974749b95fc07389a03093df2))
+
+# [@discordjs/collection@1.5.1](https://github.com/discordjs/discord.js/compare/@discordjs/collection@1.5.0...@discordjs/collection@1.5.1) - (2023-05-01)
+
+## Bug Fixes
+
+- Fix external links (#9313) ([a7425c2](https://github.com/discordjs/discord.js/commit/a7425c29c4f23f1b31f4c6a463107ca9eb7fd7e2))
+
+## Documentation
+
+- Generate static imports for types with api-extractor ([98a76db](https://github.com/discordjs/discord.js/commit/98a76db482879f79d6bb2fb2e5fc65ac2c34e2d9))
+
+# [@discordjs/collection@1.5.2](https://github.com/discordjs/discord.js/compare/@discordjs/collection@1.5.1...@discordjs/collection@1.5.2) - (2023-07-31)
+
+## Refactor
+
+- **collection:** Reduce `reduce`'s code (#9581) ([b85a3f2](https://github.com/discordjs/discord.js/commit/b85a3f2ddee8fc5974749b95fc07389a03093df2))
+
+# [@discordjs/collection@1.5.1](https://github.com/discordjs/discord.js/compare/@discordjs/collection@1.5.0...@discordjs/collection@1.5.1) - (2023-05-01)
+
+## Bug Fixes
+
+- Fix external links (#9313) ([a7425c2](https://github.com/discordjs/discord.js/commit/a7425c29c4f23f1b31f4c6a463107ca9eb7fd7e2))
+
+## Documentation
+
+- Generate static imports for types with api-extractor ([98a76db](https://github.com/discordjs/discord.js/commit/98a76db482879f79d6bb2fb2e5fc65ac2c34e2d9))
+
+# [@discordjs/collection@1.5.1](https://github.com/discordjs/discord.js/compare/@discordjs/collection@1.5.0...@discordjs/collection@1.5.1) - (2023-05-01)
+
+## Bug Fixes
+
+- Fix external links (#9313) ([a7425c2](https://github.com/discordjs/discord.js/commit/a7425c29c4f23f1b31f4c6a463107ca9eb7fd7e2))
+
+## Documentation
+
+- Generate static imports for types with api-extractor ([98a76db](https://github.com/discordjs/discord.js/commit/98a76db482879f79d6bb2fb2e5fc65ac2c34e2d9))
+
+# [@discordjs/collection@1.5.0](https://github.com/discordjs/discord.js/compare/@discordjs/collection@1.4.0...@discordjs/collection@1.5.0) - (2023-04-01)
+
+## Bug Fixes
+
+- **scripts:** Accessing tsComment ([d8d5f31](https://github.com/discordjs/discord.js/commit/d8d5f31d3927fd1de62f1fa3a1a6e454243ad87b))
+
+## Features
+
+- **website:** Render syntax and mdx on the server (#9086) ([ee5169e](https://github.com/discordjs/discord.js/commit/ee5169e0aadd7bbfcd752aae614ec0f69602b68b))
+
+## Refactor
+
+- **collection:** Fix/silence linter warnings (#9266) ([d6f4e60](https://github.com/discordjs/discord.js/commit/d6f4e60efd1a1796fc84dbbfbac4f9790e480a1c))
+
+# [@discordjs/collection@1.4.0](https://github.com/discordjs/discord.js/compare/@discordjs/collection@1.3.0...@discordjs/collection@1.4.0) - (2023-03-12)
+
+## Documentation
+
+- Fix version export (#9049) ([8b70f49](https://github.com/discordjs/discord.js/commit/8b70f497a1207e30edebdecd12b926c981c13d28))
+
+## Features
+
+- **website:** Add support for source file links (#9048) ([f6506e9](https://github.com/discordjs/discord.js/commit/f6506e99c496683ee0ab67db0726b105b929af38))
+
+## Refactor
+
+- Compare with `undefined` directly (#9191) ([869153c](https://github.com/discordjs/discord.js/commit/869153c3fdf155783e7c0ecebd3627b087c3a026))
+
+# [@discordjs/collection@1.3.0](https://github.com/discordjs/discord.js/compare/@discordjs/collection@1.2.0...@discordjs/collection@1.3.0) - (2022-11-28)
+
+## Bug Fixes
+
+- Pin @types/node version ([9d8179c](https://github.com/discordjs/discord.js/commit/9d8179c6a78e1c7f9976f852804055964d5385d4))
+
+## Features
+
+- Add `Collection#subtract()` (#8393) ([291f36c](https://github.com/discordjs/discord.js/commit/291f36cd736b5dea058145a1335bf7c78ec1d81d))
+
+# [@discordjs/collection@1.2.0](https://github.com/discordjs/discord.js/compare/@discordjs/collection@1.1.0...@discordjs/collection@1.2.0) - (2022-10-08)
+
+## Bug Fixes
+
+- Footer / sidebar / deprecation alert ([ba3e0ed](https://github.com/discordjs/discord.js/commit/ba3e0ed348258fe8e51eefb4aa7379a1230616a9))
+
+## Documentation
+
+- Change name (#8604) ([dd5a089](https://github.com/discordjs/discord.js/commit/dd5a08944c258a847fc4377f1d5e953264ab47d0))
+- Remove xml tag from collection#find (#8550) ([4032457](https://github.com/discordjs/discord.js/commit/40324574ebea9894cadcc967e0db0e4e21d62768))
+
+## Features
+
+- Web-components (#8715) ([0ac3e76](https://github.com/discordjs/discord.js/commit/0ac3e766bd9dbdeb106483fa4bb085d74de346a2))
+
+## Refactor
+
+- Website components (#8600) ([c334157](https://github.com/discordjs/discord.js/commit/c3341570d983aea9ecc419979d5a01de658c9d67))
+- Use `eslint-config-neon` for packages. (#8579) ([edadb9f](https://github.com/discordjs/discord.js/commit/edadb9fe5dfd9ff51a3cfc9b25cb242d3f9f5241))
+
+## Typings
+
+- **Collection:** Make fn return type unknown (#8676) ([822b7f2](https://github.com/discordjs/discord.js/commit/822b7f234af053c8f917b0a998b82abfccd33801))
+
+# [@discordjs/collection@1.1.0](https://github.com/discordjs/discord.js/compare/@discordjs/collection@1.0.1...@discordjs/collection@1.1.0) - (2022-08-22)
+
+## Bug Fixes
+
+- Use proper format for `@link` text (#8384) ([2655639](https://github.com/discordjs/discord.js/commit/26556390a3800e954974a00c1328ff47d3e67e9a))
+
+## Documentation
+
+- Fence examples in codeblocks ([193b252](https://github.com/discordjs/discord.js/commit/193b252672440a860318d3c2968aedd9cb88e0ce))
+- Use link tags (#8382) ([5494791](https://github.com/discordjs/discord.js/commit/549479131318c659f86f0eb18578d597e22522d3))
+
+## Features
+
+- **website:** Show `constructor` information (#8540) ([e42fd16](https://github.com/discordjs/discord.js/commit/e42fd1636973b10dd7ed6fb4280ee1a4a8f82007))
+- **website:** Show descriptions for `@typeParam` blocks (#8523) ([e475b63](https://github.com/discordjs/discord.js/commit/e475b63f257f6261d73cb89fee9ecbcdd84e2a6b))
+
+## Refactor
+
+- **website:** Adjust typography (#8503) ([0f83402](https://github.com/discordjs/discord.js/commit/0f834029850d2448981596cf082ff59917018d66))
+- Docs design (#8487) ([4ab1d09](https://github.com/discordjs/discord.js/commit/4ab1d09997a18879a9eb9bda39df6f15aa22557e))
+
+# [@discordjs/collection@0.8.0](https://github.com/discordjs/discord.js/compare/@discordjs/collection@0.7.0...@discordjs/collection@0.8.0) - (2022-07-17)
+
+## Bug Fixes
+
+- **Collection:** Make error messages consistent (#8224) ([5bd6b28](https://github.com/discordjs/discord.js/commit/5bd6b28b3ebfced1cb9d23e83bd7c0def7a12404))
+- Check for function type (#8064) ([3bb9c0e](https://github.com/discordjs/discord.js/commit/3bb9c0e5c37311044ff41761b572ac4f91cda57c))
+
+## Documentation
+
+- Add codecov coverage badge to readmes (#8226) ([f6db285](https://github.com/discordjs/discord.js/commit/f6db285c073898a749fe4591cbd4463d1896daf5))
+
+## Features
+
+- Codecov (#8219) ([f10f4cd](https://github.com/discordjs/discord.js/commit/f10f4cdcd88ca6be7ec735ed3a415ba13da83db0))
+- **docgen:** Update typedoc ([b3346f4](https://github.com/discordjs/discord.js/commit/b3346f4b9b3d4f96443506643d4631dc1c6d7b21))
+- Website (#8043) ([127931d](https://github.com/discordjs/discord.js/commit/127931d1df7a2a5c27923c2f2151dbf3824e50cc))
+- **docgen:** Typescript support ([3279b40](https://github.com/discordjs/discord.js/commit/3279b40912e6aa61507bedb7db15a2b8668de44b))
+- Docgen package (#8029) ([8b979c0](https://github.com/discordjs/discord.js/commit/8b979c0245c42fd824d8e98745ee869f5360fc86))
+- Use vitest instead of jest for more speed ([8d8e6c0](https://github.com/discordjs/discord.js/commit/8d8e6c03decd7352a2aa180f6e5bc1a13602539b))
+- Add scripts package for locally used scripts ([f2ae1f9](https://github.com/discordjs/discord.js/commit/f2ae1f9348bfd893332a9060f71a8a5f272a1b8b))
+
+## Refactor
+
+- **collection:** Remove `default` property (#8055) ([c8f1690](https://github.com/discordjs/discord.js/commit/c8f1690896f55f06e05a83704262783cfc2bb91d))
+- **collection:** Remove default export (#8053) ([16810f3](https://github.com/discordjs/discord.js/commit/16810f3e410bf35ed7e6e7412d517ea74c792c5d))
+- Move all the config files to root (#8033) ([769ea0b](https://github.com/discordjs/discord.js/commit/769ea0bfe78c4f1d413c6b397c604ffe91e39c6a))
+
+## Testing
+
+- **collection:** Improve coverage (#8222) ([a51f721](https://github.com/discordjs/discord.js/commit/a51f7215eca67a0f46fba8b2d706f7ec6f6dc228))
+
+# [@discordjs/collection@0.7.0](https://github.com/discordjs/discord.js/compare/@discordjs/collection@0.6.0...@discordjs/collection@0.7.0) - (2022-06-04)
+
+## Styling
+
+- Cleanup tests and tsup configs ([6b8ef20](https://github.com/discordjs/discord.js/commit/6b8ef20cb3af5b5cfd176dd0aa0a1a1e98551629))
+
+# [@discordjs/collection@0.6.0](https://github.com/discordjs/discord.js/compare/@discordjs/collection@0.5.0...@discordjs/collection@0.6.0) - (2022-04-17)
+
+## Features
+
+- Add support for module: NodeNext in TS and ESM (#7598) ([8f1986a](https://github.com/discordjs/discord.js/commit/8f1986a6aa98365e09b00e84ad5f9f354ab61f3d))
+- **builders:** Add attachment command option type (#7203) ([ae0f35f](https://github.com/discordjs/discord.js/commit/ae0f35f51d68dfa5a7dc43d161ef9365171debdb))
+- **Collection:** Add merging functions (#7299) ([e4bd07b](https://github.com/discordjs/discord.js/commit/e4bd07b2394f227ea06b72eb6999de9ab3127b25))
+
+# [@discordjs/collection@0.5.0](https://github.com/discordjs/discord.js/compare/@discordjs/collection@0.4.0...@discordjs/collection@0.5.0) - (2022-01-24)
+
+## Refactor
+
+- Make `intersect` perform a true intersection (#7211) ([d8efba2](https://github.com/discordjs/discord.js/commit/d8efba24e09aa2a8dbf028fc57a561a56e7833fd))
+
+## Typings
+
+- Add `ReadonlyCollection` (#7245) ([db25f52](https://github.com/discordjs/discord.js/commit/db25f529b26d7c819c1c42ad3e26c2263ea2da0e))
+- **Collection:** Union types on `intersect` and `difference` (#7196) ([1f9b922](https://github.com/discordjs/discord.js/commit/1f9b9225f2066e9cc66c3355417139fd25cc403c))
diff --git a/node_modules/@discordjs/collection/LICENSE b/node_modules/@discordjs/collection/LICENSE
new file mode 100644
index 0000000..d21f37a
--- /dev/null
+++ b/node_modules/@discordjs/collection/LICENSE
@@ -0,0 +1,191 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ Copyright 2021 Noel Buechler
+ Copyright 2015 Amish Shah
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/node_modules/@discordjs/collection/README.md b/node_modules/@discordjs/collection/README.md
new file mode 100644
index 0000000..4ddde14
--- /dev/null
+++ b/node_modules/@discordjs/collection/README.md
@@ -0,0 +1,67 @@
+<div align="center">
+ <br />
+ <p>
+ <a href="https://discord.js.org"><img src="https://discord.js.org/static/logo.svg" width="546" alt="discord.js" /></a>
+ </p>
+ <br />
+ <p>
+ <a href="https://discord.gg/djs"><img src="https://img.shields.io/discord/222078108977594368?color=5865F2&logo=discord&logoColor=white" alt="Discord server" /></a>
+ <a href="https://www.npmjs.com/package/@discordjs/collection"><img src="https://img.shields.io/npm/v/@discordjs/collection.svg?maxAge=3600" alt="npm version" /></a>
+ <a href="https://www.npmjs.com/package/@discordjs/collection"><img src="https://img.shields.io/npm/dt/@discordjs/collection.svg?maxAge=3600" alt="npm downloads" /></a>
+ <a href="https://github.com/discordjs/discord.js/actions"><img src="https://github.com/discordjs/discord.js/actions/workflows/test.yml/badge.svg" alt="Build status" /></a>
+ <a href="https://codecov.io/gh/discordjs/discord.js" ><img src="https://codecov.io/gh/discordjs/discord.js/branch/main/graph/badge.svg?precision=2&flag=collection" alt="Code coverage" /></a>
+ </p>
+ <p>
+ <a href="https://vercel.com/?utm_source=discordjs&utm_campaign=oss"><img src="https://raw.githubusercontent.com/discordjs/discord.js/main/.github/powered-by-vercel.svg" alt="Vercel" /></a>
+ <a href="https://www.cloudflare.com"><img src="https://raw.githubusercontent.com/discordjs/discord.js/main/.github/powered-by-workers.png" alt="Cloudflare Workers" height="44" /></a>
+ </p>
+</div>
+
+## About
+
+`@discordjs/collection` is a powerful utility data structure used in discord.js.
+
+## Installation
+
+**Node.js 16.11.0 or newer is required.**
+
+```sh
+npm install @discordjs/collection
+yarn add @discordjs/collection
+pnpm add @discordjs/collection
+```
+
+## Links
+
+- [Website][website] ([source][website-source])
+- [Documentation][documentation]
+- [Guide][guide] ([source][guide-source])
+ Also see the v13 to v14 [Update Guide][guide-update], which includes updated and removed items from the library.
+- [discord.js Discord server][discord]
+- [Discord API Discord server][discord-api]
+- [GitHub][source]
+- [npm][npm]
+- [Related libraries][related-libs]
+
+## Contributing
+
+Before creating an issue, please ensure that it hasn't already been reported/suggested, and double-check the
+[documentation][documentation].
+See [the contribution guide][contributing] if you'd like to submit a PR.
+
+## Help
+
+If you don't understand something in the documentation, you are experiencing problems, or you just need a gentle nudge in the right direction, please don't hesitate to join our official [discord.js Server][discord].
+
+[website]: https://discord.js.org
+[website-source]: https://github.com/discordjs/discord.js/tree/main/apps/website
+[documentation]: https://discord.js.org/docs/packages/collection/stable
+[guide]: https://discordjs.guide/
+[guide-source]: https://github.com/discordjs/guide
+[guide-update]: https://discordjs.guide/additional-info/changes-in-v14.html
+[discord]: https://discord.gg/djs
+[discord-api]: https://discord.gg/discord-api
+[source]: https://github.com/discordjs/discord.js/tree/main/packages/collection
+[npm]: https://www.npmjs.com/package/@discordjs/collection
+[related-libs]: https://discord.com/developers/docs/topics/community-resources#libraries
+[contributing]: https://github.com/discordjs/discord.js/blob/main/.github/CONTRIBUTING.md
diff --git a/node_modules/@discordjs/collection/dist/index.d.mts b/node_modules/@discordjs/collection/dist/index.d.mts
new file mode 100644
index 0000000..5990c61
--- /dev/null
+++ b/node_modules/@discordjs/collection/dist/index.d.mts
@@ -0,0 +1,457 @@
+/**
+ * @internal
+ */
+interface CollectionConstructor {
+ new (): Collection<unknown, unknown>;
+ new <K, V>(entries?: readonly (readonly [K, V])[] | null): Collection<K, V>;
+ new <K, V>(iterable: Iterable<readonly [K, V]>): Collection<K, V>;
+ readonly prototype: Collection<unknown, unknown>;
+ readonly [Symbol.species]: CollectionConstructor;
+}
+/**
+ * Represents an immutable version of a collection
+ */
+type ReadonlyCollection<K, V> = Omit<Collection<K, V>, 'delete' | 'ensure' | 'forEach' | 'get' | 'reverse' | 'set' | 'sort' | 'sweep'> & ReadonlyMap<K, V>;
+/**
+ * Separate interface for the constructor so that emitted js does not have a constructor that overwrites itself
+ *
+ * @internal
+ */
+interface Collection<K, V> extends Map<K, V> {
+ constructor: CollectionConstructor;
+}
+/**
+ * A Map with additional utility methods. This is used throughout discord.js rather than Arrays for anything that has
+ * an ID, for significantly improved performance and ease-of-use.
+ *
+ * @typeParam K - The key type this collection holds
+ * @typeParam V - The value type this collection holds
+ */
+declare class Collection<K, V> extends Map<K, V> {
+ /**
+ * Obtains the value of the given key if it exists, otherwise sets and returns the value provided by the default value generator.
+ *
+ * @param key - The key to get if it exists, or set otherwise
+ * @param defaultValueGenerator - A function that generates the default value
+ * @example
+ * ```ts
+ * collection.ensure(guildId, () => defaultGuildConfig);
+ * ```
+ */
+ ensure(key: K, defaultValueGenerator: (key: K, collection: this) => V): V;
+ /**
+ * Checks if all of the elements exist in the collection.
+ *
+ * @param keys - The keys of the elements to check for
+ * @returns `true` if all of the elements exist, `false` if at least one does not exist.
+ */
+ hasAll(...keys: K[]): boolean;
+ /**
+ * Checks if any of the elements exist in the collection.
+ *
+ * @param keys - The keys of the elements to check for
+ * @returns `true` if any of the elements exist, `false` if none exist.
+ */
+ hasAny(...keys: K[]): boolean;
+ /**
+ * Obtains the first value(s) in this collection.
+ *
+ * @param amount - Amount of values to obtain from the beginning
+ * @returns A single value if no amount is provided or an array of values, starting from the end if amount is negative
+ */
+ first(): V | undefined;
+ first(amount: number): V[];
+ /**
+ * Obtains the first key(s) in this collection.
+ *
+ * @param amount - Amount of keys to obtain from the beginning
+ * @returns A single key if no amount is provided or an array of keys, starting from the end if
+ * amount is negative
+ */
+ firstKey(): K | undefined;
+ firstKey(amount: number): K[];
+ /**
+ * Obtains the last value(s) in this collection.
+ *
+ * @param amount - Amount of values to obtain from the end
+ * @returns A single value if no amount is provided or an array of values, starting from the start if
+ * amount is negative
+ */
+ last(): V | undefined;
+ last(amount: number): V[];
+ /**
+ * Obtains the last key(s) in this collection.
+ *
+ * @param amount - Amount of keys to obtain from the end
+ * @returns A single key if no amount is provided or an array of keys, starting from the start if
+ * amount is negative
+ */
+ lastKey(): K | undefined;
+ lastKey(amount: number): K[];
+ /**
+ * Identical to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/at | Array.at()}.
+ * Returns the item at a given index, allowing for positive and negative integers.
+ * Negative integers count back from the last item in the collection.
+ *
+ * @param index - The index of the element to obtain
+ */
+ at(index: number): V | undefined;
+ /**
+ * Identical to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/at | Array.at()}.
+ * Returns the key at a given index, allowing for positive and negative integers.
+ * Negative integers count back from the last item in the collection.
+ *
+ * @param index - The index of the key to obtain
+ */
+ keyAt(index: number): K | undefined;
+ /**
+ * Obtains unique random value(s) from this collection.
+ *
+ * @param amount - Amount of values to obtain randomly
+ * @returns A single value if no amount is provided or an array of values
+ */
+ random(): V | undefined;
+ random(amount: number): V[];
+ /**
+ * Obtains unique random key(s) from this collection.
+ *
+ * @param amount - Amount of keys to obtain randomly
+ * @returns A single key if no amount is provided or an array
+ */
+ randomKey(): K | undefined;
+ randomKey(amount: number): K[];
+ /**
+ * Identical to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse | Array.reverse()}
+ * but returns a Collection instead of an Array.
+ */
+ reverse(): this;
+ /**
+ * Searches for a single item where the given function returns a truthy value. This behaves like
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find | Array.find()}.
+ * All collections used in Discord.js are mapped using their `id` property, and if you want to find by id you
+ * should use the `get` method. See
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/get | MDN} for details.
+ *
+ * @param fn - The function to test with (should return boolean)
+ * @param thisArg - Value to use as `this` when executing function
+ * @example
+ * ```ts
+ * collection.find(user => user.username === 'Bob');
+ * ```
+ */
+ find<V2 extends V>(fn: (value: V, key: K, collection: this) => value is V2): V2 | undefined;
+ find(fn: (value: V, key: K, collection: this) => unknown): V | undefined;
+ find<This, V2 extends V>(fn: (this: This, value: V, key: K, collection: this) => value is V2, thisArg: This): V2 | undefined;
+ find<This>(fn: (this: This, value: V, key: K, collection: this) => unknown, thisArg: This): V | undefined;
+ /**
+ * Searches for the key of a single item where the given function returns a truthy value. This behaves like
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex | Array.findIndex()},
+ * but returns the key rather than the positional index.
+ *
+ * @param fn - The function to test with (should return boolean)
+ * @param thisArg - Value to use as `this` when executing function
+ * @example
+ * ```ts
+ * collection.findKey(user => user.username === 'Bob');
+ * ```
+ */
+ findKey<K2 extends K>(fn: (value: V, key: K, collection: this) => key is K2): K2 | undefined;
+ findKey(fn: (value: V, key: K, collection: this) => unknown): K | undefined;
+ findKey<This, K2 extends K>(fn: (this: This, value: V, key: K, collection: this) => key is K2, thisArg: This): K2 | undefined;
+ findKey<This>(fn: (this: This, value: V, key: K, collection: this) => unknown, thisArg: This): K | undefined;
+ /**
+ * Removes items that satisfy the provided filter function.
+ *
+ * @param fn - Function used to test (should return a boolean)
+ * @param thisArg - Value to use as `this` when executing function
+ * @returns The number of removed entries
+ */
+ sweep(fn: (value: V, key: K, collection: this) => unknown): number;
+ sweep<T>(fn: (this: T, value: V, key: K, collection: this) => unknown, thisArg: T): number;
+ /**
+ * Identical to
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter | Array.filter()},
+ * but returns a Collection instead of an Array.
+ *
+ * @param fn - The function to test with (should return boolean)
+ * @param thisArg - Value to use as `this` when executing function
+ * @example
+ * ```ts
+ * collection.filter(user => user.username === 'Bob');
+ * ```
+ */
+ filter<K2 extends K>(fn: (value: V, key: K, collection: this) => key is K2): Collection<K2, V>;
+ filter<V2 extends V>(fn: (value: V, key: K, collection: this) => value is V2): Collection<K, V2>;
+ filter(fn: (value: V, key: K, collection: this) => unknown): Collection<K, V>;
+ filter<This, K2 extends K>(fn: (this: This, value: V, key: K, collection: this) => key is K2, thisArg: This): Collection<K2, V>;
+ filter<This, V2 extends V>(fn: (this: This, value: V, key: K, collection: this) => value is V2, thisArg: This): Collection<K, V2>;
+ filter<This>(fn: (this: This, value: V, key: K, collection: this) => unknown, thisArg: This): Collection<K, V>;
+ /**
+ * Partitions the collection into two collections where the first collection
+ * contains the items that passed and the second contains the items that failed.
+ *
+ * @param fn - Function used to test (should return a boolean)
+ * @param thisArg - Value to use as `this` when executing function
+ * @example
+ * ```ts
+ * const [big, small] = collection.partition(guild => guild.memberCount > 250);
+ * ```
+ */
+ partition<K2 extends K>(fn: (value: V, key: K, collection: this) => key is K2): [Collection<K2, V>, Collection<Exclude<K, K2>, V>];
+ partition<V2 extends V>(fn: (value: V, key: K, collection: this) => value is V2): [Collection<K, V2>, Collection<K, Exclude<V, V2>>];
+ partition(fn: (value: V, key: K, collection: this) => unknown): [Collection<K, V>, Collection<K, V>];
+ partition<This, K2 extends K>(fn: (this: This, value: V, key: K, collection: this) => key is K2, thisArg: This): [Collection<K2, V>, Collection<Exclude<K, K2>, V>];
+ partition<This, V2 extends V>(fn: (this: This, value: V, key: K, collection: this) => value is V2, thisArg: This): [Collection<K, V2>, Collection<K, Exclude<V, V2>>];
+ partition<This>(fn: (this: This, value: V, key: K, collection: this) => unknown, thisArg: This): [Collection<K, V>, Collection<K, V>];
+ /**
+ * Maps each item into a Collection, then joins the results into a single Collection. Identical in behavior to
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flatMap | Array.flatMap()}.
+ *
+ * @param fn - Function that produces a new Collection
+ * @param thisArg - Value to use as `this` when executing function
+ * @example
+ * ```ts
+ * collection.flatMap(guild => guild.members.cache);
+ * ```
+ */
+ flatMap<T>(fn: (value: V, key: K, collection: this) => Collection<K, T>): Collection<K, T>;
+ flatMap<T, This>(fn: (this: This, value: V, key: K, collection: this) => Collection<K, T>, thisArg: This): Collection<K, T>;
+ /**
+ * Maps each item to another value into an array. Identical in behavior to
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map | Array.map()}.
+ *
+ * @param fn - Function that produces an element of the new array, taking three arguments
+ * @param thisArg - Value to use as `this` when executing function
+ * @example
+ * ```ts
+ * collection.map(user => user.tag);
+ * ```
+ */
+ map<T>(fn: (value: V, key: K, collection: this) => T): T[];
+ map<This, T>(fn: (this: This, value: V, key: K, collection: this) => T, thisArg: This): T[];
+ /**
+ * Maps each item to another value into a collection. Identical in behavior to
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map | Array.map()}.
+ *
+ * @param fn - Function that produces an element of the new collection, taking three arguments
+ * @param thisArg - Value to use as `this` when executing function
+ * @example
+ * ```ts
+ * collection.mapValues(user => user.tag);
+ * ```
+ */
+ mapValues<T>(fn: (value: V, key: K, collection: this) => T): Collection<K, T>;
+ mapValues<This, T>(fn: (this: This, value: V, key: K, collection: this) => T, thisArg: This): Collection<K, T>;
+ /**
+ * Checks if there exists an item that passes a test. Identical in behavior to
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some | Array.some()}.
+ *
+ * @param fn - Function used to test (should return a boolean)
+ * @param thisArg - Value to use as `this` when executing function
+ * @example
+ * ```ts
+ * collection.some(user => user.discriminator === '0000');
+ * ```
+ */
+ some(fn: (value: V, key: K, collection: this) => unknown): boolean;
+ some<T>(fn: (this: T, value: V, key: K, collection: this) => unknown, thisArg: T): boolean;
+ /**
+ * Checks if all items passes a test. Identical in behavior to
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every | Array.every()}.
+ *
+ * @param fn - Function used to test (should return a boolean)
+ * @param thisArg - Value to use as `this` when executing function
+ * @example
+ * ```ts
+ * collection.every(user => !user.bot);
+ * ```
+ */
+ every<K2 extends K>(fn: (value: V, key: K, collection: this) => key is K2): this is Collection<K2, V>;
+ every<V2 extends V>(fn: (value: V, key: K, collection: this) => value is V2): this is Collection<K, V2>;
+ every(fn: (value: V, key: K, collection: this) => unknown): boolean;
+ every<This, K2 extends K>(fn: (this: This, value: V, key: K, collection: this) => key is K2, thisArg: This): this is Collection<K2, V>;
+ every<This, V2 extends V>(fn: (this: This, value: V, key: K, collection: this) => value is V2, thisArg: This): this is Collection<K, V2>;
+ every<This>(fn: (this: This, value: V, key: K, collection: this) => unknown, thisArg: This): boolean;
+ /**
+ * Applies a function to produce a single value. Identical in behavior to
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce | Array.reduce()}.
+ *
+ * @param fn - Function used to reduce, taking four arguments; `accumulator`, `currentValue`, `currentKey`,
+ * and `collection`
+ * @param initialValue - Starting value for the accumulator
+ * @example
+ * ```ts
+ * collection.reduce((acc, guild) => acc + guild.memberCount, 0);
+ * ```
+ */
+ reduce<T = V>(fn: (accumulator: T, value: V, key: K, collection: this) => T, initialValue?: T): T;
+ /**
+ * Identical to
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/forEach | Map.forEach()},
+ * but returns the collection instead of undefined.
+ *
+ * @param fn - Function to execute for each element
+ * @param thisArg - Value to use as `this` when executing function
+ * @example
+ * ```ts
+ * collection
+ * .each(user => console.log(user.username))
+ * .filter(user => user.bot)
+ * .each(user => console.log(user.username));
+ * ```
+ */
+ each(fn: (value: V, key: K, collection: this) => void): this;
+ each<T>(fn: (this: T, value: V, key: K, collection: this) => void, thisArg: T): this;
+ /**
+ * Runs a function on the collection and returns the collection.
+ *
+ * @param fn - Function to execute
+ * @param thisArg - Value to use as `this` when executing function
+ * @example
+ * ```ts
+ * collection
+ * .tap(coll => console.log(coll.size))
+ * .filter(user => user.bot)
+ * .tap(coll => console.log(coll.size))
+ * ```
+ */
+ tap(fn: (collection: this) => void): this;
+ tap<T>(fn: (this: T, collection: this) => void, thisArg: T): this;
+ /**
+ * Creates an identical shallow copy of this collection.
+ *
+ * @example
+ * ```ts
+ * const newColl = someColl.clone();
+ * ```
+ */
+ clone(): Collection<K, V>;
+ /**
+ * Combines this collection with others into a new collection. None of the source collections are modified.
+ *
+ * @param collections - Collections to merge
+ * @example
+ * ```ts
+ * const newColl = someColl.concat(someOtherColl, anotherColl, ohBoyAColl);
+ * ```
+ */
+ concat(...collections: ReadonlyCollection<K, V>[]): Collection<K, V>;
+ /**
+ * Checks if this collection shares identical items with another.
+ * This is different to checking for equality using equal-signs, because
+ * the collections may be different objects, but contain the same data.
+ *
+ * @param collection - Collection to compare with
+ * @returns Whether the collections have identical contents
+ */
+ equals(collection: ReadonlyCollection<K, V>): boolean;
+ /**
+ * The sort method sorts the items of a collection in place and returns it.
+ * The sort is not necessarily stable in Node 10 or older.
+ * The default sort order is according to string Unicode code points.
+ *
+ * @param compareFunction - Specifies a function that defines the sort order.
+ * If omitted, the collection is sorted according to each character's Unicode code point value, according to the string conversion of each element.
+ * @example
+ * ```ts
+ * collection.sort((userA, userB) => userA.createdTimestamp - userB.createdTimestamp);
+ * ```
+ */
+ sort(compareFunction?: Comparator<K, V>): this;
+ /**
+ * The intersect method returns a new structure containing items where the keys and values are present in both original structures.
+ *
+ * @param other - The other Collection to filter against
+ */
+ intersect<T>(other: ReadonlyCollection<K, T>): Collection<K, T>;
+ /**
+ * The subtract method returns a new structure containing items where the keys and values of the original structure are not present in the other.
+ *
+ * @param other - The other Collection to filter against
+ */
+ subtract<T>(other: ReadonlyCollection<K, T>): Collection<K, V>;
+ /**
+ * The difference method returns a new structure containing items where the key is present in one of the original structures but not the other.
+ *
+ * @param other - The other Collection to filter against
+ */
+ difference<T>(other: ReadonlyCollection<K, T>): Collection<K, T | V>;
+ /**
+ * Merges two Collections together into a new Collection.
+ *
+ * @param other - The other Collection to merge with
+ * @param whenInSelf - Function getting the result if the entry only exists in this Collection
+ * @param whenInOther - Function getting the result if the entry only exists in the other Collection
+ * @param whenInBoth - Function getting the result if the entry exists in both Collections
+ * @example
+ * ```ts
+ * // Sums up the entries in two collections.
+ * coll.merge(
+ * other,
+ * x => ({ keep: true, value: x }),
+ * y => ({ keep: true, value: y }),
+ * (x, y) => ({ keep: true, value: x + y }),
+ * );
+ * ```
+ * @example
+ * ```ts
+ * // Intersects two collections in a left-biased manner.
+ * coll.merge(
+ * other,
+ * x => ({ keep: false }),
+ * y => ({ keep: false }),
+ * (x, _) => ({ keep: true, value: x }),
+ * );
+ * ```
+ */
+ merge<T, R>(other: ReadonlyCollection<K, T>, whenInSelf: (value: V, key: K) => Keep<R>, whenInOther: (valueOther: T, key: K) => Keep<R>, whenInBoth: (value: V, valueOther: T, key: K) => Keep<R>): Collection<K, R>;
+ /**
+ * The sorted method sorts the items of a collection and returns it.
+ * The sort is not necessarily stable in Node 10 or older.
+ * The default sort order is according to string Unicode code points.
+ *
+ * @param compareFunction - Specifies a function that defines the sort order.
+ * If omitted, the collection is sorted according to each character's Unicode code point value,
+ * according to the string conversion of each element.
+ * @example
+ * ```ts
+ * collection.sorted((userA, userB) => userA.createdTimestamp - userB.createdTimestamp);
+ * ```
+ */
+ sorted(compareFunction?: Comparator<K, V>): Collection<K, V>;
+ toJSON(): V[];
+ private static defaultSort;
+ /**
+ * Creates a Collection from a list of entries.
+ *
+ * @param entries - The list of entries
+ * @param combine - Function to combine an existing entry with a new one
+ * @example
+ * ```ts
+ * Collection.combineEntries([["a", 1], ["b", 2], ["a", 2]], (x, y) => x + y);
+ * // returns Collection { "a" => 3, "b" => 2 }
+ * ```
+ */
+ static combineEntries<K, V>(entries: Iterable<[K, V]>, combine: (firstValue: V, secondValue: V, key: K) => V): Collection<K, V>;
+}
+/**
+ * @internal
+ */
+type Keep<V> = {
+ keep: false;
+} | {
+ keep: true;
+ value: V;
+};
+/**
+ * @internal
+ */
+type Comparator<K, V> = (firstValue: V, secondValue: V, firstKey: K, secondKey: K) => number;
+
+/**
+ * The {@link https://github.com/discordjs/discord.js/blob/main/packages/collection/#readme | @discordjs/collection} version
+ * that you are currently using.
+ */
+declare const version: string;
+
+export { Collection, CollectionConstructor, Comparator, Keep, ReadonlyCollection, version };
diff --git a/node_modules/@discordjs/collection/dist/index.d.ts b/node_modules/@discordjs/collection/dist/index.d.ts
new file mode 100644
index 0000000..5990c61
--- /dev/null
+++ b/node_modules/@discordjs/collection/dist/index.d.ts
@@ -0,0 +1,457 @@
+/**
+ * @internal
+ */
+interface CollectionConstructor {
+ new (): Collection<unknown, unknown>;
+ new <K, V>(entries?: readonly (readonly [K, V])[] | null): Collection<K, V>;
+ new <K, V>(iterable: Iterable<readonly [K, V]>): Collection<K, V>;
+ readonly prototype: Collection<unknown, unknown>;
+ readonly [Symbol.species]: CollectionConstructor;
+}
+/**
+ * Represents an immutable version of a collection
+ */
+type ReadonlyCollection<K, V> = Omit<Collection<K, V>, 'delete' | 'ensure' | 'forEach' | 'get' | 'reverse' | 'set' | 'sort' | 'sweep'> & ReadonlyMap<K, V>;
+/**
+ * Separate interface for the constructor so that emitted js does not have a constructor that overwrites itself
+ *
+ * @internal
+ */
+interface Collection<K, V> extends Map<K, V> {
+ constructor: CollectionConstructor;
+}
+/**
+ * A Map with additional utility methods. This is used throughout discord.js rather than Arrays for anything that has
+ * an ID, for significantly improved performance and ease-of-use.
+ *
+ * @typeParam K - The key type this collection holds
+ * @typeParam V - The value type this collection holds
+ */
+declare class Collection<K, V> extends Map<K, V> {
+ /**
+ * Obtains the value of the given key if it exists, otherwise sets and returns the value provided by the default value generator.
+ *
+ * @param key - The key to get if it exists, or set otherwise
+ * @param defaultValueGenerator - A function that generates the default value
+ * @example
+ * ```ts
+ * collection.ensure(guildId, () => defaultGuildConfig);
+ * ```
+ */
+ ensure(key: K, defaultValueGenerator: (key: K, collection: this) => V): V;
+ /**
+ * Checks if all of the elements exist in the collection.
+ *
+ * @param keys - The keys of the elements to check for
+ * @returns `true` if all of the elements exist, `false` if at least one does not exist.
+ */
+ hasAll(...keys: K[]): boolean;
+ /**
+ * Checks if any of the elements exist in the collection.
+ *
+ * @param keys - The keys of the elements to check for
+ * @returns `true` if any of the elements exist, `false` if none exist.
+ */
+ hasAny(...keys: K[]): boolean;
+ /**
+ * Obtains the first value(s) in this collection.
+ *
+ * @param amount - Amount of values to obtain from the beginning
+ * @returns A single value if no amount is provided or an array of values, starting from the end if amount is negative
+ */
+ first(): V | undefined;
+ first(amount: number): V[];
+ /**
+ * Obtains the first key(s) in this collection.
+ *
+ * @param amount - Amount of keys to obtain from the beginning
+ * @returns A single key if no amount is provided or an array of keys, starting from the end if
+ * amount is negative
+ */
+ firstKey(): K | undefined;
+ firstKey(amount: number): K[];
+ /**
+ * Obtains the last value(s) in this collection.
+ *
+ * @param amount - Amount of values to obtain from the end
+ * @returns A single value if no amount is provided or an array of values, starting from the start if
+ * amount is negative
+ */
+ last(): V | undefined;
+ last(amount: number): V[];
+ /**
+ * Obtains the last key(s) in this collection.
+ *
+ * @param amount - Amount of keys to obtain from the end
+ * @returns A single key if no amount is provided or an array of keys, starting from the start if
+ * amount is negative
+ */
+ lastKey(): K | undefined;
+ lastKey(amount: number): K[];
+ /**
+ * Identical to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/at | Array.at()}.
+ * Returns the item at a given index, allowing for positive and negative integers.
+ * Negative integers count back from the last item in the collection.
+ *
+ * @param index - The index of the element to obtain
+ */
+ at(index: number): V | undefined;
+ /**
+ * Identical to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/at | Array.at()}.
+ * Returns the key at a given index, allowing for positive and negative integers.
+ * Negative integers count back from the last item in the collection.
+ *
+ * @param index - The index of the key to obtain
+ */
+ keyAt(index: number): K | undefined;
+ /**
+ * Obtains unique random value(s) from this collection.
+ *
+ * @param amount - Amount of values to obtain randomly
+ * @returns A single value if no amount is provided or an array of values
+ */
+ random(): V | undefined;
+ random(amount: number): V[];
+ /**
+ * Obtains unique random key(s) from this collection.
+ *
+ * @param amount - Amount of keys to obtain randomly
+ * @returns A single key if no amount is provided or an array
+ */
+ randomKey(): K | undefined;
+ randomKey(amount: number): K[];
+ /**
+ * Identical to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse | Array.reverse()}
+ * but returns a Collection instead of an Array.
+ */
+ reverse(): this;
+ /**
+ * Searches for a single item where the given function returns a truthy value. This behaves like
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find | Array.find()}.
+ * All collections used in Discord.js are mapped using their `id` property, and if you want to find by id you
+ * should use the `get` method. See
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/get | MDN} for details.
+ *
+ * @param fn - The function to test with (should return boolean)
+ * @param thisArg - Value to use as `this` when executing function
+ * @example
+ * ```ts
+ * collection.find(user => user.username === 'Bob');
+ * ```
+ */
+ find<V2 extends V>(fn: (value: V, key: K, collection: this) => value is V2): V2 | undefined;
+ find(fn: (value: V, key: K, collection: this) => unknown): V | undefined;
+ find<This, V2 extends V>(fn: (this: This, value: V, key: K, collection: this) => value is V2, thisArg: This): V2 | undefined;
+ find<This>(fn: (this: This, value: V, key: K, collection: this) => unknown, thisArg: This): V | undefined;
+ /**
+ * Searches for the key of a single item where the given function returns a truthy value. This behaves like
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex | Array.findIndex()},
+ * but returns the key rather than the positional index.
+ *
+ * @param fn - The function to test with (should return boolean)
+ * @param thisArg - Value to use as `this` when executing function
+ * @example
+ * ```ts
+ * collection.findKey(user => user.username === 'Bob');
+ * ```
+ */
+ findKey<K2 extends K>(fn: (value: V, key: K, collection: this) => key is K2): K2 | undefined;
+ findKey(fn: (value: V, key: K, collection: this) => unknown): K | undefined;
+ findKey<This, K2 extends K>(fn: (this: This, value: V, key: K, collection: this) => key is K2, thisArg: This): K2 | undefined;
+ findKey<This>(fn: (this: This, value: V, key: K, collection: this) => unknown, thisArg: This): K | undefined;
+ /**
+ * Removes items that satisfy the provided filter function.
+ *
+ * @param fn - Function used to test (should return a boolean)
+ * @param thisArg - Value to use as `this` when executing function
+ * @returns The number of removed entries
+ */
+ sweep(fn: (value: V, key: K, collection: this) => unknown): number;
+ sweep<T>(fn: (this: T, value: V, key: K, collection: this) => unknown, thisArg: T): number;
+ /**
+ * Identical to
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter | Array.filter()},
+ * but returns a Collection instead of an Array.
+ *
+ * @param fn - The function to test with (should return boolean)
+ * @param thisArg - Value to use as `this` when executing function
+ * @example
+ * ```ts
+ * collection.filter(user => user.username === 'Bob');
+ * ```
+ */
+ filter<K2 extends K>(fn: (value: V, key: K, collection: this) => key is K2): Collection<K2, V>;
+ filter<V2 extends V>(fn: (value: V, key: K, collection: this) => value is V2): Collection<K, V2>;
+ filter(fn: (value: V, key: K, collection: this) => unknown): Collection<K, V>;
+ filter<This, K2 extends K>(fn: (this: This, value: V, key: K, collection: this) => key is K2, thisArg: This): Collection<K2, V>;
+ filter<This, V2 extends V>(fn: (this: This, value: V, key: K, collection: this) => value is V2, thisArg: This): Collection<K, V2>;
+ filter<This>(fn: (this: This, value: V, key: K, collection: this) => unknown, thisArg: This): Collection<K, V>;
+ /**
+ * Partitions the collection into two collections where the first collection
+ * contains the items that passed and the second contains the items that failed.
+ *
+ * @param fn - Function used to test (should return a boolean)
+ * @param thisArg - Value to use as `this` when executing function
+ * @example
+ * ```ts
+ * const [big, small] = collection.partition(guild => guild.memberCount > 250);
+ * ```
+ */
+ partition<K2 extends K>(fn: (value: V, key: K, collection: this) => key is K2): [Collection<K2, V>, Collection<Exclude<K, K2>, V>];
+ partition<V2 extends V>(fn: (value: V, key: K, collection: this) => value is V2): [Collection<K, V2>, Collection<K, Exclude<V, V2>>];
+ partition(fn: (value: V, key: K, collection: this) => unknown): [Collection<K, V>, Collection<K, V>];
+ partition<This, K2 extends K>(fn: (this: This, value: V, key: K, collection: this) => key is K2, thisArg: This): [Collection<K2, V>, Collection<Exclude<K, K2>, V>];
+ partition<This, V2 extends V>(fn: (this: This, value: V, key: K, collection: this) => value is V2, thisArg: This): [Collection<K, V2>, Collection<K, Exclude<V, V2>>];
+ partition<This>(fn: (this: This, value: V, key: K, collection: this) => unknown, thisArg: This): [Collection<K, V>, Collection<K, V>];
+ /**
+ * Maps each item into a Collection, then joins the results into a single Collection. Identical in behavior to
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flatMap | Array.flatMap()}.
+ *
+ * @param fn - Function that produces a new Collection
+ * @param thisArg - Value to use as `this` when executing function
+ * @example
+ * ```ts
+ * collection.flatMap(guild => guild.members.cache);
+ * ```
+ */
+ flatMap<T>(fn: (value: V, key: K, collection: this) => Collection<K, T>): Collection<K, T>;
+ flatMap<T, This>(fn: (this: This, value: V, key: K, collection: this) => Collection<K, T>, thisArg: This): Collection<K, T>;
+ /**
+ * Maps each item to another value into an array. Identical in behavior to
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map | Array.map()}.
+ *
+ * @param fn - Function that produces an element of the new array, taking three arguments
+ * @param thisArg - Value to use as `this` when executing function
+ * @example
+ * ```ts
+ * collection.map(user => user.tag);
+ * ```
+ */
+ map<T>(fn: (value: V, key: K, collection: this) => T): T[];
+ map<This, T>(fn: (this: This, value: V, key: K, collection: this) => T, thisArg: This): T[];
+ /**
+ * Maps each item to another value into a collection. Identical in behavior to
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map | Array.map()}.
+ *
+ * @param fn - Function that produces an element of the new collection, taking three arguments
+ * @param thisArg - Value to use as `this` when executing function
+ * @example
+ * ```ts
+ * collection.mapValues(user => user.tag);
+ * ```
+ */
+ mapValues<T>(fn: (value: V, key: K, collection: this) => T): Collection<K, T>;
+ mapValues<This, T>(fn: (this: This, value: V, key: K, collection: this) => T, thisArg: This): Collection<K, T>;
+ /**
+ * Checks if there exists an item that passes a test. Identical in behavior to
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some | Array.some()}.
+ *
+ * @param fn - Function used to test (should return a boolean)
+ * @param thisArg - Value to use as `this` when executing function
+ * @example
+ * ```ts
+ * collection.some(user => user.discriminator === '0000');
+ * ```
+ */
+ some(fn: (value: V, key: K, collection: this) => unknown): boolean;
+ some<T>(fn: (this: T, value: V, key: K, collection: this) => unknown, thisArg: T): boolean;
+ /**
+ * Checks if all items passes a test. Identical in behavior to
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every | Array.every()}.
+ *
+ * @param fn - Function used to test (should return a boolean)
+ * @param thisArg - Value to use as `this` when executing function
+ * @example
+ * ```ts
+ * collection.every(user => !user.bot);
+ * ```
+ */
+ every<K2 extends K>(fn: (value: V, key: K, collection: this) => key is K2): this is Collection<K2, V>;
+ every<V2 extends V>(fn: (value: V, key: K, collection: this) => value is V2): this is Collection<K, V2>;
+ every(fn: (value: V, key: K, collection: this) => unknown): boolean;
+ every<This, K2 extends K>(fn: (this: This, value: V, key: K, collection: this) => key is K2, thisArg: This): this is Collection<K2, V>;
+ every<This, V2 extends V>(fn: (this: This, value: V, key: K, collection: this) => value is V2, thisArg: This): this is Collection<K, V2>;
+ every<This>(fn: (this: This, value: V, key: K, collection: this) => unknown, thisArg: This): boolean;
+ /**
+ * Applies a function to produce a single value. Identical in behavior to
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce | Array.reduce()}.
+ *
+ * @param fn - Function used to reduce, taking four arguments; `accumulator`, `currentValue`, `currentKey`,
+ * and `collection`
+ * @param initialValue - Starting value for the accumulator
+ * @example
+ * ```ts
+ * collection.reduce((acc, guild) => acc + guild.memberCount, 0);
+ * ```
+ */
+ reduce<T = V>(fn: (accumulator: T, value: V, key: K, collection: this) => T, initialValue?: T): T;
+ /**
+ * Identical to
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/forEach | Map.forEach()},
+ * but returns the collection instead of undefined.
+ *
+ * @param fn - Function to execute for each element
+ * @param thisArg - Value to use as `this` when executing function
+ * @example
+ * ```ts
+ * collection
+ * .each(user => console.log(user.username))
+ * .filter(user => user.bot)
+ * .each(user => console.log(user.username));
+ * ```
+ */
+ each(fn: (value: V, key: K, collection: this) => void): this;
+ each<T>(fn: (this: T, value: V, key: K, collection: this) => void, thisArg: T): this;
+ /**
+ * Runs a function on the collection and returns the collection.
+ *
+ * @param fn - Function to execute
+ * @param thisArg - Value to use as `this` when executing function
+ * @example
+ * ```ts
+ * collection
+ * .tap(coll => console.log(coll.size))
+ * .filter(user => user.bot)
+ * .tap(coll => console.log(coll.size))
+ * ```
+ */
+ tap(fn: (collection: this) => void): this;
+ tap<T>(fn: (this: T, collection: this) => void, thisArg: T): this;
+ /**
+ * Creates an identical shallow copy of this collection.
+ *
+ * @example
+ * ```ts
+ * const newColl = someColl.clone();
+ * ```
+ */
+ clone(): Collection<K, V>;
+ /**
+ * Combines this collection with others into a new collection. None of the source collections are modified.
+ *
+ * @param collections - Collections to merge
+ * @example
+ * ```ts
+ * const newColl = someColl.concat(someOtherColl, anotherColl, ohBoyAColl);
+ * ```
+ */
+ concat(...collections: ReadonlyCollection<K, V>[]): Collection<K, V>;
+ /**
+ * Checks if this collection shares identical items with another.
+ * This is different to checking for equality using equal-signs, because
+ * the collections may be different objects, but contain the same data.
+ *
+ * @param collection - Collection to compare with
+ * @returns Whether the collections have identical contents
+ */
+ equals(collection: ReadonlyCollection<K, V>): boolean;
+ /**
+ * The sort method sorts the items of a collection in place and returns it.
+ * The sort is not necessarily stable in Node 10 or older.
+ * The default sort order is according to string Unicode code points.
+ *
+ * @param compareFunction - Specifies a function that defines the sort order.
+ * If omitted, the collection is sorted according to each character's Unicode code point value, according to the string conversion of each element.
+ * @example
+ * ```ts
+ * collection.sort((userA, userB) => userA.createdTimestamp - userB.createdTimestamp);
+ * ```
+ */
+ sort(compareFunction?: Comparator<K, V>): this;
+ /**
+ * The intersect method returns a new structure containing items where the keys and values are present in both original structures.
+ *
+ * @param other - The other Collection to filter against
+ */
+ intersect<T>(other: ReadonlyCollection<K, T>): Collection<K, T>;
+ /**
+ * The subtract method returns a new structure containing items where the keys and values of the original structure are not present in the other.
+ *
+ * @param other - The other Collection to filter against
+ */
+ subtract<T>(other: ReadonlyCollection<K, T>): Collection<K, V>;
+ /**
+ * The difference method returns a new structure containing items where the key is present in one of the original structures but not the other.
+ *
+ * @param other - The other Collection to filter against
+ */
+ difference<T>(other: ReadonlyCollection<K, T>): Collection<K, T | V>;
+ /**
+ * Merges two Collections together into a new Collection.
+ *
+ * @param other - The other Collection to merge with
+ * @param whenInSelf - Function getting the result if the entry only exists in this Collection
+ * @param whenInOther - Function getting the result if the entry only exists in the other Collection
+ * @param whenInBoth - Function getting the result if the entry exists in both Collections
+ * @example
+ * ```ts
+ * // Sums up the entries in two collections.
+ * coll.merge(
+ * other,
+ * x => ({ keep: true, value: x }),
+ * y => ({ keep: true, value: y }),
+ * (x, y) => ({ keep: true, value: x + y }),
+ * );
+ * ```
+ * @example
+ * ```ts
+ * // Intersects two collections in a left-biased manner.
+ * coll.merge(
+ * other,
+ * x => ({ keep: false }),
+ * y => ({ keep: false }),
+ * (x, _) => ({ keep: true, value: x }),
+ * );
+ * ```
+ */
+ merge<T, R>(other: ReadonlyCollection<K, T>, whenInSelf: (value: V, key: K) => Keep<R>, whenInOther: (valueOther: T, key: K) => Keep<R>, whenInBoth: (value: V, valueOther: T, key: K) => Keep<R>): Collection<K, R>;
+ /**
+ * The sorted method sorts the items of a collection and returns it.
+ * The sort is not necessarily stable in Node 10 or older.
+ * The default sort order is according to string Unicode code points.
+ *
+ * @param compareFunction - Specifies a function that defines the sort order.
+ * If omitted, the collection is sorted according to each character's Unicode code point value,
+ * according to the string conversion of each element.
+ * @example
+ * ```ts
+ * collection.sorted((userA, userB) => userA.createdTimestamp - userB.createdTimestamp);
+ * ```
+ */
+ sorted(compareFunction?: Comparator<K, V>): Collection<K, V>;
+ toJSON(): V[];
+ private static defaultSort;
+ /**
+ * Creates a Collection from a list of entries.
+ *
+ * @param entries - The list of entries
+ * @param combine - Function to combine an existing entry with a new one
+ * @example
+ * ```ts
+ * Collection.combineEntries([["a", 1], ["b", 2], ["a", 2]], (x, y) => x + y);
+ * // returns Collection { "a" => 3, "b" => 2 }
+ * ```
+ */
+ static combineEntries<K, V>(entries: Iterable<[K, V]>, combine: (firstValue: V, secondValue: V, key: K) => V): Collection<K, V>;
+}
+/**
+ * @internal
+ */
+type Keep<V> = {
+ keep: false;
+} | {
+ keep: true;
+ value: V;
+};
+/**
+ * @internal
+ */
+type Comparator<K, V> = (firstValue: V, secondValue: V, firstKey: K, secondKey: K) => number;
+
+/**
+ * The {@link https://github.com/discordjs/discord.js/blob/main/packages/collection/#readme | @discordjs/collection} version
+ * that you are currently using.
+ */
+declare const version: string;
+
+export { Collection, CollectionConstructor, Comparator, Keep, ReadonlyCollection, version };
diff --git a/node_modules/@discordjs/collection/dist/index.js b/node_modules/@discordjs/collection/dist/index.js
new file mode 100644
index 0000000..d9379ea
--- /dev/null
+++ b/node_modules/@discordjs/collection/dist/index.js
@@ -0,0 +1,543 @@
+"use strict";
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
+
+// src/index.ts
+var src_exports = {};
+__export(src_exports, {
+ Collection: () => Collection,
+ version: () => version
+});
+module.exports = __toCommonJS(src_exports);
+
+// src/collection.ts
+var Collection = class _Collection extends Map {
+ static {
+ __name(this, "Collection");
+ }
+ /**
+ * Obtains the value of the given key if it exists, otherwise sets and returns the value provided by the default value generator.
+ *
+ * @param key - The key to get if it exists, or set otherwise
+ * @param defaultValueGenerator - A function that generates the default value
+ * @example
+ * ```ts
+ * collection.ensure(guildId, () => defaultGuildConfig);
+ * ```
+ */
+ ensure(key, defaultValueGenerator) {
+ if (this.has(key))
+ return this.get(key);
+ if (typeof defaultValueGenerator !== "function")
+ throw new TypeError(`${defaultValueGenerator} is not a function`);
+ const defaultValue = defaultValueGenerator(key, this);
+ this.set(key, defaultValue);
+ return defaultValue;
+ }
+ /**
+ * Checks if all of the elements exist in the collection.
+ *
+ * @param keys - The keys of the elements to check for
+ * @returns `true` if all of the elements exist, `false` if at least one does not exist.
+ */
+ hasAll(...keys) {
+ return keys.every((key) => super.has(key));
+ }
+ /**
+ * Checks if any of the elements exist in the collection.
+ *
+ * @param keys - The keys of the elements to check for
+ * @returns `true` if any of the elements exist, `false` if none exist.
+ */
+ hasAny(...keys) {
+ return keys.some((key) => super.has(key));
+ }
+ first(amount) {
+ if (amount === void 0)
+ return this.values().next().value;
+ if (amount < 0)
+ return this.last(amount * -1);
+ amount = Math.min(this.size, amount);
+ const iter = this.values();
+ return Array.from({ length: amount }, () => iter.next().value);
+ }
+ firstKey(amount) {
+ if (amount === void 0)
+ return this.keys().next().value;
+ if (amount < 0)
+ return this.lastKey(amount * -1);
+ amount = Math.min(this.size, amount);
+ const iter = this.keys();
+ return Array.from({ length: amount }, () => iter.next().value);
+ }
+ last(amount) {
+ const arr = [...this.values()];
+ if (amount === void 0)
+ return arr[arr.length - 1];
+ if (amount < 0)
+ return this.first(amount * -1);
+ if (!amount)
+ return [];
+ return arr.slice(-amount);
+ }
+ lastKey(amount) {
+ const arr = [...this.keys()];
+ if (amount === void 0)
+ return arr[arr.length - 1];
+ if (amount < 0)
+ return this.firstKey(amount * -1);
+ if (!amount)
+ return [];
+ return arr.slice(-amount);
+ }
+ /**
+ * Identical to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/at | Array.at()}.
+ * Returns the item at a given index, allowing for positive and negative integers.
+ * Negative integers count back from the last item in the collection.
+ *
+ * @param index - The index of the element to obtain
+ */
+ at(index) {
+ index = Math.floor(index);
+ const arr = [...this.values()];
+ return arr.at(index);
+ }
+ /**
+ * Identical to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/at | Array.at()}.
+ * Returns the key at a given index, allowing for positive and negative integers.
+ * Negative integers count back from the last item in the collection.
+ *
+ * @param index - The index of the key to obtain
+ */
+ keyAt(index) {
+ index = Math.floor(index);
+ const arr = [...this.keys()];
+ return arr.at(index);
+ }
+ random(amount) {
+ const arr = [...this.values()];
+ if (amount === void 0)
+ return arr[Math.floor(Math.random() * arr.length)];
+ if (!arr.length || !amount)
+ return [];
+ return Array.from(
+ { length: Math.min(amount, arr.length) },
+ () => arr.splice(Math.floor(Math.random() * arr.length), 1)[0]
+ );
+ }
+ randomKey(amount) {
+ const arr = [...this.keys()];
+ if (amount === void 0)
+ return arr[Math.floor(Math.random() * arr.length)];
+ if (!arr.length || !amount)
+ return [];
+ return Array.from(
+ { length: Math.min(amount, arr.length) },
+ () => arr.splice(Math.floor(Math.random() * arr.length), 1)[0]
+ );
+ }
+ /**
+ * Identical to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse | Array.reverse()}
+ * but returns a Collection instead of an Array.
+ */
+ reverse() {
+ const entries = [...this.entries()].reverse();
+ this.clear();
+ for (const [key, value] of entries)
+ this.set(key, value);
+ return this;
+ }
+ find(fn, thisArg) {
+ if (typeof fn !== "function")
+ throw new TypeError(`${fn} is not a function`);
+ if (thisArg !== void 0)
+ fn = fn.bind(thisArg);
+ for (const [key, val] of this) {
+ if (fn(val, key, this))
+ return val;
+ }
+ return void 0;
+ }
+ findKey(fn, thisArg) {
+ if (typeof fn !== "function")
+ throw new TypeError(`${fn} is not a function`);
+ if (thisArg !== void 0)
+ fn = fn.bind(thisArg);
+ for (const [key, val] of this) {
+ if (fn(val, key, this))
+ return key;
+ }
+ return void 0;
+ }
+ sweep(fn, thisArg) {
+ if (typeof fn !== "function")
+ throw new TypeError(`${fn} is not a function`);
+ if (thisArg !== void 0)
+ fn = fn.bind(thisArg);
+ const previousSize = this.size;
+ for (const [key, val] of this) {
+ if (fn(val, key, this))
+ this.delete(key);
+ }
+ return previousSize - this.size;
+ }
+ filter(fn, thisArg) {
+ if (typeof fn !== "function")
+ throw new TypeError(`${fn} is not a function`);
+ if (thisArg !== void 0)
+ fn = fn.bind(thisArg);
+ const results = new this.constructor[Symbol.species]();
+ for (const [key, val] of this) {
+ if (fn(val, key, this))
+ results.set(key, val);
+ }
+ return results;
+ }
+ partition(fn, thisArg) {
+ if (typeof fn !== "function")
+ throw new TypeError(`${fn} is not a function`);
+ if (thisArg !== void 0)
+ fn = fn.bind(thisArg);
+ const results = [
+ new this.constructor[Symbol.species](),
+ new this.constructor[Symbol.species]()
+ ];
+ for (const [key, val] of this) {
+ if (fn(val, key, this)) {
+ results[0].set(key, val);
+ } else {
+ results[1].set(key, val);
+ }
+ }
+ return results;
+ }
+ flatMap(fn, thisArg) {
+ const collections = this.map(fn, thisArg);
+ return new this.constructor[Symbol.species]().concat(...collections);
+ }
+ map(fn, thisArg) {
+ if (typeof fn !== "function")
+ throw new TypeError(`${fn} is not a function`);
+ if (thisArg !== void 0)
+ fn = fn.bind(thisArg);
+ const iter = this.entries();
+ return Array.from({ length: this.size }, () => {
+ const [key, value] = iter.next().value;
+ return fn(value, key, this);
+ });
+ }
+ mapValues(fn, thisArg) {
+ if (typeof fn !== "function")
+ throw new TypeError(`${fn} is not a function`);
+ if (thisArg !== void 0)
+ fn = fn.bind(thisArg);
+ const coll = new this.constructor[Symbol.species]();
+ for (const [key, val] of this)
+ coll.set(key, fn(val, key, this));
+ return coll;
+ }
+ some(fn, thisArg) {
+ if (typeof fn !== "function")
+ throw new TypeError(`${fn} is not a function`);
+ if (thisArg !== void 0)
+ fn = fn.bind(thisArg);
+ for (const [key, val] of this) {
+ if (fn(val, key, this))
+ return true;
+ }
+ return false;
+ }
+ every(fn, thisArg) {
+ if (typeof fn !== "function")
+ throw new TypeError(`${fn} is not a function`);
+ if (thisArg !== void 0)
+ fn = fn.bind(thisArg);
+ for (const [key, val] of this) {
+ if (!fn(val, key, this))
+ return false;
+ }
+ return true;
+ }
+ /**
+ * Applies a function to produce a single value. Identical in behavior to
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce | Array.reduce()}.
+ *
+ * @param fn - Function used to reduce, taking four arguments; `accumulator`, `currentValue`, `currentKey`,
+ * and `collection`
+ * @param initialValue - Starting value for the accumulator
+ * @example
+ * ```ts
+ * collection.reduce((acc, guild) => acc + guild.memberCount, 0);
+ * ```
+ */
+ reduce(fn, initialValue) {
+ if (typeof fn !== "function")
+ throw new TypeError(`${fn} is not a function`);
+ let accumulator;
+ const iterator = this.entries();
+ if (initialValue === void 0) {
+ if (this.size === 0)
+ throw new TypeError("Reduce of empty collection with no initial value");
+ accumulator = iterator.next().value[1];
+ } else {
+ accumulator = initialValue;
+ }
+ for (const [key, value] of iterator) {
+ accumulator = fn(accumulator, value, key, this);
+ }
+ return accumulator;
+ }
+ each(fn, thisArg) {
+ if (typeof fn !== "function")
+ throw new TypeError(`${fn} is not a function`);
+ if (thisArg !== void 0)
+ fn = fn.bind(thisArg);
+ for (const [key, value] of this) {
+ fn(value, key, this);
+ }
+ return this;
+ }
+ tap(fn, thisArg) {
+ if (typeof fn !== "function")
+ throw new TypeError(`${fn} is not a function`);
+ if (thisArg !== void 0)
+ fn = fn.bind(thisArg);
+ fn(this);
+ return this;
+ }
+ /**
+ * Creates an identical shallow copy of this collection.
+ *
+ * @example
+ * ```ts
+ * const newColl = someColl.clone();
+ * ```
+ */
+ clone() {
+ return new this.constructor[Symbol.species](this);
+ }
+ /**
+ * Combines this collection with others into a new collection. None of the source collections are modified.
+ *
+ * @param collections - Collections to merge
+ * @example
+ * ```ts
+ * const newColl = someColl.concat(someOtherColl, anotherColl, ohBoyAColl);
+ * ```
+ */
+ concat(...collections) {
+ const newColl = this.clone();
+ for (const coll of collections) {
+ for (const [key, val] of coll)
+ newColl.set(key, val);
+ }
+ return newColl;
+ }
+ /**
+ * Checks if this collection shares identical items with another.
+ * This is different to checking for equality using equal-signs, because
+ * the collections may be different objects, but contain the same data.
+ *
+ * @param collection - Collection to compare with
+ * @returns Whether the collections have identical contents
+ */
+ equals(collection) {
+ if (!collection)
+ return false;
+ if (this === collection)
+ return true;
+ if (this.size !== collection.size)
+ return false;
+ for (const [key, value] of this) {
+ if (!collection.has(key) || value !== collection.get(key)) {
+ return false;
+ }
+ }
+ return true;
+ }
+ /**
+ * The sort method sorts the items of a collection in place and returns it.
+ * The sort is not necessarily stable in Node 10 or older.
+ * The default sort order is according to string Unicode code points.
+ *
+ * @param compareFunction - Specifies a function that defines the sort order.
+ * If omitted, the collection is sorted according to each character's Unicode code point value, according to the string conversion of each element.
+ * @example
+ * ```ts
+ * collection.sort((userA, userB) => userA.createdTimestamp - userB.createdTimestamp);
+ * ```
+ */
+ sort(compareFunction = _Collection.defaultSort) {
+ const entries = [...this.entries()];
+ entries.sort((a, b) => compareFunction(a[1], b[1], a[0], b[0]));
+ super.clear();
+ for (const [key, value] of entries) {
+ super.set(key, value);
+ }
+ return this;
+ }
+ /**
+ * The intersect method returns a new structure containing items where the keys and values are present in both original structures.
+ *
+ * @param other - The other Collection to filter against
+ */
+ intersect(other) {
+ const coll = new this.constructor[Symbol.species]();
+ for (const [key, value] of other) {
+ if (this.has(key) && Object.is(value, this.get(key))) {
+ coll.set(key, value);
+ }
+ }
+ return coll;
+ }
+ /**
+ * The subtract method returns a new structure containing items where the keys and values of the original structure are not present in the other.
+ *
+ * @param other - The other Collection to filter against
+ */
+ subtract(other) {
+ const coll = new this.constructor[Symbol.species]();
+ for (const [key, value] of this) {
+ if (!other.has(key) || !Object.is(value, other.get(key))) {
+ coll.set(key, value);
+ }
+ }
+ return coll;
+ }
+ /**
+ * The difference method returns a new structure containing items where the key is present in one of the original structures but not the other.
+ *
+ * @param other - The other Collection to filter against
+ */
+ difference(other) {
+ const coll = new this.constructor[Symbol.species]();
+ for (const [key, value] of other) {
+ if (!this.has(key))
+ coll.set(key, value);
+ }
+ for (const [key, value] of this) {
+ if (!other.has(key))
+ coll.set(key, value);
+ }
+ return coll;
+ }
+ /**
+ * Merges two Collections together into a new Collection.
+ *
+ * @param other - The other Collection to merge with
+ * @param whenInSelf - Function getting the result if the entry only exists in this Collection
+ * @param whenInOther - Function getting the result if the entry only exists in the other Collection
+ * @param whenInBoth - Function getting the result if the entry exists in both Collections
+ * @example
+ * ```ts
+ * // Sums up the entries in two collections.
+ * coll.merge(
+ * other,
+ * x => ({ keep: true, value: x }),
+ * y => ({ keep: true, value: y }),
+ * (x, y) => ({ keep: true, value: x + y }),
+ * );
+ * ```
+ * @example
+ * ```ts
+ * // Intersects two collections in a left-biased manner.
+ * coll.merge(
+ * other,
+ * x => ({ keep: false }),
+ * y => ({ keep: false }),
+ * (x, _) => ({ keep: true, value: x }),
+ * );
+ * ```
+ */
+ merge(other, whenInSelf, whenInOther, whenInBoth) {
+ const coll = new this.constructor[Symbol.species]();
+ const keys = /* @__PURE__ */ new Set([...this.keys(), ...other.keys()]);
+ for (const key of keys) {
+ const hasInSelf = this.has(key);
+ const hasInOther = other.has(key);
+ if (hasInSelf && hasInOther) {
+ const result = whenInBoth(this.get(key), other.get(key), key);
+ if (result.keep)
+ coll.set(key, result.value);
+ } else if (hasInSelf) {
+ const result = whenInSelf(this.get(key), key);
+ if (result.keep)
+ coll.set(key, result.value);
+ } else if (hasInOther) {
+ const result = whenInOther(other.get(key), key);
+ if (result.keep)
+ coll.set(key, result.value);
+ }
+ }
+ return coll;
+ }
+ /**
+ * The sorted method sorts the items of a collection and returns it.
+ * The sort is not necessarily stable in Node 10 or older.
+ * The default sort order is according to string Unicode code points.
+ *
+ * @param compareFunction - Specifies a function that defines the sort order.
+ * If omitted, the collection is sorted according to each character's Unicode code point value,
+ * according to the string conversion of each element.
+ * @example
+ * ```ts
+ * collection.sorted((userA, userB) => userA.createdTimestamp - userB.createdTimestamp);
+ * ```
+ */
+ sorted(compareFunction = _Collection.defaultSort) {
+ return new this.constructor[Symbol.species](this).sort((av, bv, ak, bk) => compareFunction(av, bv, ak, bk));
+ }
+ toJSON() {
+ return [...this.values()];
+ }
+ static defaultSort(firstValue, secondValue) {
+ return Number(firstValue > secondValue) || Number(firstValue === secondValue) - 1;
+ }
+ /**
+ * Creates a Collection from a list of entries.
+ *
+ * @param entries - The list of entries
+ * @param combine - Function to combine an existing entry with a new one
+ * @example
+ * ```ts
+ * Collection.combineEntries([["a", 1], ["b", 2], ["a", 2]], (x, y) => x + y);
+ * // returns Collection { "a" => 3, "b" => 2 }
+ * ```
+ */
+ static combineEntries(entries, combine) {
+ const coll = new _Collection();
+ for (const [key, value] of entries) {
+ if (coll.has(key)) {
+ coll.set(key, combine(coll.get(key), value, key));
+ } else {
+ coll.set(key, value);
+ }
+ }
+ return coll;
+ }
+};
+
+// src/index.ts
+var version = "1.5.3";
+// Annotate the CommonJS export names for ESM import in node:
+0 && (module.exports = {
+ Collection,
+ version
+});
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/node_modules/@discordjs/collection/dist/index.js.map b/node_modules/@discordjs/collection/dist/index.js.map
new file mode 100644
index 0000000..247240c
--- /dev/null
+++ b/node_modules/@discordjs/collection/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.ts","../src/collection.ts"],"sourcesContent":["export * from './collection.js';\n\n/**\n * The {@link https://github.com/discordjs/discord.js/blob/main/packages/collection/#readme | @discordjs/collection} version\n * that you are currently using.\n */\n// This needs to explicitly be `string` so it is not typed as a \"const string\" that gets injected by esbuild\nexport const version = '1.5.3' as string;\n","/* eslint-disable no-param-reassign */\n/**\n * @internal\n */\nexport interface CollectionConstructor {\n\tnew (): Collection<unknown, unknown>;\n\tnew <K, V>(entries?: readonly (readonly [K, V])[] | null): Collection<K, V>;\n\tnew <K, V>(iterable: Iterable<readonly [K, V]>): Collection<K, V>;\n\treadonly prototype: Collection<unknown, unknown>;\n\treadonly [Symbol.species]: CollectionConstructor;\n}\n\n/**\n * Represents an immutable version of a collection\n */\nexport type ReadonlyCollection<K, V> = Omit<\n\tCollection<K, V>,\n\t'delete' | 'ensure' | 'forEach' | 'get' | 'reverse' | 'set' | 'sort' | 'sweep'\n> &\n\tReadonlyMap<K, V>;\n\n/**\n * Separate interface for the constructor so that emitted js does not have a constructor that overwrites itself\n *\n * @internal\n */\nexport interface Collection<K, V> extends Map<K, V> {\n\tconstructor: CollectionConstructor;\n}\n\n/**\n * A Map with additional utility methods. This is used throughout discord.js rather than Arrays for anything that has\n * an ID, for significantly improved performance and ease-of-use.\n *\n * @typeParam K - The key type this collection holds\n * @typeParam V - The value type this collection holds\n */\nexport class Collection<K, V> extends Map<K, V> {\n\t/**\n\t * Obtains the value of the given key if it exists, otherwise sets and returns the value provided by the default value generator.\n\t *\n\t * @param key - The key to get if it exists, or set otherwise\n\t * @param defaultValueGenerator - A function that generates the default value\n\t * @example\n\t * ```ts\n\t * collection.ensure(guildId, () => defaultGuildConfig);\n\t * ```\n\t */\n\tpublic ensure(key: K, defaultValueGenerator: (key: K, collection: this) => V): V {\n\t\tif (this.has(key)) return this.get(key)!;\n\t\tif (typeof defaultValueGenerator !== 'function') throw new TypeError(`${defaultValueGenerator} is not a function`);\n\t\tconst defaultValue = defaultValueGenerator(key, this);\n\t\tthis.set(key, defaultValue);\n\t\treturn defaultValue;\n\t}\n\n\t/**\n\t * Checks if all of the elements exist in the collection.\n\t *\n\t * @param keys - The keys of the elements to check for\n\t * @returns `true` if all of the elements exist, `false` if at least one does not exist.\n\t */\n\tpublic hasAll(...keys: K[]) {\n\t\treturn keys.every((key) => super.has(key));\n\t}\n\n\t/**\n\t * Checks if any of the elements exist in the collection.\n\t *\n\t * @param keys - The keys of the elements to check for\n\t * @returns `true` if any of the elements exist, `false` if none exist.\n\t */\n\tpublic hasAny(...keys: K[]) {\n\t\treturn keys.some((key) => super.has(key));\n\t}\n\n\t/**\n\t * Obtains the first value(s) in this collection.\n\t *\n\t * @param amount - Amount of values to obtain from the beginning\n\t * @returns A single value if no amount is provided or an array of values, starting from the end if amount is negative\n\t */\n\tpublic first(): V | undefined;\n\tpublic first(amount: number): V[];\n\tpublic first(amount?: number): V | V[] | undefined {\n\t\tif (amount === undefined) return this.values().next().value;\n\t\tif (amount < 0) return this.last(amount * -1);\n\t\tamount = Math.min(this.size, amount);\n\t\tconst iter = this.values();\n\t\treturn Array.from({ length: amount }, (): V => iter.next().value);\n\t}\n\n\t/**\n\t * Obtains the first key(s) in this collection.\n\t *\n\t * @param amount - Amount of keys to obtain from the beginning\n\t * @returns A single key if no amount is provided or an array of keys, starting from the end if\n\t * amount is negative\n\t */\n\tpublic firstKey(): K | undefined;\n\tpublic firstKey(amount: number): K[];\n\tpublic firstKey(amount?: number): K | K[] | undefined {\n\t\tif (amount === undefined) return this.keys().next().value;\n\t\tif (amount < 0) return this.lastKey(amount * -1);\n\t\tamount = Math.min(this.size, amount);\n\t\tconst iter = this.keys();\n\t\treturn Array.from({ length: amount }, (): K => iter.next().value);\n\t}\n\n\t/**\n\t * Obtains the last value(s) in this collection.\n\t *\n\t * @param amount - Amount of values to obtain from the end\n\t * @returns A single value if no amount is provided or an array of values, starting from the start if\n\t * amount is negative\n\t */\n\tpublic last(): V | undefined;\n\tpublic last(amount: number): V[];\n\tpublic last(amount?: number): V | V[] | undefined {\n\t\tconst arr = [...this.values()];\n\t\tif (amount === undefined) return arr[arr.length - 1];\n\t\tif (amount < 0) return this.first(amount * -1);\n\t\tif (!amount) return [];\n\t\treturn arr.slice(-amount);\n\t}\n\n\t/**\n\t * Obtains the last key(s) in this collection.\n\t *\n\t * @param amount - Amount of keys to obtain from the end\n\t * @returns A single key if no amount is provided or an array of keys, starting from the start if\n\t * amount is negative\n\t */\n\tpublic lastKey(): K | undefined;\n\tpublic lastKey(amount: number): K[];\n\tpublic lastKey(amount?: number): K | K[] | undefined {\n\t\tconst arr = [...this.keys()];\n\t\tif (amount === undefined) return arr[arr.length - 1];\n\t\tif (amount < 0) return this.firstKey(amount * -1);\n\t\tif (!amount) return [];\n\t\treturn arr.slice(-amount);\n\t}\n\n\t/**\n\t * Identical to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/at | Array.at()}.\n\t * Returns the item at a given index, allowing for positive and negative integers.\n\t * Negative integers count back from the last item in the collection.\n\t *\n\t * @param index - The index of the element to obtain\n\t */\n\tpublic at(index: number) {\n\t\tindex = Math.floor(index);\n\t\tconst arr = [...this.values()];\n\t\treturn arr.at(index);\n\t}\n\n\t/**\n\t * Identical to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/at | Array.at()}.\n\t * Returns the key at a given index, allowing for positive and negative integers.\n\t * Negative integers count back from the last item in the collection.\n\t *\n\t * @param index - The index of the key to obtain\n\t */\n\tpublic keyAt(index: number) {\n\t\tindex = Math.floor(index);\n\t\tconst arr = [...this.keys()];\n\t\treturn arr.at(index);\n\t}\n\n\t/**\n\t * Obtains unique random value(s) from this collection.\n\t *\n\t * @param amount - Amount of values to obtain randomly\n\t * @returns A single value if no amount is provided or an array of values\n\t */\n\tpublic random(): V | undefined;\n\tpublic random(amount: number): V[];\n\tpublic random(amount?: number): V | V[] | undefined {\n\t\tconst arr = [...this.values()];\n\t\tif (amount === undefined) return arr[Math.floor(Math.random() * arr.length)];\n\t\tif (!arr.length || !amount) return [];\n\t\treturn Array.from(\n\t\t\t{ length: Math.min(amount, arr.length) },\n\t\t\t(): V => arr.splice(Math.floor(Math.random() * arr.length), 1)[0]!,\n\t\t);\n\t}\n\n\t/**\n\t * Obtains unique random key(s) from this collection.\n\t *\n\t * @param amount - Amount of keys to obtain randomly\n\t * @returns A single key if no amount is provided or an array\n\t */\n\tpublic randomKey(): K | undefined;\n\tpublic randomKey(amount: number): K[];\n\tpublic randomKey(amount?: number): K | K[] | undefined {\n\t\tconst arr = [...this.keys()];\n\t\tif (amount === undefined) return arr[Math.floor(Math.random() * arr.length)];\n\t\tif (!arr.length || !amount) return [];\n\t\treturn Array.from(\n\t\t\t{ length: Math.min(amount, arr.length) },\n\t\t\t(): K => arr.splice(Math.floor(Math.random() * arr.length), 1)[0]!,\n\t\t);\n\t}\n\n\t/**\n\t * Identical to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse | Array.reverse()}\n\t * but returns a Collection instead of an Array.\n\t */\n\tpublic reverse() {\n\t\tconst entries = [...this.entries()].reverse();\n\t\tthis.clear();\n\t\tfor (const [key, value] of entries) this.set(key, value);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Searches for a single item where the given function returns a truthy value. This behaves like\n\t * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find | Array.find()}.\n\t * All collections used in Discord.js are mapped using their `id` property, and if you want to find by id you\n\t * should use the `get` method. See\n\t * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/get | MDN} for details.\n\t *\n\t * @param fn - The function to test with (should return boolean)\n\t * @param thisArg - Value to use as `this` when executing function\n\t * @example\n\t * ```ts\n\t * collection.find(user => user.username === 'Bob');\n\t * ```\n\t */\n\tpublic find<V2 extends V>(fn: (value: V, key: K, collection: this) => value is V2): V2 | undefined;\n\tpublic find(fn: (value: V, key: K, collection: this) => unknown): V | undefined;\n\tpublic find<This, V2 extends V>(\n\t\tfn: (this: This, value: V, key: K, collection: this) => value is V2,\n\t\tthisArg: This,\n\t): V2 | undefined;\n\tpublic find<This>(fn: (this: This, value: V, key: K, collection: this) => unknown, thisArg: This): V | undefined;\n\tpublic find(fn: (value: V, key: K, collection: this) => unknown, thisArg?: unknown): V | undefined {\n\t\tif (typeof fn !== 'function') throw new TypeError(`${fn} is not a function`);\n\t\tif (thisArg !== undefined) fn = fn.bind(thisArg);\n\t\tfor (const [key, val] of this) {\n\t\t\tif (fn(val, key, this)) return val;\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\t/**\n\t * Searches for the key of a single item where the given function returns a truthy value. This behaves like\n\t * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex | Array.findIndex()},\n\t * but returns the key rather than the positional index.\n\t *\n\t * @param fn - The function to test with (should return boolean)\n\t * @param thisArg - Value to use as `this` when executing function\n\t * @example\n\t * ```ts\n\t * collection.findKey(user => user.username === 'Bob');\n\t * ```\n\t */\n\tpublic findKey<K2 extends K>(fn: (value: V, key: K, collection: this) => key is K2): K2 | undefined;\n\tpublic findKey(fn: (value: V, key: K, collection: this) => unknown): K | undefined;\n\tpublic findKey<This, K2 extends K>(\n\t\tfn: (this: This, value: V, key: K, collection: this) => key is K2,\n\t\tthisArg: This,\n\t): K2 | undefined;\n\tpublic findKey<This>(fn: (this: This, value: V, key: K, collection: this) => unknown, thisArg: This): K | undefined;\n\tpublic findKey(fn: (value: V, key: K, collection: this) => unknown, thisArg?: unknown): K | undefined {\n\t\tif (typeof fn !== 'function') throw new TypeError(`${fn} is not a function`);\n\t\tif (thisArg !== undefined) fn = fn.bind(thisArg);\n\t\tfor (const [key, val] of this) {\n\t\t\tif (fn(val, key, this)) return key;\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\t/**\n\t * Removes items that satisfy the provided filter function.\n\t *\n\t * @param fn - Function used to test (should return a boolean)\n\t * @param thisArg - Value to use as `this` when executing function\n\t * @returns The number of removed entries\n\t */\n\tpublic sweep(fn: (value: V, key: K, collection: this) => unknown): number;\n\tpublic sweep<T>(fn: (this: T, value: V, key: K, collection: this) => unknown, thisArg: T): number;\n\tpublic sweep(fn: (value: V, key: K, collection: this) => unknown, thisArg?: unknown): number {\n\t\tif (typeof fn !== 'function') throw new TypeError(`${fn} is not a function`);\n\t\tif (thisArg !== undefined) fn = fn.bind(thisArg);\n\t\tconst previousSize = this.size;\n\t\tfor (const [key, val] of this) {\n\t\t\tif (fn(val, key, this)) this.delete(key);\n\t\t}\n\n\t\treturn previousSize - this.size;\n\t}\n\n\t/**\n\t * Identical to\n\t * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter | Array.filter()},\n\t * but returns a Collection instead of an Array.\n\t *\n\t * @param fn - The function to test with (should return boolean)\n\t * @param thisArg - Value to use as `this` when executing function\n\t * @example\n\t * ```ts\n\t * collection.filter(user => user.username === 'Bob');\n\t * ```\n\t */\n\tpublic filter<K2 extends K>(fn: (value: V, key: K, collection: this) => key is K2): Collection<K2, V>;\n\tpublic filter<V2 extends V>(fn: (value: V, key: K, collection: this) => value is V2): Collection<K, V2>;\n\tpublic filter(fn: (value: V, key: K, collection: this) => unknown): Collection<K, V>;\n\tpublic filter<This, K2 extends K>(\n\t\tfn: (this: This, value: V, key: K, collection: this) => key is K2,\n\t\tthisArg: This,\n\t): Collection<K2, V>;\n\tpublic filter<This, V2 extends V>(\n\t\tfn: (this: This, value: V, key: K, collection: this) => value is V2,\n\t\tthisArg: This,\n\t): Collection<K, V2>;\n\tpublic filter<This>(fn: (this: This, value: V, key: K, collection: this) => unknown, thisArg: This): Collection<K, V>;\n\tpublic filter(fn: (value: V, key: K, collection: this) => unknown, thisArg?: unknown): Collection<K, V> {\n\t\tif (typeof fn !== 'function') throw new TypeError(`${fn} is not a function`);\n\t\tif (thisArg !== undefined) fn = fn.bind(thisArg);\n\t\tconst results = new this.constructor[Symbol.species]<K, V>();\n\t\tfor (const [key, val] of this) {\n\t\t\tif (fn(val, key, this)) results.set(key, val);\n\t\t}\n\n\t\treturn results;\n\t}\n\n\t/**\n\t * Partitions the collection into two collections where the first collection\n\t * contains the items that passed and the second contains the items that failed.\n\t *\n\t * @param fn - Function used to test (should return a boolean)\n\t * @param thisArg - Value to use as `this` when executing function\n\t * @example\n\t * ```ts\n\t * const [big, small] = collection.partition(guild => guild.memberCount > 250);\n\t * ```\n\t */\n\tpublic partition<K2 extends K>(\n\t\tfn: (value: V, key: K, collection: this) => key is K2,\n\t): [Collection<K2, V>, Collection<Exclude<K, K2>, V>];\n\tpublic partition<V2 extends V>(\n\t\tfn: (value: V, key: K, collection: this) => value is V2,\n\t): [Collection<K, V2>, Collection<K, Exclude<V, V2>>];\n\tpublic partition(fn: (value: V, key: K, collection: this) => unknown): [Collection<K, V>, Collection<K, V>];\n\tpublic partition<This, K2 extends K>(\n\t\tfn: (this: This, value: V, key: K, collection: this) => key is K2,\n\t\tthisArg: This,\n\t): [Collection<K2, V>, Collection<Exclude<K, K2>, V>];\n\tpublic partition<This, V2 extends V>(\n\t\tfn: (this: This, value: V, key: K, collection: this) => value is V2,\n\t\tthisArg: This,\n\t): [Collection<K, V2>, Collection<K, Exclude<V, V2>>];\n\tpublic partition<This>(\n\t\tfn: (this: This, value: V, key: K, collection: this) => unknown,\n\t\tthisArg: This,\n\t): [Collection<K, V>, Collection<K, V>];\n\tpublic partition(\n\t\tfn: (value: V, key: K, collection: this) => unknown,\n\t\tthisArg?: unknown,\n\t): [Collection<K, V>, Collection<K, V>] {\n\t\tif (typeof fn !== 'function') throw new TypeError(`${fn} is not a function`);\n\t\tif (thisArg !== undefined) fn = fn.bind(thisArg);\n\t\tconst results: [Collection<K, V>, Collection<K, V>] = [\n\t\t\tnew this.constructor[Symbol.species]<K, V>(),\n\t\t\tnew this.constructor[Symbol.species]<K, V>(),\n\t\t];\n\t\tfor (const [key, val] of this) {\n\t\t\tif (fn(val, key, this)) {\n\t\t\t\tresults[0].set(key, val);\n\t\t\t} else {\n\t\t\t\tresults[1].set(key, val);\n\t\t\t}\n\t\t}\n\n\t\treturn results;\n\t}\n\n\t/**\n\t * Maps each item into a Collection, then joins the results into a single Collection. Identical in behavior to\n\t * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flatMap | Array.flatMap()}.\n\t *\n\t * @param fn - Function that produces a new Collection\n\t * @param thisArg - Value to use as `this` when executing function\n\t * @example\n\t * ```ts\n\t * collection.flatMap(guild => guild.members.cache);\n\t * ```\n\t */\n\tpublic flatMap<T>(fn: (value: V, key: K, collection: this) => Collection<K, T>): Collection<K, T>;\n\tpublic flatMap<T, This>(\n\t\tfn: (this: This, value: V, key: K, collection: this) => Collection<K, T>,\n\t\tthisArg: This,\n\t): Collection<K, T>;\n\tpublic flatMap<T>(fn: (value: V, key: K, collection: this) => Collection<K, T>, thisArg?: unknown): Collection<K, T> {\n\t\t// eslint-disable-next-line unicorn/no-array-method-this-argument\n\t\tconst collections = this.map(fn, thisArg);\n\t\treturn new this.constructor[Symbol.species]<K, T>().concat(...collections);\n\t}\n\n\t/**\n\t * Maps each item to another value into an array. Identical in behavior to\n\t * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map | Array.map()}.\n\t *\n\t * @param fn - Function that produces an element of the new array, taking three arguments\n\t * @param thisArg - Value to use as `this` when executing function\n\t * @example\n\t * ```ts\n\t * collection.map(user => user.tag);\n\t * ```\n\t */\n\tpublic map<T>(fn: (value: V, key: K, collection: this) => T): T[];\n\tpublic map<This, T>(fn: (this: This, value: V, key: K, collection: this) => T, thisArg: This): T[];\n\tpublic map<T>(fn: (value: V, key: K, collection: this) => T, thisArg?: unknown): T[] {\n\t\tif (typeof fn !== 'function') throw new TypeError(`${fn} is not a function`);\n\t\tif (thisArg !== undefined) fn = fn.bind(thisArg);\n\t\tconst iter = this.entries();\n\t\treturn Array.from({ length: this.size }, (): T => {\n\t\t\tconst [key, value] = iter.next().value;\n\t\t\treturn fn(value, key, this);\n\t\t});\n\t}\n\n\t/**\n\t * Maps each item to another value into a collection. Identical in behavior to\n\t * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map | Array.map()}.\n\t *\n\t * @param fn - Function that produces an element of the new collection, taking three arguments\n\t * @param thisArg - Value to use as `this` when executing function\n\t * @example\n\t * ```ts\n\t * collection.mapValues(user => user.tag);\n\t * ```\n\t */\n\tpublic mapValues<T>(fn: (value: V, key: K, collection: this) => T): Collection<K, T>;\n\tpublic mapValues<This, T>(fn: (this: This, value: V, key: K, collection: this) => T, thisArg: This): Collection<K, T>;\n\tpublic mapValues<T>(fn: (value: V, key: K, collection: this) => T, thisArg?: unknown): Collection<K, T> {\n\t\tif (typeof fn !== 'function') throw new TypeError(`${fn} is not a function`);\n\t\tif (thisArg !== undefined) fn = fn.bind(thisArg);\n\t\tconst coll = new this.constructor[Symbol.species]<K, T>();\n\t\tfor (const [key, val] of this) coll.set(key, fn(val, key, this));\n\t\treturn coll;\n\t}\n\n\t/**\n\t * Checks if there exists an item that passes a test. Identical in behavior to\n\t * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some | Array.some()}.\n\t *\n\t * @param fn - Function used to test (should return a boolean)\n\t * @param thisArg - Value to use as `this` when executing function\n\t * @example\n\t * ```ts\n\t * collection.some(user => user.discriminator === '0000');\n\t * ```\n\t */\n\tpublic some(fn: (value: V, key: K, collection: this) => unknown): boolean;\n\tpublic some<T>(fn: (this: T, value: V, key: K, collection: this) => unknown, thisArg: T): boolean;\n\tpublic some(fn: (value: V, key: K, collection: this) => unknown, thisArg?: unknown): boolean {\n\t\tif (typeof fn !== 'function') throw new TypeError(`${fn} is not a function`);\n\t\tif (thisArg !== undefined) fn = fn.bind(thisArg);\n\t\tfor (const [key, val] of this) {\n\t\t\tif (fn(val, key, this)) return true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Checks if all items passes a test. Identical in behavior to\n\t * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every | Array.every()}.\n\t *\n\t * @param fn - Function used to test (should return a boolean)\n\t * @param thisArg - Value to use as `this` when executing function\n\t * @example\n\t * ```ts\n\t * collection.every(user => !user.bot);\n\t * ```\n\t */\n\tpublic every<K2 extends K>(fn: (value: V, key: K, collection: this) => key is K2): this is Collection<K2, V>;\n\tpublic every<V2 extends V>(fn: (value: V, key: K, collection: this) => value is V2): this is Collection<K, V2>;\n\tpublic every(fn: (value: V, key: K, collection: this) => unknown): boolean;\n\tpublic every<This, K2 extends K>(\n\t\tfn: (this: This, value: V, key: K, collection: this) => key is K2,\n\t\tthisArg: This,\n\t): this is Collection<K2, V>;\n\tpublic every<This, V2 extends V>(\n\t\tfn: (this: This, value: V, key: K, collection: this) => value is V2,\n\t\tthisArg: This,\n\t): this is Collection<K, V2>;\n\tpublic every<This>(fn: (this: This, value: V, key: K, collection: this) => unknown, thisArg: This): boolean;\n\tpublic every(fn: (value: V, key: K, collection: this) => unknown, thisArg?: unknown): boolean {\n\t\tif (typeof fn !== 'function') throw new TypeError(`${fn} is not a function`);\n\t\tif (thisArg !== undefined) fn = fn.bind(thisArg);\n\t\tfor (const [key, val] of this) {\n\t\t\tif (!fn(val, key, this)) return false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Applies a function to produce a single value. Identical in behavior to\n\t * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce | Array.reduce()}.\n\t *\n\t * @param fn - Function used to reduce, taking four arguments; `accumulator`, `currentValue`, `currentKey`,\n\t * and `collection`\n\t * @param initialValue - Starting value for the accumulator\n\t * @example\n\t * ```ts\n\t * collection.reduce((acc, guild) => acc + guild.memberCount, 0);\n\t * ```\n\t */\n\tpublic reduce<T = V>(fn: (accumulator: T, value: V, key: K, collection: this) => T, initialValue?: T): T {\n\t\tif (typeof fn !== 'function') throw new TypeError(`${fn} is not a function`);\n\t\tlet accumulator!: T;\n\n\t\tconst iterator = this.entries();\n\t\tif (initialValue === undefined) {\n\t\t\tif (this.size === 0) throw new TypeError('Reduce of empty collection with no initial value');\n\t\t\taccumulator = iterator.next().value[1];\n\t\t} else {\n\t\t\taccumulator = initialValue;\n\t\t}\n\n\t\tfor (const [key, value] of iterator) {\n\t\t\taccumulator = fn(accumulator, value, key, this);\n\t\t}\n\n\t\treturn accumulator;\n\t}\n\n\t/**\n\t * Identical to\n\t * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/forEach | Map.forEach()},\n\t * but returns the collection instead of undefined.\n\t *\n\t * @param fn - Function to execute for each element\n\t * @param thisArg - Value to use as `this` when executing function\n\t * @example\n\t * ```ts\n\t * collection\n\t * .each(user => console.log(user.username))\n\t * .filter(user => user.bot)\n\t * .each(user => console.log(user.username));\n\t * ```\n\t */\n\tpublic each(fn: (value: V, key: K, collection: this) => void): this;\n\tpublic each<T>(fn: (this: T, value: V, key: K, collection: this) => void, thisArg: T): this;\n\tpublic each(fn: (value: V, key: K, collection: this) => void, thisArg?: unknown): this {\n\t\tif (typeof fn !== 'function') throw new TypeError(`${fn} is not a function`);\n\t\tif (thisArg !== undefined) fn = fn.bind(thisArg);\n\n\t\tfor (const [key, value] of this) {\n\t\t\tfn(value, key, this);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Runs a function on the collection and returns the collection.\n\t *\n\t * @param fn - Function to execute\n\t * @param thisArg - Value to use as `this` when executing function\n\t * @example\n\t * ```ts\n\t * collection\n\t * .tap(coll => console.log(coll.size))\n\t * .filter(user => user.bot)\n\t * .tap(coll => console.log(coll.size))\n\t * ```\n\t */\n\tpublic tap(fn: (collection: this) => void): this;\n\tpublic tap<T>(fn: (this: T, collection: this) => void, thisArg: T): this;\n\tpublic tap(fn: (collection: this) => void, thisArg?: unknown): this {\n\t\tif (typeof fn !== 'function') throw new TypeError(`${fn} is not a function`);\n\t\tif (thisArg !== undefined) fn = fn.bind(thisArg);\n\t\tfn(this);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Creates an identical shallow copy of this collection.\n\t *\n\t * @example\n\t * ```ts\n\t * const newColl = someColl.clone();\n\t * ```\n\t */\n\tpublic clone(): Collection<K, V> {\n\t\treturn new this.constructor[Symbol.species](this);\n\t}\n\n\t/**\n\t * Combines this collection with others into a new collection. None of the source collections are modified.\n\t *\n\t * @param collections - Collections to merge\n\t * @example\n\t * ```ts\n\t * const newColl = someColl.concat(someOtherColl, anotherColl, ohBoyAColl);\n\t * ```\n\t */\n\tpublic concat(...collections: ReadonlyCollection<K, V>[]) {\n\t\tconst newColl = this.clone();\n\t\tfor (const coll of collections) {\n\t\t\tfor (const [key, val] of coll) newColl.set(key, val);\n\t\t}\n\n\t\treturn newColl;\n\t}\n\n\t/**\n\t * Checks if this collection shares identical items with another.\n\t * This is different to checking for equality using equal-signs, because\n\t * the collections may be different objects, but contain the same data.\n\t *\n\t * @param collection - Collection to compare with\n\t * @returns Whether the collections have identical contents\n\t */\n\tpublic equals(collection: ReadonlyCollection<K, V>) {\n\t\tif (!collection) return false; // runtime check\n\t\tif (this === collection) return true;\n\t\tif (this.size !== collection.size) return false;\n\t\tfor (const [key, value] of this) {\n\t\t\tif (!collection.has(key) || value !== collection.get(key)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * The sort method sorts the items of a collection in place and returns it.\n\t * The sort is not necessarily stable in Node 10 or older.\n\t * The default sort order is according to string Unicode code points.\n\t *\n\t * @param compareFunction - Specifies a function that defines the sort order.\n\t * If omitted, the collection is sorted according to each character's Unicode code point value, according to the string conversion of each element.\n\t * @example\n\t * ```ts\n\t * collection.sort((userA, userB) => userA.createdTimestamp - userB.createdTimestamp);\n\t * ```\n\t */\n\tpublic sort(compareFunction: Comparator<K, V> = Collection.defaultSort) {\n\t\tconst entries = [...this.entries()];\n\t\tentries.sort((a, b): number => compareFunction(a[1], b[1], a[0], b[0]));\n\n\t\t// Perform clean-up\n\t\tsuper.clear();\n\n\t\t// Set the new entries\n\t\tfor (const [key, value] of entries) {\n\t\t\tsuper.set(key, value);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * The intersect method returns a new structure containing items where the keys and values are present in both original structures.\n\t *\n\t * @param other - The other Collection to filter against\n\t */\n\tpublic intersect<T>(other: ReadonlyCollection<K, T>): Collection<K, T> {\n\t\tconst coll = new this.constructor[Symbol.species]<K, T>();\n\t\tfor (const [key, value] of other) {\n\t\t\tif (this.has(key) && Object.is(value, this.get(key))) {\n\t\t\t\tcoll.set(key, value);\n\t\t\t}\n\t\t}\n\n\t\treturn coll;\n\t}\n\n\t/**\n\t * The subtract method returns a new structure containing items where the keys and values of the original structure are not present in the other.\n\t *\n\t * @param other - The other Collection to filter against\n\t */\n\tpublic subtract<T>(other: ReadonlyCollection<K, T>): Collection<K, V> {\n\t\tconst coll = new this.constructor[Symbol.species]<K, V>();\n\t\tfor (const [key, value] of this) {\n\t\t\tif (!other.has(key) || !Object.is(value, other.get(key))) {\n\t\t\t\tcoll.set(key, value);\n\t\t\t}\n\t\t}\n\n\t\treturn coll;\n\t}\n\n\t/**\n\t * The difference method returns a new structure containing items where the key is present in one of the original structures but not the other.\n\t *\n\t * @param other - The other Collection to filter against\n\t */\n\tpublic difference<T>(other: ReadonlyCollection<K, T>): Collection<K, T | V> {\n\t\tconst coll = new this.constructor[Symbol.species]<K, T | V>();\n\t\tfor (const [key, value] of other) {\n\t\t\tif (!this.has(key)) coll.set(key, value);\n\t\t}\n\n\t\tfor (const [key, value] of this) {\n\t\t\tif (!other.has(key)) coll.set(key, value);\n\t\t}\n\n\t\treturn coll;\n\t}\n\n\t/**\n\t * Merges two Collections together into a new Collection.\n\t *\n\t * @param other - The other Collection to merge with\n\t * @param whenInSelf - Function getting the result if the entry only exists in this Collection\n\t * @param whenInOther - Function getting the result if the entry only exists in the other Collection\n\t * @param whenInBoth - Function getting the result if the entry exists in both Collections\n\t * @example\n\t * ```ts\n\t * // Sums up the entries in two collections.\n\t * coll.merge(\n\t * other,\n\t * x => ({ keep: true, value: x }),\n\t * y => ({ keep: true, value: y }),\n\t * (x, y) => ({ keep: true, value: x + y }),\n\t * );\n\t * ```\n\t * @example\n\t * ```ts\n\t * // Intersects two collections in a left-biased manner.\n\t * coll.merge(\n\t * other,\n\t * x => ({ keep: false }),\n\t * y => ({ keep: false }),\n\t * (x, _) => ({ keep: true, value: x }),\n\t * );\n\t * ```\n\t */\n\tpublic merge<T, R>(\n\t\tother: ReadonlyCollection<K, T>,\n\t\twhenInSelf: (value: V, key: K) => Keep<R>,\n\t\twhenInOther: (valueOther: T, key: K) => Keep<R>,\n\t\twhenInBoth: (value: V, valueOther: T, key: K) => Keep<R>,\n\t): Collection<K, R> {\n\t\tconst coll = new this.constructor[Symbol.species]<K, R>();\n\t\tconst keys = new Set([...this.keys(), ...other.keys()]);\n\n\t\tfor (const key of keys) {\n\t\t\tconst hasInSelf = this.has(key);\n\t\t\tconst hasInOther = other.has(key);\n\n\t\t\tif (hasInSelf && hasInOther) {\n\t\t\t\tconst result = whenInBoth(this.get(key)!, other.get(key)!, key);\n\t\t\t\tif (result.keep) coll.set(key, result.value);\n\t\t\t} else if (hasInSelf) {\n\t\t\t\tconst result = whenInSelf(this.get(key)!, key);\n\t\t\t\tif (result.keep) coll.set(key, result.value);\n\t\t\t} else if (hasInOther) {\n\t\t\t\tconst result = whenInOther(other.get(key)!, key);\n\t\t\t\tif (result.keep) coll.set(key, result.value);\n\t\t\t}\n\t\t}\n\n\t\treturn coll;\n\t}\n\n\t/**\n\t * The sorted method sorts the items of a collection and returns it.\n\t * The sort is not necessarily stable in Node 10 or older.\n\t * The default sort order is according to string Unicode code points.\n\t *\n\t * @param compareFunction - Specifies a function that defines the sort order.\n\t * If omitted, the collection is sorted according to each character's Unicode code point value,\n\t * according to the string conversion of each element.\n\t * @example\n\t * ```ts\n\t * collection.sorted((userA, userB) => userA.createdTimestamp - userB.createdTimestamp);\n\t * ```\n\t */\n\tpublic sorted(compareFunction: Comparator<K, V> = Collection.defaultSort) {\n\t\treturn new this.constructor[Symbol.species](this).sort((av, bv, ak, bk) => compareFunction(av, bv, ak, bk));\n\t}\n\n\tpublic toJSON() {\n\t\t// toJSON is called recursively by JSON.stringify.\n\t\treturn [...this.values()];\n\t}\n\n\tprivate static defaultSort<V>(firstValue: V, secondValue: V): number {\n\t\treturn Number(firstValue > secondValue) || Number(firstValue === secondValue) - 1;\n\t}\n\n\t/**\n\t * Creates a Collection from a list of entries.\n\t *\n\t * @param entries - The list of entries\n\t * @param combine - Function to combine an existing entry with a new one\n\t * @example\n\t * ```ts\n\t * Collection.combineEntries([[\"a\", 1], [\"b\", 2], [\"a\", 2]], (x, y) => x + y);\n\t * // returns Collection { \"a\" => 3, \"b\" => 2 }\n\t * ```\n\t */\n\tpublic static combineEntries<K, V>(\n\t\tentries: Iterable<[K, V]>,\n\t\tcombine: (firstValue: V, secondValue: V, key: K) => V,\n\t): Collection<K, V> {\n\t\tconst coll = new Collection<K, V>();\n\t\tfor (const [key, value] of entries) {\n\t\t\tif (coll.has(key)) {\n\t\t\t\tcoll.set(key, combine(coll.get(key)!, value, key));\n\t\t\t} else {\n\t\t\t\tcoll.set(key, value);\n\t\t\t}\n\t\t}\n\n\t\treturn coll;\n\t}\n}\n\n/**\n * @internal\n */\nexport type Keep<V> = { keep: false } | { keep: true; value: V };\n\n/**\n * @internal\n */\nexport type Comparator<K, V> = (firstValue: V, secondValue: V, firstKey: K, secondKey: K) => number;\n"],"mappings":"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","names":[]} \ No newline at end of file
diff --git a/node_modules/@discordjs/collection/dist/index.mjs b/node_modules/@discordjs/collection/dist/index.mjs
new file mode 100644
index 0000000..c31c9ee
--- /dev/null
+++ b/node_modules/@discordjs/collection/dist/index.mjs
@@ -0,0 +1,517 @@
+var __defProp = Object.defineProperty;
+var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
+
+// src/collection.ts
+var Collection = class _Collection extends Map {
+ static {
+ __name(this, "Collection");
+ }
+ /**
+ * Obtains the value of the given key if it exists, otherwise sets and returns the value provided by the default value generator.
+ *
+ * @param key - The key to get if it exists, or set otherwise
+ * @param defaultValueGenerator - A function that generates the default value
+ * @example
+ * ```ts
+ * collection.ensure(guildId, () => defaultGuildConfig);
+ * ```
+ */
+ ensure(key, defaultValueGenerator) {
+ if (this.has(key))
+ return this.get(key);
+ if (typeof defaultValueGenerator !== "function")
+ throw new TypeError(`${defaultValueGenerator} is not a function`);
+ const defaultValue = defaultValueGenerator(key, this);
+ this.set(key, defaultValue);
+ return defaultValue;
+ }
+ /**
+ * Checks if all of the elements exist in the collection.
+ *
+ * @param keys - The keys of the elements to check for
+ * @returns `true` if all of the elements exist, `false` if at least one does not exist.
+ */
+ hasAll(...keys) {
+ return keys.every((key) => super.has(key));
+ }
+ /**
+ * Checks if any of the elements exist in the collection.
+ *
+ * @param keys - The keys of the elements to check for
+ * @returns `true` if any of the elements exist, `false` if none exist.
+ */
+ hasAny(...keys) {
+ return keys.some((key) => super.has(key));
+ }
+ first(amount) {
+ if (amount === void 0)
+ return this.values().next().value;
+ if (amount < 0)
+ return this.last(amount * -1);
+ amount = Math.min(this.size, amount);
+ const iter = this.values();
+ return Array.from({ length: amount }, () => iter.next().value);
+ }
+ firstKey(amount) {
+ if (amount === void 0)
+ return this.keys().next().value;
+ if (amount < 0)
+ return this.lastKey(amount * -1);
+ amount = Math.min(this.size, amount);
+ const iter = this.keys();
+ return Array.from({ length: amount }, () => iter.next().value);
+ }
+ last(amount) {
+ const arr = [...this.values()];
+ if (amount === void 0)
+ return arr[arr.length - 1];
+ if (amount < 0)
+ return this.first(amount * -1);
+ if (!amount)
+ return [];
+ return arr.slice(-amount);
+ }
+ lastKey(amount) {
+ const arr = [...this.keys()];
+ if (amount === void 0)
+ return arr[arr.length - 1];
+ if (amount < 0)
+ return this.firstKey(amount * -1);
+ if (!amount)
+ return [];
+ return arr.slice(-amount);
+ }
+ /**
+ * Identical to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/at | Array.at()}.
+ * Returns the item at a given index, allowing for positive and negative integers.
+ * Negative integers count back from the last item in the collection.
+ *
+ * @param index - The index of the element to obtain
+ */
+ at(index) {
+ index = Math.floor(index);
+ const arr = [...this.values()];
+ return arr.at(index);
+ }
+ /**
+ * Identical to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/at | Array.at()}.
+ * Returns the key at a given index, allowing for positive and negative integers.
+ * Negative integers count back from the last item in the collection.
+ *
+ * @param index - The index of the key to obtain
+ */
+ keyAt(index) {
+ index = Math.floor(index);
+ const arr = [...this.keys()];
+ return arr.at(index);
+ }
+ random(amount) {
+ const arr = [...this.values()];
+ if (amount === void 0)
+ return arr[Math.floor(Math.random() * arr.length)];
+ if (!arr.length || !amount)
+ return [];
+ return Array.from(
+ { length: Math.min(amount, arr.length) },
+ () => arr.splice(Math.floor(Math.random() * arr.length), 1)[0]
+ );
+ }
+ randomKey(amount) {
+ const arr = [...this.keys()];
+ if (amount === void 0)
+ return arr[Math.floor(Math.random() * arr.length)];
+ if (!arr.length || !amount)
+ return [];
+ return Array.from(
+ { length: Math.min(amount, arr.length) },
+ () => arr.splice(Math.floor(Math.random() * arr.length), 1)[0]
+ );
+ }
+ /**
+ * Identical to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse | Array.reverse()}
+ * but returns a Collection instead of an Array.
+ */
+ reverse() {
+ const entries = [...this.entries()].reverse();
+ this.clear();
+ for (const [key, value] of entries)
+ this.set(key, value);
+ return this;
+ }
+ find(fn, thisArg) {
+ if (typeof fn !== "function")
+ throw new TypeError(`${fn} is not a function`);
+ if (thisArg !== void 0)
+ fn = fn.bind(thisArg);
+ for (const [key, val] of this) {
+ if (fn(val, key, this))
+ return val;
+ }
+ return void 0;
+ }
+ findKey(fn, thisArg) {
+ if (typeof fn !== "function")
+ throw new TypeError(`${fn} is not a function`);
+ if (thisArg !== void 0)
+ fn = fn.bind(thisArg);
+ for (const [key, val] of this) {
+ if (fn(val, key, this))
+ return key;
+ }
+ return void 0;
+ }
+ sweep(fn, thisArg) {
+ if (typeof fn !== "function")
+ throw new TypeError(`${fn} is not a function`);
+ if (thisArg !== void 0)
+ fn = fn.bind(thisArg);
+ const previousSize = this.size;
+ for (const [key, val] of this) {
+ if (fn(val, key, this))
+ this.delete(key);
+ }
+ return previousSize - this.size;
+ }
+ filter(fn, thisArg) {
+ if (typeof fn !== "function")
+ throw new TypeError(`${fn} is not a function`);
+ if (thisArg !== void 0)
+ fn = fn.bind(thisArg);
+ const results = new this.constructor[Symbol.species]();
+ for (const [key, val] of this) {
+ if (fn(val, key, this))
+ results.set(key, val);
+ }
+ return results;
+ }
+ partition(fn, thisArg) {
+ if (typeof fn !== "function")
+ throw new TypeError(`${fn} is not a function`);
+ if (thisArg !== void 0)
+ fn = fn.bind(thisArg);
+ const results = [
+ new this.constructor[Symbol.species](),
+ new this.constructor[Symbol.species]()
+ ];
+ for (const [key, val] of this) {
+ if (fn(val, key, this)) {
+ results[0].set(key, val);
+ } else {
+ results[1].set(key, val);
+ }
+ }
+ return results;
+ }
+ flatMap(fn, thisArg) {
+ const collections = this.map(fn, thisArg);
+ return new this.constructor[Symbol.species]().concat(...collections);
+ }
+ map(fn, thisArg) {
+ if (typeof fn !== "function")
+ throw new TypeError(`${fn} is not a function`);
+ if (thisArg !== void 0)
+ fn = fn.bind(thisArg);
+ const iter = this.entries();
+ return Array.from({ length: this.size }, () => {
+ const [key, value] = iter.next().value;
+ return fn(value, key, this);
+ });
+ }
+ mapValues(fn, thisArg) {
+ if (typeof fn !== "function")
+ throw new TypeError(`${fn} is not a function`);
+ if (thisArg !== void 0)
+ fn = fn.bind(thisArg);
+ const coll = new this.constructor[Symbol.species]();
+ for (const [key, val] of this)
+ coll.set(key, fn(val, key, this));
+ return coll;
+ }
+ some(fn, thisArg) {
+ if (typeof fn !== "function")
+ throw new TypeError(`${fn} is not a function`);
+ if (thisArg !== void 0)
+ fn = fn.bind(thisArg);
+ for (const [key, val] of this) {
+ if (fn(val, key, this))
+ return true;
+ }
+ return false;
+ }
+ every(fn, thisArg) {
+ if (typeof fn !== "function")
+ throw new TypeError(`${fn} is not a function`);
+ if (thisArg !== void 0)
+ fn = fn.bind(thisArg);
+ for (const [key, val] of this) {
+ if (!fn(val, key, this))
+ return false;
+ }
+ return true;
+ }
+ /**
+ * Applies a function to produce a single value. Identical in behavior to
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce | Array.reduce()}.
+ *
+ * @param fn - Function used to reduce, taking four arguments; `accumulator`, `currentValue`, `currentKey`,
+ * and `collection`
+ * @param initialValue - Starting value for the accumulator
+ * @example
+ * ```ts
+ * collection.reduce((acc, guild) => acc + guild.memberCount, 0);
+ * ```
+ */
+ reduce(fn, initialValue) {
+ if (typeof fn !== "function")
+ throw new TypeError(`${fn} is not a function`);
+ let accumulator;
+ const iterator = this.entries();
+ if (initialValue === void 0) {
+ if (this.size === 0)
+ throw new TypeError("Reduce of empty collection with no initial value");
+ accumulator = iterator.next().value[1];
+ } else {
+ accumulator = initialValue;
+ }
+ for (const [key, value] of iterator) {
+ accumulator = fn(accumulator, value, key, this);
+ }
+ return accumulator;
+ }
+ each(fn, thisArg) {
+ if (typeof fn !== "function")
+ throw new TypeError(`${fn} is not a function`);
+ if (thisArg !== void 0)
+ fn = fn.bind(thisArg);
+ for (const [key, value] of this) {
+ fn(value, key, this);
+ }
+ return this;
+ }
+ tap(fn, thisArg) {
+ if (typeof fn !== "function")
+ throw new TypeError(`${fn} is not a function`);
+ if (thisArg !== void 0)
+ fn = fn.bind(thisArg);
+ fn(this);
+ return this;
+ }
+ /**
+ * Creates an identical shallow copy of this collection.
+ *
+ * @example
+ * ```ts
+ * const newColl = someColl.clone();
+ * ```
+ */
+ clone() {
+ return new this.constructor[Symbol.species](this);
+ }
+ /**
+ * Combines this collection with others into a new collection. None of the source collections are modified.
+ *
+ * @param collections - Collections to merge
+ * @example
+ * ```ts
+ * const newColl = someColl.concat(someOtherColl, anotherColl, ohBoyAColl);
+ * ```
+ */
+ concat(...collections) {
+ const newColl = this.clone();
+ for (const coll of collections) {
+ for (const [key, val] of coll)
+ newColl.set(key, val);
+ }
+ return newColl;
+ }
+ /**
+ * Checks if this collection shares identical items with another.
+ * This is different to checking for equality using equal-signs, because
+ * the collections may be different objects, but contain the same data.
+ *
+ * @param collection - Collection to compare with
+ * @returns Whether the collections have identical contents
+ */
+ equals(collection) {
+ if (!collection)
+ return false;
+ if (this === collection)
+ return true;
+ if (this.size !== collection.size)
+ return false;
+ for (const [key, value] of this) {
+ if (!collection.has(key) || value !== collection.get(key)) {
+ return false;
+ }
+ }
+ return true;
+ }
+ /**
+ * The sort method sorts the items of a collection in place and returns it.
+ * The sort is not necessarily stable in Node 10 or older.
+ * The default sort order is according to string Unicode code points.
+ *
+ * @param compareFunction - Specifies a function that defines the sort order.
+ * If omitted, the collection is sorted according to each character's Unicode code point value, according to the string conversion of each element.
+ * @example
+ * ```ts
+ * collection.sort((userA, userB) => userA.createdTimestamp - userB.createdTimestamp);
+ * ```
+ */
+ sort(compareFunction = _Collection.defaultSort) {
+ const entries = [...this.entries()];
+ entries.sort((a, b) => compareFunction(a[1], b[1], a[0], b[0]));
+ super.clear();
+ for (const [key, value] of entries) {
+ super.set(key, value);
+ }
+ return this;
+ }
+ /**
+ * The intersect method returns a new structure containing items where the keys and values are present in both original structures.
+ *
+ * @param other - The other Collection to filter against
+ */
+ intersect(other) {
+ const coll = new this.constructor[Symbol.species]();
+ for (const [key, value] of other) {
+ if (this.has(key) && Object.is(value, this.get(key))) {
+ coll.set(key, value);
+ }
+ }
+ return coll;
+ }
+ /**
+ * The subtract method returns a new structure containing items where the keys and values of the original structure are not present in the other.
+ *
+ * @param other - The other Collection to filter against
+ */
+ subtract(other) {
+ const coll = new this.constructor[Symbol.species]();
+ for (const [key, value] of this) {
+ if (!other.has(key) || !Object.is(value, other.get(key))) {
+ coll.set(key, value);
+ }
+ }
+ return coll;
+ }
+ /**
+ * The difference method returns a new structure containing items where the key is present in one of the original structures but not the other.
+ *
+ * @param other - The other Collection to filter against
+ */
+ difference(other) {
+ const coll = new this.constructor[Symbol.species]();
+ for (const [key, value] of other) {
+ if (!this.has(key))
+ coll.set(key, value);
+ }
+ for (const [key, value] of this) {
+ if (!other.has(key))
+ coll.set(key, value);
+ }
+ return coll;
+ }
+ /**
+ * Merges two Collections together into a new Collection.
+ *
+ * @param other - The other Collection to merge with
+ * @param whenInSelf - Function getting the result if the entry only exists in this Collection
+ * @param whenInOther - Function getting the result if the entry only exists in the other Collection
+ * @param whenInBoth - Function getting the result if the entry exists in both Collections
+ * @example
+ * ```ts
+ * // Sums up the entries in two collections.
+ * coll.merge(
+ * other,
+ * x => ({ keep: true, value: x }),
+ * y => ({ keep: true, value: y }),
+ * (x, y) => ({ keep: true, value: x + y }),
+ * );
+ * ```
+ * @example
+ * ```ts
+ * // Intersects two collections in a left-biased manner.
+ * coll.merge(
+ * other,
+ * x => ({ keep: false }),
+ * y => ({ keep: false }),
+ * (x, _) => ({ keep: true, value: x }),
+ * );
+ * ```
+ */
+ merge(other, whenInSelf, whenInOther, whenInBoth) {
+ const coll = new this.constructor[Symbol.species]();
+ const keys = /* @__PURE__ */ new Set([...this.keys(), ...other.keys()]);
+ for (const key of keys) {
+ const hasInSelf = this.has(key);
+ const hasInOther = other.has(key);
+ if (hasInSelf && hasInOther) {
+ const result = whenInBoth(this.get(key), other.get(key), key);
+ if (result.keep)
+ coll.set(key, result.value);
+ } else if (hasInSelf) {
+ const result = whenInSelf(this.get(key), key);
+ if (result.keep)
+ coll.set(key, result.value);
+ } else if (hasInOther) {
+ const result = whenInOther(other.get(key), key);
+ if (result.keep)
+ coll.set(key, result.value);
+ }
+ }
+ return coll;
+ }
+ /**
+ * The sorted method sorts the items of a collection and returns it.
+ * The sort is not necessarily stable in Node 10 or older.
+ * The default sort order is according to string Unicode code points.
+ *
+ * @param compareFunction - Specifies a function that defines the sort order.
+ * If omitted, the collection is sorted according to each character's Unicode code point value,
+ * according to the string conversion of each element.
+ * @example
+ * ```ts
+ * collection.sorted((userA, userB) => userA.createdTimestamp - userB.createdTimestamp);
+ * ```
+ */
+ sorted(compareFunction = _Collection.defaultSort) {
+ return new this.constructor[Symbol.species](this).sort((av, bv, ak, bk) => compareFunction(av, bv, ak, bk));
+ }
+ toJSON() {
+ return [...this.values()];
+ }
+ static defaultSort(firstValue, secondValue) {
+ return Number(firstValue > secondValue) || Number(firstValue === secondValue) - 1;
+ }
+ /**
+ * Creates a Collection from a list of entries.
+ *
+ * @param entries - The list of entries
+ * @param combine - Function to combine an existing entry with a new one
+ * @example
+ * ```ts
+ * Collection.combineEntries([["a", 1], ["b", 2], ["a", 2]], (x, y) => x + y);
+ * // returns Collection { "a" => 3, "b" => 2 }
+ * ```
+ */
+ static combineEntries(entries, combine) {
+ const coll = new _Collection();
+ for (const [key, value] of entries) {
+ if (coll.has(key)) {
+ coll.set(key, combine(coll.get(key), value, key));
+ } else {
+ coll.set(key, value);
+ }
+ }
+ return coll;
+ }
+};
+
+// src/index.ts
+var version = "1.5.3";
+export {
+ Collection,
+ version
+};
+//# sourceMappingURL=index.mjs.map \ No newline at end of file
diff --git a/node_modules/@discordjs/collection/dist/index.mjs.map b/node_modules/@discordjs/collection/dist/index.mjs.map
new file mode 100644
index 0000000..fcf72ab
--- /dev/null
+++ b/node_modules/@discordjs/collection/dist/index.mjs.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/collection.ts","../src/index.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\n/**\n * @internal\n */\nexport interface CollectionConstructor {\n\tnew (): Collection<unknown, unknown>;\n\tnew <K, V>(entries?: readonly (readonly [K, V])[] | null): Collection<K, V>;\n\tnew <K, V>(iterable: Iterable<readonly [K, V]>): Collection<K, V>;\n\treadonly prototype: Collection<unknown, unknown>;\n\treadonly [Symbol.species]: CollectionConstructor;\n}\n\n/**\n * Represents an immutable version of a collection\n */\nexport type ReadonlyCollection<K, V> = Omit<\n\tCollection<K, V>,\n\t'delete' | 'ensure' | 'forEach' | 'get' | 'reverse' | 'set' | 'sort' | 'sweep'\n> &\n\tReadonlyMap<K, V>;\n\n/**\n * Separate interface for the constructor so that emitted js does not have a constructor that overwrites itself\n *\n * @internal\n */\nexport interface Collection<K, V> extends Map<K, V> {\n\tconstructor: CollectionConstructor;\n}\n\n/**\n * A Map with additional utility methods. This is used throughout discord.js rather than Arrays for anything that has\n * an ID, for significantly improved performance and ease-of-use.\n *\n * @typeParam K - The key type this collection holds\n * @typeParam V - The value type this collection holds\n */\nexport class Collection<K, V> extends Map<K, V> {\n\t/**\n\t * Obtains the value of the given key if it exists, otherwise sets and returns the value provided by the default value generator.\n\t *\n\t * @param key - The key to get if it exists, or set otherwise\n\t * @param defaultValueGenerator - A function that generates the default value\n\t * @example\n\t * ```ts\n\t * collection.ensure(guildId, () => defaultGuildConfig);\n\t * ```\n\t */\n\tpublic ensure(key: K, defaultValueGenerator: (key: K, collection: this) => V): V {\n\t\tif (this.has(key)) return this.get(key)!;\n\t\tif (typeof defaultValueGenerator !== 'function') throw new TypeError(`${defaultValueGenerator} is not a function`);\n\t\tconst defaultValue = defaultValueGenerator(key, this);\n\t\tthis.set(key, defaultValue);\n\t\treturn defaultValue;\n\t}\n\n\t/**\n\t * Checks if all of the elements exist in the collection.\n\t *\n\t * @param keys - The keys of the elements to check for\n\t * @returns `true` if all of the elements exist, `false` if at least one does not exist.\n\t */\n\tpublic hasAll(...keys: K[]) {\n\t\treturn keys.every((key) => super.has(key));\n\t}\n\n\t/**\n\t * Checks if any of the elements exist in the collection.\n\t *\n\t * @param keys - The keys of the elements to check for\n\t * @returns `true` if any of the elements exist, `false` if none exist.\n\t */\n\tpublic hasAny(...keys: K[]) {\n\t\treturn keys.some((key) => super.has(key));\n\t}\n\n\t/**\n\t * Obtains the first value(s) in this collection.\n\t *\n\t * @param amount - Amount of values to obtain from the beginning\n\t * @returns A single value if no amount is provided or an array of values, starting from the end if amount is negative\n\t */\n\tpublic first(): V | undefined;\n\tpublic first(amount: number): V[];\n\tpublic first(amount?: number): V | V[] | undefined {\n\t\tif (amount === undefined) return this.values().next().value;\n\t\tif (amount < 0) return this.last(amount * -1);\n\t\tamount = Math.min(this.size, amount);\n\t\tconst iter = this.values();\n\t\treturn Array.from({ length: amount }, (): V => iter.next().value);\n\t}\n\n\t/**\n\t * Obtains the first key(s) in this collection.\n\t *\n\t * @param amount - Amount of keys to obtain from the beginning\n\t * @returns A single key if no amount is provided or an array of keys, starting from the end if\n\t * amount is negative\n\t */\n\tpublic firstKey(): K | undefined;\n\tpublic firstKey(amount: number): K[];\n\tpublic firstKey(amount?: number): K | K[] | undefined {\n\t\tif (amount === undefined) return this.keys().next().value;\n\t\tif (amount < 0) return this.lastKey(amount * -1);\n\t\tamount = Math.min(this.size, amount);\n\t\tconst iter = this.keys();\n\t\treturn Array.from({ length: amount }, (): K => iter.next().value);\n\t}\n\n\t/**\n\t * Obtains the last value(s) in this collection.\n\t *\n\t * @param amount - Amount of values to obtain from the end\n\t * @returns A single value if no amount is provided or an array of values, starting from the start if\n\t * amount is negative\n\t */\n\tpublic last(): V | undefined;\n\tpublic last(amount: number): V[];\n\tpublic last(amount?: number): V | V[] | undefined {\n\t\tconst arr = [...this.values()];\n\t\tif (amount === undefined) return arr[arr.length - 1];\n\t\tif (amount < 0) return this.first(amount * -1);\n\t\tif (!amount) return [];\n\t\treturn arr.slice(-amount);\n\t}\n\n\t/**\n\t * Obtains the last key(s) in this collection.\n\t *\n\t * @param amount - Amount of keys to obtain from the end\n\t * @returns A single key if no amount is provided or an array of keys, starting from the start if\n\t * amount is negative\n\t */\n\tpublic lastKey(): K | undefined;\n\tpublic lastKey(amount: number): K[];\n\tpublic lastKey(amount?: number): K | K[] | undefined {\n\t\tconst arr = [...this.keys()];\n\t\tif (amount === undefined) return arr[arr.length - 1];\n\t\tif (amount < 0) return this.firstKey(amount * -1);\n\t\tif (!amount) return [];\n\t\treturn arr.slice(-amount);\n\t}\n\n\t/**\n\t * Identical to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/at | Array.at()}.\n\t * Returns the item at a given index, allowing for positive and negative integers.\n\t * Negative integers count back from the last item in the collection.\n\t *\n\t * @param index - The index of the element to obtain\n\t */\n\tpublic at(index: number) {\n\t\tindex = Math.floor(index);\n\t\tconst arr = [...this.values()];\n\t\treturn arr.at(index);\n\t}\n\n\t/**\n\t * Identical to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/at | Array.at()}.\n\t * Returns the key at a given index, allowing for positive and negative integers.\n\t * Negative integers count back from the last item in the collection.\n\t *\n\t * @param index - The index of the key to obtain\n\t */\n\tpublic keyAt(index: number) {\n\t\tindex = Math.floor(index);\n\t\tconst arr = [...this.keys()];\n\t\treturn arr.at(index);\n\t}\n\n\t/**\n\t * Obtains unique random value(s) from this collection.\n\t *\n\t * @param amount - Amount of values to obtain randomly\n\t * @returns A single value if no amount is provided or an array of values\n\t */\n\tpublic random(): V | undefined;\n\tpublic random(amount: number): V[];\n\tpublic random(amount?: number): V | V[] | undefined {\n\t\tconst arr = [...this.values()];\n\t\tif (amount === undefined) return arr[Math.floor(Math.random() * arr.length)];\n\t\tif (!arr.length || !amount) return [];\n\t\treturn Array.from(\n\t\t\t{ length: Math.min(amount, arr.length) },\n\t\t\t(): V => arr.splice(Math.floor(Math.random() * arr.length), 1)[0]!,\n\t\t);\n\t}\n\n\t/**\n\t * Obtains unique random key(s) from this collection.\n\t *\n\t * @param amount - Amount of keys to obtain randomly\n\t * @returns A single key if no amount is provided or an array\n\t */\n\tpublic randomKey(): K | undefined;\n\tpublic randomKey(amount: number): K[];\n\tpublic randomKey(amount?: number): K | K[] | undefined {\n\t\tconst arr = [...this.keys()];\n\t\tif (amount === undefined) return arr[Math.floor(Math.random() * arr.length)];\n\t\tif (!arr.length || !amount) return [];\n\t\treturn Array.from(\n\t\t\t{ length: Math.min(amount, arr.length) },\n\t\t\t(): K => arr.splice(Math.floor(Math.random() * arr.length), 1)[0]!,\n\t\t);\n\t}\n\n\t/**\n\t * Identical to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse | Array.reverse()}\n\t * but returns a Collection instead of an Array.\n\t */\n\tpublic reverse() {\n\t\tconst entries = [...this.entries()].reverse();\n\t\tthis.clear();\n\t\tfor (const [key, value] of entries) this.set(key, value);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Searches for a single item where the given function returns a truthy value. This behaves like\n\t * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find | Array.find()}.\n\t * All collections used in Discord.js are mapped using their `id` property, and if you want to find by id you\n\t * should use the `get` method. See\n\t * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/get | MDN} for details.\n\t *\n\t * @param fn - The function to test with (should return boolean)\n\t * @param thisArg - Value to use as `this` when executing function\n\t * @example\n\t * ```ts\n\t * collection.find(user => user.username === 'Bob');\n\t * ```\n\t */\n\tpublic find<V2 extends V>(fn: (value: V, key: K, collection: this) => value is V2): V2 | undefined;\n\tpublic find(fn: (value: V, key: K, collection: this) => unknown): V | undefined;\n\tpublic find<This, V2 extends V>(\n\t\tfn: (this: This, value: V, key: K, collection: this) => value is V2,\n\t\tthisArg: This,\n\t): V2 | undefined;\n\tpublic find<This>(fn: (this: This, value: V, key: K, collection: this) => unknown, thisArg: This): V | undefined;\n\tpublic find(fn: (value: V, key: K, collection: this) => unknown, thisArg?: unknown): V | undefined {\n\t\tif (typeof fn !== 'function') throw new TypeError(`${fn} is not a function`);\n\t\tif (thisArg !== undefined) fn = fn.bind(thisArg);\n\t\tfor (const [key, val] of this) {\n\t\t\tif (fn(val, key, this)) return val;\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\t/**\n\t * Searches for the key of a single item where the given function returns a truthy value. This behaves like\n\t * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex | Array.findIndex()},\n\t * but returns the key rather than the positional index.\n\t *\n\t * @param fn - The function to test with (should return boolean)\n\t * @param thisArg - Value to use as `this` when executing function\n\t * @example\n\t * ```ts\n\t * collection.findKey(user => user.username === 'Bob');\n\t * ```\n\t */\n\tpublic findKey<K2 extends K>(fn: (value: V, key: K, collection: this) => key is K2): K2 | undefined;\n\tpublic findKey(fn: (value: V, key: K, collection: this) => unknown): K | undefined;\n\tpublic findKey<This, K2 extends K>(\n\t\tfn: (this: This, value: V, key: K, collection: this) => key is K2,\n\t\tthisArg: This,\n\t): K2 | undefined;\n\tpublic findKey<This>(fn: (this: This, value: V, key: K, collection: this) => unknown, thisArg: This): K | undefined;\n\tpublic findKey(fn: (value: V, key: K, collection: this) => unknown, thisArg?: unknown): K | undefined {\n\t\tif (typeof fn !== 'function') throw new TypeError(`${fn} is not a function`);\n\t\tif (thisArg !== undefined) fn = fn.bind(thisArg);\n\t\tfor (const [key, val] of this) {\n\t\t\tif (fn(val, key, this)) return key;\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\t/**\n\t * Removes items that satisfy the provided filter function.\n\t *\n\t * @param fn - Function used to test (should return a boolean)\n\t * @param thisArg - Value to use as `this` when executing function\n\t * @returns The number of removed entries\n\t */\n\tpublic sweep(fn: (value: V, key: K, collection: this) => unknown): number;\n\tpublic sweep<T>(fn: (this: T, value: V, key: K, collection: this) => unknown, thisArg: T): number;\n\tpublic sweep(fn: (value: V, key: K, collection: this) => unknown, thisArg?: unknown): number {\n\t\tif (typeof fn !== 'function') throw new TypeError(`${fn} is not a function`);\n\t\tif (thisArg !== undefined) fn = fn.bind(thisArg);\n\t\tconst previousSize = this.size;\n\t\tfor (const [key, val] of this) {\n\t\t\tif (fn(val, key, this)) this.delete(key);\n\t\t}\n\n\t\treturn previousSize - this.size;\n\t}\n\n\t/**\n\t * Identical to\n\t * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter | Array.filter()},\n\t * but returns a Collection instead of an Array.\n\t *\n\t * @param fn - The function to test with (should return boolean)\n\t * @param thisArg - Value to use as `this` when executing function\n\t * @example\n\t * ```ts\n\t * collection.filter(user => user.username === 'Bob');\n\t * ```\n\t */\n\tpublic filter<K2 extends K>(fn: (value: V, key: K, collection: this) => key is K2): Collection<K2, V>;\n\tpublic filter<V2 extends V>(fn: (value: V, key: K, collection: this) => value is V2): Collection<K, V2>;\n\tpublic filter(fn: (value: V, key: K, collection: this) => unknown): Collection<K, V>;\n\tpublic filter<This, K2 extends K>(\n\t\tfn: (this: This, value: V, key: K, collection: this) => key is K2,\n\t\tthisArg: This,\n\t): Collection<K2, V>;\n\tpublic filter<This, V2 extends V>(\n\t\tfn: (this: This, value: V, key: K, collection: this) => value is V2,\n\t\tthisArg: This,\n\t): Collection<K, V2>;\n\tpublic filter<This>(fn: (this: This, value: V, key: K, collection: this) => unknown, thisArg: This): Collection<K, V>;\n\tpublic filter(fn: (value: V, key: K, collection: this) => unknown, thisArg?: unknown): Collection<K, V> {\n\t\tif (typeof fn !== 'function') throw new TypeError(`${fn} is not a function`);\n\t\tif (thisArg !== undefined) fn = fn.bind(thisArg);\n\t\tconst results = new this.constructor[Symbol.species]<K, V>();\n\t\tfor (const [key, val] of this) {\n\t\t\tif (fn(val, key, this)) results.set(key, val);\n\t\t}\n\n\t\treturn results;\n\t}\n\n\t/**\n\t * Partitions the collection into two collections where the first collection\n\t * contains the items that passed and the second contains the items that failed.\n\t *\n\t * @param fn - Function used to test (should return a boolean)\n\t * @param thisArg - Value to use as `this` when executing function\n\t * @example\n\t * ```ts\n\t * const [big, small] = collection.partition(guild => guild.memberCount > 250);\n\t * ```\n\t */\n\tpublic partition<K2 extends K>(\n\t\tfn: (value: V, key: K, collection: this) => key is K2,\n\t): [Collection<K2, V>, Collection<Exclude<K, K2>, V>];\n\tpublic partition<V2 extends V>(\n\t\tfn: (value: V, key: K, collection: this) => value is V2,\n\t): [Collection<K, V2>, Collection<K, Exclude<V, V2>>];\n\tpublic partition(fn: (value: V, key: K, collection: this) => unknown): [Collection<K, V>, Collection<K, V>];\n\tpublic partition<This, K2 extends K>(\n\t\tfn: (this: This, value: V, key: K, collection: this) => key is K2,\n\t\tthisArg: This,\n\t): [Collection<K2, V>, Collection<Exclude<K, K2>, V>];\n\tpublic partition<This, V2 extends V>(\n\t\tfn: (this: This, value: V, key: K, collection: this) => value is V2,\n\t\tthisArg: This,\n\t): [Collection<K, V2>, Collection<K, Exclude<V, V2>>];\n\tpublic partition<This>(\n\t\tfn: (this: This, value: V, key: K, collection: this) => unknown,\n\t\tthisArg: This,\n\t): [Collection<K, V>, Collection<K, V>];\n\tpublic partition(\n\t\tfn: (value: V, key: K, collection: this) => unknown,\n\t\tthisArg?: unknown,\n\t): [Collection<K, V>, Collection<K, V>] {\n\t\tif (typeof fn !== 'function') throw new TypeError(`${fn} is not a function`);\n\t\tif (thisArg !== undefined) fn = fn.bind(thisArg);\n\t\tconst results: [Collection<K, V>, Collection<K, V>] = [\n\t\t\tnew this.constructor[Symbol.species]<K, V>(),\n\t\t\tnew this.constructor[Symbol.species]<K, V>(),\n\t\t];\n\t\tfor (const [key, val] of this) {\n\t\t\tif (fn(val, key, this)) {\n\t\t\t\tresults[0].set(key, val);\n\t\t\t} else {\n\t\t\t\tresults[1].set(key, val);\n\t\t\t}\n\t\t}\n\n\t\treturn results;\n\t}\n\n\t/**\n\t * Maps each item into a Collection, then joins the results into a single Collection. Identical in behavior to\n\t * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flatMap | Array.flatMap()}.\n\t *\n\t * @param fn - Function that produces a new Collection\n\t * @param thisArg - Value to use as `this` when executing function\n\t * @example\n\t * ```ts\n\t * collection.flatMap(guild => guild.members.cache);\n\t * ```\n\t */\n\tpublic flatMap<T>(fn: (value: V, key: K, collection: this) => Collection<K, T>): Collection<K, T>;\n\tpublic flatMap<T, This>(\n\t\tfn: (this: This, value: V, key: K, collection: this) => Collection<K, T>,\n\t\tthisArg: This,\n\t): Collection<K, T>;\n\tpublic flatMap<T>(fn: (value: V, key: K, collection: this) => Collection<K, T>, thisArg?: unknown): Collection<K, T> {\n\t\t// eslint-disable-next-line unicorn/no-array-method-this-argument\n\t\tconst collections = this.map(fn, thisArg);\n\t\treturn new this.constructor[Symbol.species]<K, T>().concat(...collections);\n\t}\n\n\t/**\n\t * Maps each item to another value into an array. Identical in behavior to\n\t * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map | Array.map()}.\n\t *\n\t * @param fn - Function that produces an element of the new array, taking three arguments\n\t * @param thisArg - Value to use as `this` when executing function\n\t * @example\n\t * ```ts\n\t * collection.map(user => user.tag);\n\t * ```\n\t */\n\tpublic map<T>(fn: (value: V, key: K, collection: this) => T): T[];\n\tpublic map<This, T>(fn: (this: This, value: V, key: K, collection: this) => T, thisArg: This): T[];\n\tpublic map<T>(fn: (value: V, key: K, collection: this) => T, thisArg?: unknown): T[] {\n\t\tif (typeof fn !== 'function') throw new TypeError(`${fn} is not a function`);\n\t\tif (thisArg !== undefined) fn = fn.bind(thisArg);\n\t\tconst iter = this.entries();\n\t\treturn Array.from({ length: this.size }, (): T => {\n\t\t\tconst [key, value] = iter.next().value;\n\t\t\treturn fn(value, key, this);\n\t\t});\n\t}\n\n\t/**\n\t * Maps each item to another value into a collection. Identical in behavior to\n\t * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map | Array.map()}.\n\t *\n\t * @param fn - Function that produces an element of the new collection, taking three arguments\n\t * @param thisArg - Value to use as `this` when executing function\n\t * @example\n\t * ```ts\n\t * collection.mapValues(user => user.tag);\n\t * ```\n\t */\n\tpublic mapValues<T>(fn: (value: V, key: K, collection: this) => T): Collection<K, T>;\n\tpublic mapValues<This, T>(fn: (this: This, value: V, key: K, collection: this) => T, thisArg: This): Collection<K, T>;\n\tpublic mapValues<T>(fn: (value: V, key: K, collection: this) => T, thisArg?: unknown): Collection<K, T> {\n\t\tif (typeof fn !== 'function') throw new TypeError(`${fn} is not a function`);\n\t\tif (thisArg !== undefined) fn = fn.bind(thisArg);\n\t\tconst coll = new this.constructor[Symbol.species]<K, T>();\n\t\tfor (const [key, val] of this) coll.set(key, fn(val, key, this));\n\t\treturn coll;\n\t}\n\n\t/**\n\t * Checks if there exists an item that passes a test. Identical in behavior to\n\t * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some | Array.some()}.\n\t *\n\t * @param fn - Function used to test (should return a boolean)\n\t * @param thisArg - Value to use as `this` when executing function\n\t * @example\n\t * ```ts\n\t * collection.some(user => user.discriminator === '0000');\n\t * ```\n\t */\n\tpublic some(fn: (value: V, key: K, collection: this) => unknown): boolean;\n\tpublic some<T>(fn: (this: T, value: V, key: K, collection: this) => unknown, thisArg: T): boolean;\n\tpublic some(fn: (value: V, key: K, collection: this) => unknown, thisArg?: unknown): boolean {\n\t\tif (typeof fn !== 'function') throw new TypeError(`${fn} is not a function`);\n\t\tif (thisArg !== undefined) fn = fn.bind(thisArg);\n\t\tfor (const [key, val] of this) {\n\t\t\tif (fn(val, key, this)) return true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Checks if all items passes a test. Identical in behavior to\n\t * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every | Array.every()}.\n\t *\n\t * @param fn - Function used to test (should return a boolean)\n\t * @param thisArg - Value to use as `this` when executing function\n\t * @example\n\t * ```ts\n\t * collection.every(user => !user.bot);\n\t * ```\n\t */\n\tpublic every<K2 extends K>(fn: (value: V, key: K, collection: this) => key is K2): this is Collection<K2, V>;\n\tpublic every<V2 extends V>(fn: (value: V, key: K, collection: this) => value is V2): this is Collection<K, V2>;\n\tpublic every(fn: (value: V, key: K, collection: this) => unknown): boolean;\n\tpublic every<This, K2 extends K>(\n\t\tfn: (this: This, value: V, key: K, collection: this) => key is K2,\n\t\tthisArg: This,\n\t): this is Collection<K2, V>;\n\tpublic every<This, V2 extends V>(\n\t\tfn: (this: This, value: V, key: K, collection: this) => value is V2,\n\t\tthisArg: This,\n\t): this is Collection<K, V2>;\n\tpublic every<This>(fn: (this: This, value: V, key: K, collection: this) => unknown, thisArg: This): boolean;\n\tpublic every(fn: (value: V, key: K, collection: this) => unknown, thisArg?: unknown): boolean {\n\t\tif (typeof fn !== 'function') throw new TypeError(`${fn} is not a function`);\n\t\tif (thisArg !== undefined) fn = fn.bind(thisArg);\n\t\tfor (const [key, val] of this) {\n\t\t\tif (!fn(val, key, this)) return false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Applies a function to produce a single value. Identical in behavior to\n\t * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce | Array.reduce()}.\n\t *\n\t * @param fn - Function used to reduce, taking four arguments; `accumulator`, `currentValue`, `currentKey`,\n\t * and `collection`\n\t * @param initialValue - Starting value for the accumulator\n\t * @example\n\t * ```ts\n\t * collection.reduce((acc, guild) => acc + guild.memberCount, 0);\n\t * ```\n\t */\n\tpublic reduce<T = V>(fn: (accumulator: T, value: V, key: K, collection: this) => T, initialValue?: T): T {\n\t\tif (typeof fn !== 'function') throw new TypeError(`${fn} is not a function`);\n\t\tlet accumulator!: T;\n\n\t\tconst iterator = this.entries();\n\t\tif (initialValue === undefined) {\n\t\t\tif (this.size === 0) throw new TypeError('Reduce of empty collection with no initial value');\n\t\t\taccumulator = iterator.next().value[1];\n\t\t} else {\n\t\t\taccumulator = initialValue;\n\t\t}\n\n\t\tfor (const [key, value] of iterator) {\n\t\t\taccumulator = fn(accumulator, value, key, this);\n\t\t}\n\n\t\treturn accumulator;\n\t}\n\n\t/**\n\t * Identical to\n\t * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/forEach | Map.forEach()},\n\t * but returns the collection instead of undefined.\n\t *\n\t * @param fn - Function to execute for each element\n\t * @param thisArg - Value to use as `this` when executing function\n\t * @example\n\t * ```ts\n\t * collection\n\t * .each(user => console.log(user.username))\n\t * .filter(user => user.bot)\n\t * .each(user => console.log(user.username));\n\t * ```\n\t */\n\tpublic each(fn: (value: V, key: K, collection: this) => void): this;\n\tpublic each<T>(fn: (this: T, value: V, key: K, collection: this) => void, thisArg: T): this;\n\tpublic each(fn: (value: V, key: K, collection: this) => void, thisArg?: unknown): this {\n\t\tif (typeof fn !== 'function') throw new TypeError(`${fn} is not a function`);\n\t\tif (thisArg !== undefined) fn = fn.bind(thisArg);\n\n\t\tfor (const [key, value] of this) {\n\t\t\tfn(value, key, this);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Runs a function on the collection and returns the collection.\n\t *\n\t * @param fn - Function to execute\n\t * @param thisArg - Value to use as `this` when executing function\n\t * @example\n\t * ```ts\n\t * collection\n\t * .tap(coll => console.log(coll.size))\n\t * .filter(user => user.bot)\n\t * .tap(coll => console.log(coll.size))\n\t * ```\n\t */\n\tpublic tap(fn: (collection: this) => void): this;\n\tpublic tap<T>(fn: (this: T, collection: this) => void, thisArg: T): this;\n\tpublic tap(fn: (collection: this) => void, thisArg?: unknown): this {\n\t\tif (typeof fn !== 'function') throw new TypeError(`${fn} is not a function`);\n\t\tif (thisArg !== undefined) fn = fn.bind(thisArg);\n\t\tfn(this);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Creates an identical shallow copy of this collection.\n\t *\n\t * @example\n\t * ```ts\n\t * const newColl = someColl.clone();\n\t * ```\n\t */\n\tpublic clone(): Collection<K, V> {\n\t\treturn new this.constructor[Symbol.species](this);\n\t}\n\n\t/**\n\t * Combines this collection with others into a new collection. None of the source collections are modified.\n\t *\n\t * @param collections - Collections to merge\n\t * @example\n\t * ```ts\n\t * const newColl = someColl.concat(someOtherColl, anotherColl, ohBoyAColl);\n\t * ```\n\t */\n\tpublic concat(...collections: ReadonlyCollection<K, V>[]) {\n\t\tconst newColl = this.clone();\n\t\tfor (const coll of collections) {\n\t\t\tfor (const [key, val] of coll) newColl.set(key, val);\n\t\t}\n\n\t\treturn newColl;\n\t}\n\n\t/**\n\t * Checks if this collection shares identical items with another.\n\t * This is different to checking for equality using equal-signs, because\n\t * the collections may be different objects, but contain the same data.\n\t *\n\t * @param collection - Collection to compare with\n\t * @returns Whether the collections have identical contents\n\t */\n\tpublic equals(collection: ReadonlyCollection<K, V>) {\n\t\tif (!collection) return false; // runtime check\n\t\tif (this === collection) return true;\n\t\tif (this.size !== collection.size) return false;\n\t\tfor (const [key, value] of this) {\n\t\t\tif (!collection.has(key) || value !== collection.get(key)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * The sort method sorts the items of a collection in place and returns it.\n\t * The sort is not necessarily stable in Node 10 or older.\n\t * The default sort order is according to string Unicode code points.\n\t *\n\t * @param compareFunction - Specifies a function that defines the sort order.\n\t * If omitted, the collection is sorted according to each character's Unicode code point value, according to the string conversion of each element.\n\t * @example\n\t * ```ts\n\t * collection.sort((userA, userB) => userA.createdTimestamp - userB.createdTimestamp);\n\t * ```\n\t */\n\tpublic sort(compareFunction: Comparator<K, V> = Collection.defaultSort) {\n\t\tconst entries = [...this.entries()];\n\t\tentries.sort((a, b): number => compareFunction(a[1], b[1], a[0], b[0]));\n\n\t\t// Perform clean-up\n\t\tsuper.clear();\n\n\t\t// Set the new entries\n\t\tfor (const [key, value] of entries) {\n\t\t\tsuper.set(key, value);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * The intersect method returns a new structure containing items where the keys and values are present in both original structures.\n\t *\n\t * @param other - The other Collection to filter against\n\t */\n\tpublic intersect<T>(other: ReadonlyCollection<K, T>): Collection<K, T> {\n\t\tconst coll = new this.constructor[Symbol.species]<K, T>();\n\t\tfor (const [key, value] of other) {\n\t\t\tif (this.has(key) && Object.is(value, this.get(key))) {\n\t\t\t\tcoll.set(key, value);\n\t\t\t}\n\t\t}\n\n\t\treturn coll;\n\t}\n\n\t/**\n\t * The subtract method returns a new structure containing items where the keys and values of the original structure are not present in the other.\n\t *\n\t * @param other - The other Collection to filter against\n\t */\n\tpublic subtract<T>(other: ReadonlyCollection<K, T>): Collection<K, V> {\n\t\tconst coll = new this.constructor[Symbol.species]<K, V>();\n\t\tfor (const [key, value] of this) {\n\t\t\tif (!other.has(key) || !Object.is(value, other.get(key))) {\n\t\t\t\tcoll.set(key, value);\n\t\t\t}\n\t\t}\n\n\t\treturn coll;\n\t}\n\n\t/**\n\t * The difference method returns a new structure containing items where the key is present in one of the original structures but not the other.\n\t *\n\t * @param other - The other Collection to filter against\n\t */\n\tpublic difference<T>(other: ReadonlyCollection<K, T>): Collection<K, T | V> {\n\t\tconst coll = new this.constructor[Symbol.species]<K, T | V>();\n\t\tfor (const [key, value] of other) {\n\t\t\tif (!this.has(key)) coll.set(key, value);\n\t\t}\n\n\t\tfor (const [key, value] of this) {\n\t\t\tif (!other.has(key)) coll.set(key, value);\n\t\t}\n\n\t\treturn coll;\n\t}\n\n\t/**\n\t * Merges two Collections together into a new Collection.\n\t *\n\t * @param other - The other Collection to merge with\n\t * @param whenInSelf - Function getting the result if the entry only exists in this Collection\n\t * @param whenInOther - Function getting the result if the entry only exists in the other Collection\n\t * @param whenInBoth - Function getting the result if the entry exists in both Collections\n\t * @example\n\t * ```ts\n\t * // Sums up the entries in two collections.\n\t * coll.merge(\n\t * other,\n\t * x => ({ keep: true, value: x }),\n\t * y => ({ keep: true, value: y }),\n\t * (x, y) => ({ keep: true, value: x + y }),\n\t * );\n\t * ```\n\t * @example\n\t * ```ts\n\t * // Intersects two collections in a left-biased manner.\n\t * coll.merge(\n\t * other,\n\t * x => ({ keep: false }),\n\t * y => ({ keep: false }),\n\t * (x, _) => ({ keep: true, value: x }),\n\t * );\n\t * ```\n\t */\n\tpublic merge<T, R>(\n\t\tother: ReadonlyCollection<K, T>,\n\t\twhenInSelf: (value: V, key: K) => Keep<R>,\n\t\twhenInOther: (valueOther: T, key: K) => Keep<R>,\n\t\twhenInBoth: (value: V, valueOther: T, key: K) => Keep<R>,\n\t): Collection<K, R> {\n\t\tconst coll = new this.constructor[Symbol.species]<K, R>();\n\t\tconst keys = new Set([...this.keys(), ...other.keys()]);\n\n\t\tfor (const key of keys) {\n\t\t\tconst hasInSelf = this.has(key);\n\t\t\tconst hasInOther = other.has(key);\n\n\t\t\tif (hasInSelf && hasInOther) {\n\t\t\t\tconst result = whenInBoth(this.get(key)!, other.get(key)!, key);\n\t\t\t\tif (result.keep) coll.set(key, result.value);\n\t\t\t} else if (hasInSelf) {\n\t\t\t\tconst result = whenInSelf(this.get(key)!, key);\n\t\t\t\tif (result.keep) coll.set(key, result.value);\n\t\t\t} else if (hasInOther) {\n\t\t\t\tconst result = whenInOther(other.get(key)!, key);\n\t\t\t\tif (result.keep) coll.set(key, result.value);\n\t\t\t}\n\t\t}\n\n\t\treturn coll;\n\t}\n\n\t/**\n\t * The sorted method sorts the items of a collection and returns it.\n\t * The sort is not necessarily stable in Node 10 or older.\n\t * The default sort order is according to string Unicode code points.\n\t *\n\t * @param compareFunction - Specifies a function that defines the sort order.\n\t * If omitted, the collection is sorted according to each character's Unicode code point value,\n\t * according to the string conversion of each element.\n\t * @example\n\t * ```ts\n\t * collection.sorted((userA, userB) => userA.createdTimestamp - userB.createdTimestamp);\n\t * ```\n\t */\n\tpublic sorted(compareFunction: Comparator<K, V> = Collection.defaultSort) {\n\t\treturn new this.constructor[Symbol.species](this).sort((av, bv, ak, bk) => compareFunction(av, bv, ak, bk));\n\t}\n\n\tpublic toJSON() {\n\t\t// toJSON is called recursively by JSON.stringify.\n\t\treturn [...this.values()];\n\t}\n\n\tprivate static defaultSort<V>(firstValue: V, secondValue: V): number {\n\t\treturn Number(firstValue > secondValue) || Number(firstValue === secondValue) - 1;\n\t}\n\n\t/**\n\t * Creates a Collection from a list of entries.\n\t *\n\t * @param entries - The list of entries\n\t * @param combine - Function to combine an existing entry with a new one\n\t * @example\n\t * ```ts\n\t * Collection.combineEntries([[\"a\", 1], [\"b\", 2], [\"a\", 2]], (x, y) => x + y);\n\t * // returns Collection { \"a\" => 3, \"b\" => 2 }\n\t * ```\n\t */\n\tpublic static combineEntries<K, V>(\n\t\tentries: Iterable<[K, V]>,\n\t\tcombine: (firstValue: V, secondValue: V, key: K) => V,\n\t): Collection<K, V> {\n\t\tconst coll = new Collection<K, V>();\n\t\tfor (const [key, value] of entries) {\n\t\t\tif (coll.has(key)) {\n\t\t\t\tcoll.set(key, combine(coll.get(key)!, value, key));\n\t\t\t} else {\n\t\t\t\tcoll.set(key, value);\n\t\t\t}\n\t\t}\n\n\t\treturn coll;\n\t}\n}\n\n/**\n * @internal\n */\nexport type Keep<V> = { keep: false } | { keep: true; value: V };\n\n/**\n * @internal\n */\nexport type Comparator<K, V> = (firstValue: V, secondValue: V, firstKey: K, secondKey: K) => number;\n","export * from './collection.js';\n\n/**\n * The {@link https://github.com/discordjs/discord.js/blob/main/packages/collection/#readme | @discordjs/collection} version\n * that you are currently using.\n */\n// This needs to explicitly be `string` so it is not typed as a \"const string\" that gets injected by esbuild\nexport const version = '1.5.3' as string;\n"],"mappings":"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","names":[]} \ No newline at end of file
diff --git a/node_modules/@discordjs/collection/package.json b/node_modules/@discordjs/collection/package.json
new file mode 100644
index 0000000..81e2418
--- /dev/null
+++ b/node_modules/@discordjs/collection/package.json
@@ -0,0 +1,76 @@
+{
+ "name": "@discordjs/collection",
+ "version": "1.5.3",
+ "description": "Utility data structure used in discord.js",
+ "scripts": {
+ "test": "vitest run",
+ "build": "tsup",
+ "build:docs": "tsc -p tsconfig.docs.json",
+ "lint": "prettier --check . && cross-env TIMING=1 eslint src __tests__ --ext .mjs,.js,.ts --format=pretty",
+ "format": "prettier --write . && cross-env TIMING=1 eslint src __tests__ --ext .mjs,.js,.ts --fix --format=pretty",
+ "fmt": "yarn format",
+ "docs": "yarn build:docs && api-extractor run --local && api-extractor run --local --config ./api-extractor-docs.json",
+ "prepack": "yarn lint && yarn test && yarn build",
+ "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/collection/*'",
+ "release": "cliff-jumper"
+ },
+ "main": "./dist/index.js",
+ "module": "./dist/index.mjs",
+ "types": "./dist/index.d.ts",
+ "exports": {
+ "types": "./dist/index.d.ts",
+ "import": "./dist/index.mjs",
+ "require": "./dist/index.js"
+ },
+ "directories": {
+ "lib": "src",
+ "test": "__tests__"
+ },
+ "files": [
+ "dist"
+ ],
+ "contributors": [
+ "Crawl <icrawltogo@gmail.com>",
+ "Amish Shah <amishshah.2k@gmail.com>",
+ "SpaceEEC <spaceeec@yahoo.com>",
+ "Vlad Frangu <kingdgrizzle@gmail.com>",
+ "Aura Román <kyradiscord@gmail.com>"
+ ],
+ "license": "Apache-2.0",
+ "keywords": [
+ "map",
+ "collection",
+ "utility"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/discordjs/discord.js.git",
+ "directory": "packages/collection"
+ },
+ "bugs": {
+ "url": "https://github.com/discordjs/discord.js/issues"
+ },
+ "homepage": "https://discord.js.org",
+ "devDependencies": {
+ "@favware/cliff-jumper": "^2.1.1",
+ "@microsoft/api-extractor": "^7.36.4",
+ "@types/node": "16.18.40",
+ "@vitest/coverage-v8": "^0.34.2",
+ "cross-env": "^7.0.3",
+ "esbuild-plugin-version-injector": "^1.2.0",
+ "eslint": "^8.47.0",
+ "eslint-config-neon": "^0.1.47",
+ "eslint-formatter-pretty": "^5.0.0",
+ "prettier": "^2.8.8",
+ "tsup": "^7.2.0",
+ "turbo": "^1.10.12",
+ "typescript": "^5.1.6",
+ "vitest": "^0.34.2"
+ },
+ "engines": {
+ "node": ">=16.11.0"
+ },
+ "publishConfig": {
+ "access": "public"
+ }
+} \ No newline at end of file