Skip to content

Commit

Permalink
feat(ShardingManager): add options typings (#5583)
Browse files Browse the repository at this point in the history
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
  • Loading branch information
3 people committed May 10, 2021
1 parent 2345c6d commit 31b4390
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 24 deletions.
29 changes: 17 additions & 12 deletions src/sharding/ShardingManager.js
Expand Up @@ -19,23 +19,28 @@ const Util = require('../util/Util');
*/
class ShardingManager extends EventEmitter {
/**
* The mode to spawn shards with for a {@link ShardingManager}: either "process" to use child processes, or
* The mode to spawn shards with for a {@link ShardingManager}. Either "process" to use child processes, or
* "worker" to use [Worker threads](https://nodejs.org/api/worker_threads.html).
* @typedef {Object} ShardingManagerMode
* @typedef {string} ShardingManagerMode
*/

/**
* The options to spawn shards with for a {@link ShardingManager},
* @typedef {Object} ShardingManagerOptions
* @property {string|number} [totalShards='auto'] Number of total shards of all shard managers or "auto"
* @property {string|number[]} [shardList='auto'] List of shards to spawn or "auto"
* @property {ShardingManagerMode} [mode='process'] Which mode to use for shards
* @property {boolean} [respawn=true] Whether shards should automatically respawn upon exiting
* @property {string[]} [shardArgs=[]] Arguments to pass to the shard script when spawning
* (only available when mode is set to 'process')
* @property {string} [execArgv=[]] Arguments to pass to the shard script executable when spawning
* (only available when mode is set to 'process')
* @property {string} [token] Token to use for automatic shard count and passing to shards
*/

/**
* @param {string} file Path to your shard script file
* @param {Object} [options] Options for the sharding manager
* @param {string|number} [options.totalShards='auto'] Number of total shards of all shard managers or "auto"
* @param {string|number[]} [options.shardList='auto'] List of shards to spawn or "auto"
* @param {ShardingManagerMode} [options.mode='process'] Which mode to use for shards
* @param {boolean} [options.respawn=true] Whether shards should automatically respawn upon exiting
* @param {string[]} [options.shardArgs=[]] Arguments to pass to the shard script when spawning
* (only available when using the `process` mode)
* @param {string[]} [options.execArgv=[]] Arguments to pass to the shard script executable when spawning
* (only available when using the `process` mode)
* @param {string} [options.token] Token to use for automatic shard count and passing to shards
* @param {ShardingManagerOptions} [options] Options for the sharding manager
*/
constructor(file, options = {}) {
super();
Expand Down
23 changes: 11 additions & 12 deletions typings/index.d.ts
Expand Up @@ -1516,18 +1516,7 @@ declare module 'discord.js' {
}

export class ShardingManager extends EventEmitter {
constructor(
file: string,
options?: {
totalShards?: number | 'auto';
shardList?: number[] | 'auto';
mode?: ShardingManagerMode;
respawn?: boolean;
shardArgs?: string[];
token?: string;
execArgv?: string[];
},
);
constructor(file: string, options?: ShardingManagerOptions);
private _performOnShards(method: string, args: any[]): Promise<any[]>;
private _performOnShards(method: string, args: any[], shard: number): Promise<any>;

Expand Down Expand Up @@ -3510,6 +3499,16 @@ declare module 'discord.js' {

type ShardingManagerMode = 'process' | 'worker';

interface ShardingManagerOptions {
totalShards?: number | 'auto';
shardList?: number[] | 'auto';
mode?: ShardingManagerMode;
respawn?: boolean;
shardArgs?: string[];
token?: string;
execArgv?: string[];
}

type Snowflake = string;

interface SplitOptions {
Expand Down

0 comments on commit 31b4390

Please sign in to comment.