
Product
Introducing Socket Firewall Enterprise: Flexible, Configurable Protection for Modern Package Ecosystems
Socket Firewall Enterprise is now available with flexible deployment, configurable policies, and expanded language support.
@moscowcity/csgogsi
Advanced tools
The GSI object takes raw request from CS:GO GSI's system, parses this to more comfortable form and calls listeners on certain events. You need to configure GSI file and receiving end yourself.
npm install csgogsi
import express from 'express';
import { CSGOGSI } from 'csgogsi';
const app = express();
const GSI = new CSGOGSI();
app.use(express.urlencoded({extended:true}));
app.use(express.raw({limit:'10Mb', type: 'application/json' }));
app.post('/', (req, res) => {
const text = req.body.toString().replace(/"(player|owner)":([ ]*)([0-9]+)/gm, '"$1": "$3"').replace(/(player|owner):([ ]*)([0-9]+)/gm, '"$1": "$3"');
const data = JSON.parse(text);
GSI.digest(data);
res.sendStatus(200);
});
GSI.on('roundEnd', team => {
console.log(`Team ${team.name} win!`);
});
GSI.on('bombPlant', player => {
console.log(`${player.name} planted the bomb`);
});
app.listen(3000);
| Method | Description | Example | Returned objects |
|---|---|---|---|
digest(GSIData) | Gets raw GSI data from CSGO and does magic | GSI.digest(req.body) | CSGO Parsed |
digestMIRV(event: RawKill or RawHurt, eventType: "player_death" (default) or "player_hurt) | Gets raw kill data from mirv pgl and does magic | GSI.digestMIRV(mirv) | KillEvent or HurtEvent |
on('event', callback) | Sets listener for given event (check them below) | GSI.on('roundEnd', team => console.log(team.name)); | |
static findSite(mapName, position) | Tries to guess the bombsite of the position | A, B, null |
CSGOGSI also has MR property, which specifies the MR system for overtimes (used in map.rounds). Default value is 3.
Beside that, CSGOGSI implements standard Event Emitter interfaces.
| Event | Name | Callback |
|---|---|---|
| Data incoming | data | (data: CSGO Parsed) => {} |
| End of the round | roundEnd | (score: Score) => {} |
| End of the map | matchEnd | (score: Score) => {} |
| Kill | kill | (kill: KillEvent) => {} |
| Hurt | hurt | (hurt: HurtEvent) => {} |
| Timeout start | timeoutStart | (team: Team) => {} |
| Timeout end | timeoutEnd | () => {} |
| MVP of the round | mvp | (player: Player) => {} |
| Freezetime start | freezetimeStart | () => {} |
| Freezetime end | freezetimeEnd | () => {} |
| Intermission start | intermissionStart | () => {} |
| Intermission end | intermissionEnd | () => {} |
| Defuse started | defuseStart | (player: Player) => {} |
| Defuse stopped (but not defused and not exploded) | defuseStop | (player: Player) => {} |
| Bomb plant started | bombPlantStart | (player: Player) => {} |
| Bomb planted | bombPlant | (player: Player) => {} |
| Bomb exploded | bombExplode | () => {} |
| Bomb defused | bombDefuse | (player: Player) => {} |
| Property | Type |
|---|---|
| provider | Provider Object |
| map | Map Object |
| round | Round Object or null |
| player | Player Object or null |
| players | Array of Player's Object |
| observer | Observer Object |
| bomb | Bomb Object |
| phase_countdowns | The same as in raw GSI |
| Property | Type |
|---|---|
| activity | 'playing', 'textinput' or 'menu' |
| spectarget | 'free' or SteamID64 |
| position | number[] |
| forward | number[] |
| Property | Type |
|---|---|
| id | string |
| name | string |
| country | string or null |
| logo | string or null |
| map_score | number |
| Property | Type |
|---|---|
| id | string |
| name | string |
| steramid | string |
| realName | string or null |
| country | string or null |
| avatar | string or null |
| Property | Type |
|---|---|
| name | 'Counter-Strike: Global Offensive' |
| appid | 730 |
| version | number |
| steamid | number |
| timestamp | number |
| Property | Type |
|---|---|
| mode | string |
| name | string |
| phase | "warmup" or "live" or "intermission" or "gameover" |
| round | number |
| team_ct | Team Object |
| team_t | Team Object |
| num_matches_to_win_series | number |
| current_spectators | number |
| souvenirs_total | number |
| round_wins | Object with Round Outcome Object as values |
| rounds | Array of RoundInfo objects |
| Property | Type |
|---|---|
| team | Team |
| round | number |
| side | Side |
| outcome | 'ct_win_elimination', 't_win_elimination', 'ct_win_time', 'ct_win_defuse', 't_win_bomb' |
| Property | Type |
|---|---|
| phase | "freezetime" or "live" or "over" |
| bomb? | "planted" or "exploded" or "defused" |
| win_team? | Side Object |
| Property | Type |
|---|---|
| steamid | string |
| name | string |
| observer_slot | number |
| team | Team Object |
| stats | {kills, assists, deaths, mvps, score} all numbers |
| state | {health, armor, helmet, defusekit?, flashed, smoked, burning, money, round_kills, round_killshs, round_totaldmg, equip_value, adr} |
| position | Array of numbers |
| forward | number |
| avatar | string or null |
| country | string or null |
| realName | string or null |
| Property | Type |
|---|---|
| state | "carried" or "planted" or "dropped" or "defused" or "defusing" or "planting" or "exploded" |
| countdown? | string |
| player? | Player Object |
| position | string |
| Property | Type |
|---|---|
| score | number |
| consecutive_round_losses | number |
| timeouts_remaining | number |
| matches_won_this_series | string |
| name | string |
| country | string or null |
| id | string or null |
| side | Side Object |
| orientation | left or right |
| logo | string |
| Property | Type |
|---|---|
| winner | Team |
| loser | Team |
| map | Map |
| mapEnd | boolean |
"CT" or "T"
FAQs
A forked module of csgogsi module
We found that @moscowcity/csgogsi demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket Firewall Enterprise is now available with flexible deployment, configurable policies, and expanded language support.

Security News
Open source dashboard CNAPulse tracks CVE Numbering Authorities’ publishing activity, highlighting trends and transparency across the CVE ecosystem.

Product
Detect malware, unsafe data flows, and license issues in GitHub Actions with Socket’s new workflow scanning support.