mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-14 10:33:30 +01:00
fix(Collection): use Symbol.species for creating derived collections (#2715)
This commit is contained in:
@@ -46,6 +46,10 @@ class DataStore extends Collection {
|
|||||||
if (typeof idOrInstance === 'string') return idOrInstance;
|
if (typeof idOrInstance === 'string') return idOrInstance;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static get [Symbol.species]() {
|
||||||
|
return Collection;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = DataStore;
|
module.exports = DataStore;
|
||||||
|
|||||||
@@ -220,7 +220,7 @@ class Collection extends Map {
|
|||||||
*/
|
*/
|
||||||
filter(fn, thisArg) {
|
filter(fn, thisArg) {
|
||||||
if (typeof thisArg !== 'undefined') fn = fn.bind(thisArg);
|
if (typeof thisArg !== 'undefined') fn = fn.bind(thisArg);
|
||||||
const results = new Collection();
|
const results = new this.constructor[Symbol.species]();
|
||||||
for (const [key, val] of this) {
|
for (const [key, val] of this) {
|
||||||
if (fn(val, key, this)) results.set(key, val);
|
if (fn(val, key, this)) results.set(key, val);
|
||||||
}
|
}
|
||||||
@@ -237,7 +237,7 @@ class Collection extends Map {
|
|||||||
*/
|
*/
|
||||||
partition(fn, thisArg) {
|
partition(fn, thisArg) {
|
||||||
if (typeof thisArg !== 'undefined') fn = fn.bind(thisArg);
|
if (typeof thisArg !== 'undefined') fn = fn.bind(thisArg);
|
||||||
const results = [new Collection(), new Collection()];
|
const results = [new this.constructor[Symbol.species](), new this.constructor[Symbol.species]()];
|
||||||
for (const [key, val] of this) {
|
for (const [key, val] of this) {
|
||||||
if (fn(val, key, this)) {
|
if (fn(val, key, this)) {
|
||||||
results[0].set(key, val);
|
results[0].set(key, val);
|
||||||
@@ -365,7 +365,7 @@ class Collection extends Map {
|
|||||||
* @example const newColl = someColl.clone();
|
* @example const newColl = someColl.clone();
|
||||||
*/
|
*/
|
||||||
clone() {
|
clone() {
|
||||||
return new this.constructor(this);
|
return new this.constructor[Symbol.species](this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -409,7 +409,8 @@ class Collection extends Map {
|
|||||||
* @example collection.sort((userA, userB) => userA.createdTimestamp - userB.createdTimestamp);
|
* @example collection.sort((userA, userB) => userA.createdTimestamp - userB.createdTimestamp);
|
||||||
*/
|
*/
|
||||||
sort(compareFunction = (x, y) => +(x > y) || +(x === y) - 1) {
|
sort(compareFunction = (x, y) => +(x > y) || +(x === y) - 1) {
|
||||||
return new Collection([...this.entries()].sort((a, b) => compareFunction(a[1], b[1], a[0], b[0])));
|
return new this.constructor[Symbol.species]([...this.entries()]
|
||||||
|
.sort((a, b) => compareFunction(a[1], b[1], a[0], b[0])));
|
||||||
}
|
}
|
||||||
|
|
||||||
toJSON() {
|
toJSON() {
|
||||||
|
|||||||
Reference in New Issue
Block a user