mirror of
https://github.com/discordjs/discord.js.git
synced 2026-06-04 01:50:08 +00:00
* feat: add @discordjs/util * fix: builders test * refactor: make rest use lazy for ESM import * chore: make requested changes * Apply suggestions from code review Co-authored-by: Parbez <imranbarbhuiya.fsd@gmail.com> Co-authored-by: A. Román <kyradiscord@gmail.com> * chore: make requested changes and add tests * chore: regen lockfile * test: add type tests * chore: push missing files * chore: make requested changes * chore: update CI stuff * chore: fix lockfile * chore: make requested changes Co-authored-by: Parbez <imranbarbhuiya.fsd@gmail.com> Co-authored-by: A. Román <kyradiscord@gmail.com> Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
68 lines
1.7 KiB
TypeScript
68 lines
1.7 KiB
TypeScript
import { readFileSync } from 'node:fs';
|
|
import { join } from 'node:path';
|
|
import process from 'node:process';
|
|
import { Collection } from '@discordjs/collection';
|
|
import { lazy } from '@discordjs/util';
|
|
import { APIVersion, GatewayOpcodes } from 'discord-api-types/v10';
|
|
import type { OptionalWebSocketManagerOptions, SessionInfo } from '../ws/WebSocketManager.js';
|
|
|
|
/**
|
|
* Valid encoding types
|
|
*/
|
|
export enum Encoding {
|
|
JSON = 'json',
|
|
}
|
|
|
|
/**
|
|
* Valid compression methods
|
|
*/
|
|
export enum CompressionMethod {
|
|
ZlibStream = 'zlib-stream',
|
|
}
|
|
|
|
const packageJson = readFileSync(join(__dirname, '..', '..', 'package.json'), 'utf8');
|
|
const Package = JSON.parse(packageJson);
|
|
|
|
export const DefaultDeviceProperty = `@discordjs/ws ${Package.version}`;
|
|
|
|
const getDefaultSessionStore = lazy(() => new Collection<number, SessionInfo | null>());
|
|
|
|
/**
|
|
* Default options used by the manager
|
|
*/
|
|
export const DefaultWebSocketManagerOptions: OptionalWebSocketManagerOptions = {
|
|
shardCount: null,
|
|
shardIds: null,
|
|
largeThreshold: null,
|
|
initialPresence: null,
|
|
identifyProperties: {
|
|
browser: DefaultDeviceProperty,
|
|
device: DefaultDeviceProperty,
|
|
os: process.platform,
|
|
},
|
|
version: APIVersion,
|
|
encoding: Encoding.JSON,
|
|
compression: null,
|
|
retrieveSessionInfo(shardId) {
|
|
const store = getDefaultSessionStore();
|
|
return store.get(shardId) ?? null;
|
|
},
|
|
updateSessionInfo(shardId: number, info: SessionInfo | null) {
|
|
const store = getDefaultSessionStore();
|
|
if (info) {
|
|
store.set(shardId, info);
|
|
} else {
|
|
store.delete(shardId);
|
|
}
|
|
},
|
|
handshakeTimeout: 30_000,
|
|
helloTimeout: 60_000,
|
|
readyTimeout: 15_000,
|
|
};
|
|
|
|
export const ImportantGatewayOpcodes = new Set([
|
|
GatewayOpcodes.Heartbeat,
|
|
GatewayOpcodes.Identify,
|
|
GatewayOpcodes.Resume,
|
|
]);
|