packets.js

'use strict';

module.exports = {
    Client_SendUserStatus: 0,
    Client_SendIrcMessage: 1,
    Client_Exit: 2,
    Client_RequestStatusUpdate: 3,
    Client_Pong: 4,
    Bancho_LoginReply: 5,
    Bancho_CommandError: 6,
    Bancho_SendMessage: 7,
    Bancho_Ping: 8,
    Bancho_HandleIrcChangeUsername: 9,
    Bancho_HandleIrcQuit: 10,
    Bancho_HandleOsuUpdate: 11,
    Bancho_HandleUserQuit: 12,
    Bancho_SpectatorJoined: 13,
    Bancho_SpectatorLeft: 14,
    Bancho_SpectateFrames: 15,
    Client_StartSpectating: 16,
    Client_StopSpectating: 17,
    Client_SpectateFrames: 18,
    Bancho_VersionUpdate: 19,
    Client_ErrorReport: 20,
    Client_CantSpectate: 21,
    Bancho_SpectatorCantSpectate: 22,
    Bancho_GetAttention: 23,
    Bancho_Announce: 24,
    Client_SendIrcMessagePrivate: 25,
    Bancho_MatchUpdate: 26,
    Bancho_MatchNew: 27,
    Bancho_MatchDisband: 28,
    Client_LobbyPart: 29,
    Client_LobbyJoin: 30,
    Client_MatchCreate: 31,
    Client_MatchJoin: 32,
    Client_MatchPart: 33,
    Bancho_MatchJoinSuccess: 36,
    Bancho_MatchJoinFail: 37,
    Client_MatchChangeSlot: 38,
    Client_MatchReady: 39,
    Client_MatchLock: 40,
    Client_MatchChangeSettings: 41,
    Bancho_FellowSpectatorJoined: 42,
    Bancho_FellowSpectatorLeft: 43,
    Client_MatchStart: 44,
    Bancho_MatchStart: 46,
    Client_MatchScoreUpdate: 47,
    Bancho_MatchScoreUpdate: 48,
    Client_MatchComplete: 49,
    Bancho_MatchTransferHost: 50,
    Client_MatchChangeMods: 51,
    Client_MatchLoadComplete: 52,
    Bancho_MatchAllPlayersLoaded: 53,
    Client_MatchNoBeatmap: 54,
    Client_MatchNotReady: 55,
    Client_MatchFailed: 56,
    Bancho_MatchPlayerFailed: 57,
    Bancho_MatchComplete: 58,
    Client_MatchHasBeatmap: 59,
    Client_MatchSkipRequest: 60,
    Bancho_MatchSkip: 61,
    Bancho_Unauthorised: 62,
    Client_ChannelJoin: 63,
    Bancho_ChannelJoinSuccess: 64,
    Bancho_ChannelAvailable: 65,
    Bancho_ChannelRevoked: 66,
    Bancho_ChannelAvailableAutojoin: 67,
    Client_BeatmapInfoRequest: 68,
    Bancho_BeatmapInfoReply: 69,
    Client_MatchTransferHost: 70,
    Bancho_LoginPermissions: 71,
    Bancho_FriendsList: 72,
    Client_FriendAdd: 73,
    Client_FriendRemove: 74,
    Bancho_ProtocolNegotiation: 75,
    Bancho_TitleUpdate: 76,
    Client_MatchChangeTeam: 77,
    Client_ChannelLeave: 78,
    Client_ReceiveUpdates: 79,
    Bancho_Monitor: 80,
    Bancho_MatchPlayerSkipped: 81,
    Client_SetIrcAwayMessage: 82,
    Bancho_UserPresence: 83,
    Client_UserStatsRequest: 85,
    Bancho_Restart: 86,
    Client_Invite: 87,
    Bancho_Invite: 88,
    Bancho_ChannelListingComplete: 89,
    Client_MatchChangePassword: 90,
    Bancho_MatchChangePassword: 91,
    Bancho_BanInfo: 92,
    Client_SpecialMatchInfoRequest: 93,
    Bancho_UserSilenced: 94,
    Bancho_UserPresenceSingle: 95,
    Bancho_UserPresenceBundle: 96,
    Client_UserPresenceRequest: 97,
    Client_UserPresenceRequestAll: 98,
    Client_UserToggleBlockNonFriendPM: 99,
    Bancho_UserPMBlocked: 100,
    Bancho_TargetIsSilenced: 101,
    Bancho_VersionUpdateForced: 102,
    Bancho_SwitchServer: 103,
    Bancho_AccountRestricted: 104,
    Bancho_RTX: 105,
    Client_MatchAbort: 106,
    Bancho_SwitchTourneyServer: 107,
    Client_SpecialJoinMatchChannel: 108,
    Client_SpecialLeaveMatchChannel: 109,

    idToString: [
        'SendUserStatus',
        'SendIrcMessage',
        'Exit',
        'RequestStatusUpdate',
        'Pong',
        'LoginReply',
        'CommandError',
        'SendMessage',
        'Ping',
        'HandleIrcChangeUsername',
        'HandleIrcQuit',
        'HandleOsuUpdate',
        'HandleUserQuit',
        'SpectatorJoined',
        'SpectatorLeft',
        'SpectateFrames',
        'StartSpectating',
        'StopSpectating',
        'SpectateFrames',
        'VersionUpdate',
        'ErrorReport',
        'CantSpectate',
        'SpectatorCantSpectate',
        'GetAttention',
        'Announce',
        'SendIrcMessagePrivate',
        'MatchUpdate',
        'MatchNew',
        'MatchDisband',
        'LobbyPart',
        'LobbyJoin',
        'MatchCreate',
        'MatchJoin',
        'MatchPart',
        'LobbyJoin',
        'LobbyPart',
        'MatchJoinSuccess',
        'MatchJoinFail',
        'MatchChangeSlot',
        'MatchReady',
        'MatchLock',
        'MatchChangeSettings',
        'FellowSpectatorJoined',
        'FellowSpectatorLeft',
        'MatchStart',
        'AllPlayersLoaded',
        'MatchStart',
        'MatchScoreUpdate',
        'MatchScoreUpdate',
        'MatchComplete',
        'MatchTransferHost',
        'MatchChangeMods',
        'MatchLoadComplete',
        'MatchAllPlayersLoaded',
        'MatchNoBeatmap',
        'MatchNotReady',
        'MatchFailed',
        'MatchPlayerFailed',
        'MatchComplete',
        'MatchHasBeatmap',
        'MatchSkipRequest',
        'MatchSkip',
        'Unauthorised',
        'ChannelJoin',
        'ChannelJoinSuccess',
        'ChannelAvailable',
        'ChannelRevoked',
        'ChannelAvailableAutojoin',
        'BeatmapInfoRequest',
        'BeatmapInfoReply',
        'MatchTransferHost',
        'LoginPermissions',
        'FriendsList',
        'FriendAdd',
        'FriendRemove',
        'ProtocolNegotiation',
        'TitleUpdate',
        'MatchChangeTeam',
        'ChannelLeave',
        'ReceiveUpdates',
        'Monitor',
        'MatchPlayerSkipped',
        'SetIrcAwayMessage',
        'UserPresence',
        'Irc_Only',
        'UserStatsRequest',
        'Restart',
        'Invite',
        'Invite',
        'ChannelListingComplete',
        'MatchChangePassword',
        'MatchChangePassword',
        'BanInfo',
        'SpecialMatchInfoRequest',
        'UserSilenced',
        'UserPresenceSingle',
        'UserPresenceBundle',
        'UserPresenceRequest',
        'UserPresenceRequestAll',
        'UserToggleBlockNonFriendPM',
        'UserPMBlocked',
        'TargetIsSilenced',
        'VersionUpdateForced',
        'SwitchServer',
        'AccountRestricted',
        'RTX',
        'MatchAbort',
        'SwitchTourneyServer',
        'SpecialJoinMatchChannel',
        'SpecialLeaveMatchChannel',
    ]
};

