diff --git a/src/stores/DataStore.js b/src/stores/DataStore.js index fc9aa414d..35e326e82 100644 --- a/src/stores/DataStore.js +++ b/src/stores/DataStore.js @@ -9,7 +9,7 @@ class DataStore extends Collection { constructor(client, iterable, holds) { super(); Object.defineProperty(this, 'client', { value: client }); - Object.defineProperty(this, 'holds', { value: Structures.get(holds.name) }); + Object.defineProperty(this, 'holds', { value: Structures.get(holds) }); if (iterable) for (const item of iterable) this.create(item); } diff --git a/src/util/Structures.js b/src/util/Structures.js index d118ebb0a..dd2eca2ba 100644 --- a/src/util/Structures.js +++ b/src/util/Structures.js @@ -6,6 +6,17 @@ class Structures { throw new Error(`The ${this.constructor.name} class may not be instantiated.`); } + /** + * Retrieves a structure class. + * @param {string|Function} structure Name of the structure or a class/prototype function to use the name of + * @returns {Function} + */ + static get(structure) { + if (typeof structure === 'string') return structures[structure]; + if (typeof structure === 'function') return structures[structure.name]; + throw new TypeError(`Structure to retrieve must be a string or class/prototype function, not ${typeof structure}.`); + } + /** * Extends a structure. * @param {string} name Name of the structure class to extend