mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
feat(Sharding*): contexts for broadcastEval (#5756)
* feat(ShardClientUtil): add parameterList to broadcastEval * feat(ShardingManager): add parameterList to broadcastEval * chore: update typings * refactor(Sharding*): use BroadcastEvalOptions * chore: update typings * docs: use serializable instead of stringifiable * refactor: don't set broadcastEval default context Co-authored-by: Antonio Román <kyradiscord@gmail.com> * chore: fix inaccuracy in typings * refactor(Sharding*): remove string-based broadcastEval * fix(ShardingManager): incorrect usage of _broadcastEvalRaw * refactor(ShardingManager): remove unnecessary method * refactor(Sharding*): type check the eval script * fix(ShardingManager): return Promise rejection rather than throwing an error Co-authored-by: SpaceEEC <spaceeec@yahoo.com> * chore: fix typings Co-authored-by: SpaceEEC <spaceeec@yahoo.com> Co-authored-by: Antonio Román <kyradiscord@gmail.com> Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
This commit is contained in:
@@ -226,14 +226,22 @@ class ShardingManager extends EventEmitter {
|
||||
return Promise.all(promises);
|
||||
}
|
||||
|
||||
/**
|
||||
* Options for {@link ShardingManager#broadcastEval} and {@link ShardClientUtil#broadcastEval}.
|
||||
* @typedef {Object} BroadcastEvalOptions
|
||||
* @property {number} [shard] Shard to run script on, all if undefined
|
||||
* @property {*} [context] The JSON-serializable values to call the script with
|
||||
*/
|
||||
|
||||
/**
|
||||
* Evaluates a script on all shards, or a given shard, in the context of the {@link Client}s.
|
||||
* @param {string} script JavaScript to run on each shard
|
||||
* @param {number} [shard] Shard to run on, all if undefined
|
||||
* @param {Function} script JavaScript to run on each shard
|
||||
* @param {BroadcastEvalOptions} [options={}] The options for the broadcast
|
||||
* @returns {Promise<*>|Promise<Array<*>>} Results of the script execution
|
||||
*/
|
||||
broadcastEval(script, shard) {
|
||||
return this._performOnShards('eval', [script], shard);
|
||||
broadcastEval(script, options = {}) {
|
||||
if (typeof script !== 'function') return Promise.reject(new TypeError('SHARDING_INVALID_EVAL_BROADCAST'));
|
||||
return this._performOnShards('eval', [`(${script})(this, ${JSON.stringify(options.context)})`], options.shard);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user