/**
 * @typedef {Object} UserId
 * @prop {Number} userId
 */

/**
 * @typedef {Object} UserStatus
 * @prop {Number} status
 * @prop {String} statusText
 * @prop {String} beatmapChecksum
 * @prop {Number} currentMods
 * @prop {Number} playMode
 * @prop {Number} beatmapId
 */

/**
 * @typedef {Object} Match
 * @prop {Number} matchId
 * @prop {Boolean} inProgress
 * @prop {Number} matchType
 * @prop {Number} activeMods
 * @prop {String} gameName
 * @prop {String} gamePassword
 * @prop {String} beatmapName
 * @prop {Number} beatmapId
 * @prop {String} beatmapChecksum
 * @prop {Array} slots
 * @prop {Number} playMode
 * @prop {Number} matchScoringType
 * @prop {Number} matchTeamType
 * @prop {Number} specialModes
 * @prop {Array} slotMods
 */

/**
 * @typedef {Object} SlotId
 * @prop {Number} slotId
 */

/**
 * @typedef {Object} MatchJoin
 * @prop {Number} matchId
 * @prop {String} gamePassword
 */

/**
 * @typedef {Object} Message
 * @prop {String} sendingClient
 * @prop {String} message
 * @prop {String} target
 * @prop {Number} senderId
 */

