pokemon-showdown/server/global-variables.d.ts
Waleed Hassan a518cf102a Take steps to statically type Config (#5920)
This commit changes the TypeScript global variable of `Config` from
`AnyObject` to `Config & AnyObject`.

It still falls back to `AnyObject` (hence the 'Take steps') because of
the main-specific `Config` properties that are used without being in the
`Config` object itself.

These can be added by someone with access to the PS main server.

Regardlesss, this is an improvement as IntelliSense can display and
autocomplete the known properies.

In addition, the TypeScript compiler will now report bugs
concerning the types of the properties, which I have fixed in this
commit.
2019-10-30 18:45:20 +10:30

44 lines
1.5 KiB
TypeScript

import * as ChatType from './chat';
import * as RoomsType from './rooms';
import * as RoomlogsType from './roomlogs';
import * as SocketsType from './sockets';
import * as TeamValidatorAsyncType from './team-validator-async';
import * as UsersType from './users';
import * as VerifierType from './verifier';
import * as ConfigType from "../config/config-example";
import * as StreamsType from '../lib/streams';
import {IPTools as IPToolsType} from './ip-tools';
import {LadderStore as LadderStoreType} from './ladders-remote';
import {Ladders as LaddersType} from './ladders';
import {LoginServer as LoginServerType} from './loginserver';
import {Monitor as MonitorType} from './monitor';
import {Punishments as PunishmentsType} from './punishments';
declare global {
namespace NodeJS {
interface Global {
IPTools: any;
Config: any;
Chat: any;
__version: {head: string, origin?: string, tree?: string};
}
}
const Config: typeof ConfigType & AnyObject;
const Chat: typeof ChatType.Chat;
const IPTools: typeof IPToolsType;
const Ladders: typeof LaddersType
const LadderStoreT: typeof LadderStoreType;
const LoginServer: typeof LoginServerType;
const Monitor: typeof MonitorType;
const Punishments: typeof PunishmentsType;
const Sockets: typeof SocketsType;
const TeamValidatorAsync: typeof TeamValidatorAsyncType;
const Rooms: typeof RoomsType.Rooms;
const Roomlogs: typeof RoomlogsType.Roomlogs;
const Users: typeof UsersType.Users
const Verifier: typeof VerifierType;
}