Skip to content

Commit

Permalink
CI, eslint, code cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
MBR-0001 committed Oct 10, 2021
1 parent 5b01e27 commit 7decfd4
Show file tree
Hide file tree
Showing 4 changed files with 91 additions and 28 deletions.
29 changes: 29 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
module.exports = {
"env": {
"commonjs": true,
"es2021": true,
"node": true
},
"extends": "eslint:recommended",
"parserOptions": {
"ecmaVersion": 12
},
"rules": {
"indent": [
"error",
4
],
"linebreak-style": [
"error",
"unix"
],
"quotes": [
"error",
"double"
],
"semi": [
"error",
"always"
]
}
};
29 changes: 29 additions & 0 deletions .github/workflows/Node.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Node.js CI

on:
push:
branches: [ master ]
workflow_dispatch:

jobs:
test:
name: ESLint Test
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v2

- name: Setup Node.js 16
uses: actions/setup-node@v2
with:
node-version: 16

- name: Install dependencies
run: npm install --dev

- name: Run test
run: eslint .

env:
CI: true
52 changes: 28 additions & 24 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
"use strict";

const dgram = require("dgram");
const EventEmitter = require("events");

Expand Down Expand Up @@ -28,8 +30,8 @@ class Answer {
*/
add(buffer) {
if (!this.goldsource) {
let total = buffer.readInt8();
let number = buffer.readInt8(1);
const total = buffer.readInt8();
const number = buffer.readInt8(1);

if (number < 0 || number != this.parts.length) {
this.goldsource = true;
Expand All @@ -43,9 +45,9 @@ class Answer {

else {
//Upper 4 bits represent the number of the current packet (starting at 0) and bottom 4 bits represent the total number of packets (2 to 15).
let num = buffer.readInt8();
let number = (num & 240) / 16;
let total = num & 15;
const num = buffer.readInt8();
const number = (num & 240) / 16;
const total = num & 15;

if (this.totalpackets == undefined) this.totalpackets = total;

Expand All @@ -71,14 +73,15 @@ class SQUnpacker extends EventEmitter {
* @type {Record<string, Answer>}
*/
this.answers = {};

emitter.on("message", msg => this.readMessage(msg));
}

/**
* @param {Buffer} buffer
*/
readMessage(buffer) {
let header = buffer.readInt32LE();
const header = buffer.readInt32LE();
buffer = buffer.slice(4);

if (header == -1) {
Expand All @@ -87,7 +90,7 @@ class SQUnpacker extends EventEmitter {
}

if (header == -2) {
let id = buffer.readInt32LE();
const id = buffer.readInt32LE();
let ans = this.answers[id];

if (!ans) {
Expand All @@ -113,7 +116,7 @@ class SourceQuery {
* @param {boolean} autoclose
*/
constructor(address, port, timeout = 1000, autoclose = true) {
let _port = Number(port);
const _port = Number(port);

if (!address || typeof address != "string") throw new Error("Invalid address");
if (_port <= 0 || _port >= 65535 || isNaN(_port)) throw new Error("Invalid port");
Expand Down Expand Up @@ -164,16 +167,16 @@ class SourceQuery {
* @param {Buffer} buffer
* @param {boolean?} goldsource
*/
let handler = (buffer, goldsource) => {
const handler = (buffer, goldsource) => {
if (buffer.length < 1) return;

let header = String.fromCharCode(buffer[0]);
const header = String.fromCharCode(buffer[0]);
if (!allowed_headers.includes(header) && !goldsource) return;

this.unpacker.off("message", handler);
clearTimeout(timer);

resolve({buffer: buffer.slice(1), header: header});
resolve({ buffer: buffer.slice(1), header });
this.queryEnded();
};

Expand Down Expand Up @@ -245,8 +248,8 @@ class SourceQuery {

static preflightCheck(address, port) {
return new Promise((resolve, reject) => {
let query = new SourceQuery(address, port);
query.send(Util.createInfoChallenge(ids.A2S_INFO), [ids.S2A_INFO, ids.S2A_SERVERQUERY_GETCHALLENGE]).then(() => resolve()).catch(() => reject());
const query = new SourceQuery(address, port);
query.send(Util.createInfoChallenge(ids.A2S_INFO), [ids.S2A_INFO, ids.S2A_SERVERQUERY_GETCHALLENGE]).then(() => resolve()).catch(reject);
});
}
}
Expand All @@ -256,7 +259,7 @@ class Util {
* @param {Buffer} buffer
*/
static parseInfoBuffer(buffer) {
let info = {
const info = {
protocol: buffer.readInt8(),
name: Util.getString(buffer, 1),
map: "",
Expand All @@ -269,7 +272,8 @@ class Util {
servertype: "",
environment: "",
password: false,
vac: false
vac: false,
version: ""
};

buffer = buffer.slice(1 + Util.byteLength(info.name));
Expand Down Expand Up @@ -308,7 +312,7 @@ class Util {
buffer = buffer.slice(Util.byteLength(info.version));

if (buffer.length > 1) {
let EDF = buffer.readInt8();
const EDF = buffer.readInt8();
buffer = buffer.slice(1);

if ((EDF & 0x80) !== 0) {
Expand Down Expand Up @@ -347,11 +351,11 @@ class Util {
*/
static parsePlayerBuffer(buffer) {
//we ignore the first byte (player count) because it is unreliable when there is more than 255 players
let players = [];
const players = [];
buffer = buffer.slice(1);

while (buffer.length > 0) {
let obj = { index: 0 };
const obj = { index: 0 };
//index is broken
buffer = buffer.slice(1);

Expand All @@ -378,16 +382,16 @@ class Util {
*/
static parseRulesBuffer(buffer) {
//we ignore first two bytes because they are useless
let rules = {};
const rules = {};
buffer = buffer.slice(2);

do {
let key = Util.getString(buffer);
const key = Util.getString(buffer);
if (!key) break;

buffer = buffer.slice(Util.byteLength(key));

let val = Util.getString(buffer);
const val = Util.getString(buffer);
buffer = buffer.slice(Util.byteLength(val));

rules[key] = val;
Expand All @@ -411,7 +415,7 @@ class Util {
* @param {Buffer} buffer
*/
static getString(buffer, offset = 0) {
let length = this.getStringLength(buffer, offset);
const length = this.getStringLength(buffer, offset);
if (length == -1) return "";

return buffer.toString(undefined, offset, length);
Expand All @@ -422,7 +426,7 @@ class Util {
* @param {number?} challenge_number
*/
static createChallenge(header, challenge_number = undefined) {
let buffer = Buffer.alloc(9, 0xFF);
const buffer = Buffer.alloc(9, 0xFF);
buffer.writeInt8(header.charCodeAt(), 4);

if (challenge_number) buffer.writeInt32LE(challenge_number, 5);
Expand All @@ -434,7 +438,7 @@ class Util {
* @param {number} challenge_number
*/
static createInfoChallenge(header, challenge_number = undefined) {
let buffer = Buffer.alloc(challenge_number ? 29 : 25, 0xFF);
const buffer = Buffer.alloc(challenge_number ? 29 : 25, 0xFF);

buffer.writeInt8(header.charCodeAt(), 4);
buffer.write("Source Engine Query\0", 5);
Expand Down
9 changes: 5 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "sourcequery",
"version": "1.1.4",
"description": "https://www.npmjs.com/package/sourcequery but it doesn't suck",
"version": "1.1.5",
"description": "Steam server querying tool",
"main": "./index.js",
"module": "./index.mjs",
"types": "./index.d.ts",
Expand Down Expand Up @@ -32,8 +32,9 @@
"url": "https://github.com/MBR-0001/sourcequery/issues"
},
"homepage": "https://github.com/MBR-0001/sourcequery#readme",
"dependencies": {},
"devDependencies": {},
"devDependencies": {
"eslint": "^8.0.0"
},
"engines": {
"node": ">=8.0.0"
}
Expand Down

0 comments on commit 7decfd4

Please sign in to comment.