/**
 * @typedef {Object} ScoreFrame
 * @prop {Number} time
 * @prop {Number} id
 * @prop {Number} count300
 * @prop {Number} count100
 * @prop {Number} count50
 * @prop {Number} countGeki
 * @prop {Number} countKatu
 * @prop {Number} countMiss
 * @prop {Number} totalScore
 * @prop {Number} maxCombo
 * @prop {Number} currentCombo
 * @prop {Boolean} perfect
 * @prop {Number} currentHp
 * @prop {Number} tagByte
 * @prop {Boolean} usingScoreV2
 * @prop {Number} comboPortion
 * @prop {Number} bonusPortion
 */

/**
 * @typedef {Object} ReplayFrame
 * @prop {Number} extra
 * @prop {Array} replayFrames
 * @prop {Number} action
 * @prop {Object} scoreFrame
 */

/**
 * @typedef {Object} ChannelName
 * @prop {String} channelName
 */

/**
 * @typedef {Object} UserIds
 * @prop {Array.<Number>} userIds
 */

/**
 * @typedef {Object} CurrentMods
 * @prop {Number} currentMods
 */

/**
 * @typedef {Object} Reason
 * @prop {Number} reason
 */

/**
 * @typedef {Object} RandomInt
 * @prop {Number} randomInt
 */

/**
 * @typedef {Object} MatchId
 * @prop {Number} matchId
 */

/**
 * @typedef {Object} BlockPM
 * @prop {Number} blockPM
 */


/**
 * @typedef {Object} Reply
 * @prop {Number} reply
 */

/**
 * @typedef {Object} MessageString
 * @prop {String} message
 */

/**
 * @typedef {Object} UserQuit
 * @prop {Number} userId
 * @prop {Number} state
 */

/**
 * @typedef {Object} Channel
 * @prop {String} channelName
 * @prop {String} channelTopic
 * @prop {Number} channelUserCount
 */

/**
 * @typedef {Object} Friends
 * @prop {Array} friends
 */

/**
 * @typedef {Object} TitleImage
 * @prop {String} titleImage
 */

/**
 * @typedef {Object} Length
 * @prop {Number} length
 */

/**
 * @typedef {Object} UserPresence
 * @prop {Number} userId
 * @prop {String} username
 * @prop {Number} timezone
 * @prop {Number} countryId
 * @prop {Number} permissions
 * @prop {Number} longitude
 * @prop {Number} latitude
 * @prop {Number} rank
 */

/**
 * @typedef {Object} OsuUpdate
 * @prop {Number} userId
 * @prop {Number} status
 * @prop {String} statusText
 * @prop {String} beatmapChecksum
 * @prop {Number} currentMods
 * @prop {Number} playMode
 * @prop {Number} beatmapId
 * @prop {Number} rankedScore
 * @prop {Number} accuracy
 * @prop {Number} playCount
 * @prop {Number} totalScore
 * @prop {Number} rank
 * @prop {Number} performance
 */

/**
 * @typedef {Object} GamePassword
 * @prop {String} gamePassword
 */

/**
 * @typedef {Object} ServerHost
 * @prop {String} serverHost
 */

/**
 * @typedef {Object} Permissions
 * @prop {Number} permissions
 */

/**
 * @typedef {Object} Protocol
 * @prop {Number} protocol
 */