feat(gamedig): Update gamedig implementation to v5 (#4949)
Co-authored-by: Frank Elsinga <frank@elsinga.de>
This commit is contained in:
parent
af342b68f5
commit
d096e2902c
198
db/knex_migrations/2026-01-02-0713-gamedig-v4-to-v5.js
Normal file
198
db/knex_migrations/2026-01-02-0713-gamedig-v4-to-v5.js
Normal file
@ -0,0 +1,198 @@
|
|||||||
|
// Migration to update monitor.game from GameDig v4 to v5 game IDs
|
||||||
|
// Reference: https://github.com/gamedig/node-gamedig/blob/master/MIGRATE_IDS.md
|
||||||
|
|
||||||
|
// Lookup table mapping v4 game IDs to v5 game IDs
|
||||||
|
const gameDig4to5IdMap = {
|
||||||
|
"americasarmypg": "aapg",
|
||||||
|
"7d2d": "sdtd",
|
||||||
|
"as": "actionsource",
|
||||||
|
"ageofchivalry": "aoc",
|
||||||
|
"arkse": "ase",
|
||||||
|
"arcasimracing": "asr08",
|
||||||
|
"arma": "aaa",
|
||||||
|
"arma2oa": "a2oa",
|
||||||
|
"armacwa": "acwa",
|
||||||
|
"armar": "armaresistance",
|
||||||
|
"armare": "armareforger",
|
||||||
|
"armagetron": "armagetronadvanced",
|
||||||
|
"bat1944": "battalion1944",
|
||||||
|
"bf1942": "battlefield1942",
|
||||||
|
"bfv": "battlefieldvietnam",
|
||||||
|
"bf2": "battlefield2",
|
||||||
|
"bf2142": "battlefield2142",
|
||||||
|
"bfbc2": "bbc2",
|
||||||
|
"bf3": "battlefield3",
|
||||||
|
"bf4": "battlefield4",
|
||||||
|
"bfh": "battlefieldhardline",
|
||||||
|
"bd": "basedefense",
|
||||||
|
"bs": "bladesymphony",
|
||||||
|
"buildandshoot": "bas",
|
||||||
|
"cod4": "cod4mw",
|
||||||
|
"callofjuarez": "coj",
|
||||||
|
"chivalry": "cmw",
|
||||||
|
"commandos3": "c3db",
|
||||||
|
"cacrenegade": "cacr",
|
||||||
|
"contactjack": "contractjack",
|
||||||
|
"cs15": "counterstrike15",
|
||||||
|
"cs16": "counterstrike16",
|
||||||
|
"cs2": "counterstrike2",
|
||||||
|
"crossracing": "crce",
|
||||||
|
"darkesthour": "dhe4445",
|
||||||
|
"daysofwar": "dow",
|
||||||
|
"deadlydozenpt": "ddpt",
|
||||||
|
"dh2005": "deerhunter2005",
|
||||||
|
"dinodday": "ddd",
|
||||||
|
"dirttrackracing2": "dtr2",
|
||||||
|
"dmc": "deathmatchclassic",
|
||||||
|
"dnl": "dal",
|
||||||
|
"drakan": "dootf",
|
||||||
|
"dys": "dystopia",
|
||||||
|
"em": "empiresmod",
|
||||||
|
"empyrion": "egs",
|
||||||
|
"f12002": "formulaone2002",
|
||||||
|
"flashpointresistance": "ofr",
|
||||||
|
"fivem": "gta5f",
|
||||||
|
"forrest": "theforrest",
|
||||||
|
"graw": "tcgraw",
|
||||||
|
"graw2": "tcgraw2",
|
||||||
|
"giantscitizenkabuto": "gck",
|
||||||
|
"ges": "goldeneyesource",
|
||||||
|
"gore": "gus",
|
||||||
|
"hldm": "hld",
|
||||||
|
"hldms": "hlds",
|
||||||
|
"hlopfor": "hlof",
|
||||||
|
"hl2dm": "hl2d",
|
||||||
|
"hidden": "thehidden",
|
||||||
|
"had2": "hiddendangerous2",
|
||||||
|
"igi2": "i2cs",
|
||||||
|
"il2": "il2sturmovik",
|
||||||
|
"insurgencymic": "imic",
|
||||||
|
"isle": "theisle",
|
||||||
|
"jamesbondnightfire": "jb007n",
|
||||||
|
"jc2mp": "jc2m",
|
||||||
|
"jc3mp": "jc3m",
|
||||||
|
"kingpin": "kloc",
|
||||||
|
"kisspc": "kpctnc",
|
||||||
|
"kspdmp": "kspd",
|
||||||
|
"kzmod": "kreedzclimbing",
|
||||||
|
"left4dead": "l4d",
|
||||||
|
"left4dead2": "l4d2",
|
||||||
|
"m2mp": "m2m",
|
||||||
|
"mohsh": "mohaas",
|
||||||
|
"mohbt": "mohaab",
|
||||||
|
"mohab": "moha",
|
||||||
|
"moh2010": "moh",
|
||||||
|
"mohwf": "mohw",
|
||||||
|
"minecraftbe": "mbe",
|
||||||
|
"mtavc": "gtavcmta",
|
||||||
|
"mtasa": "gtasamta",
|
||||||
|
"ns": "naturalselection",
|
||||||
|
"ns2": "naturalselection2",
|
||||||
|
"nwn": "neverwinternights",
|
||||||
|
"nwn2": "neverwinternights2",
|
||||||
|
"nolf": "tonolf",
|
||||||
|
"nolf2": "nolf2asihw",
|
||||||
|
"pvkii": "pvak2",
|
||||||
|
"ps": "postscriptum",
|
||||||
|
"primalcarnage": "pce",
|
||||||
|
"pc": "projectcars",
|
||||||
|
"pc2": "projectcars2",
|
||||||
|
"prbf2": "prb2",
|
||||||
|
"przomboid": "projectzomboid",
|
||||||
|
"quake1": "quake",
|
||||||
|
"quake3": "q3a",
|
||||||
|
"ragdollkungfu": "rdkf",
|
||||||
|
"r6": "rainbowsix",
|
||||||
|
"r6roguespear": "rs2rs",
|
||||||
|
"r6ravenshield": "rs3rs",
|
||||||
|
"redorchestraost": "roo4145",
|
||||||
|
"redm": "rdr2r",
|
||||||
|
"riseofnations": "ron",
|
||||||
|
"rs2": "rs2v",
|
||||||
|
"samp": "gtasam",
|
||||||
|
"saomp": "gtasao",
|
||||||
|
"savage2": "s2ats",
|
||||||
|
"ss": "serioussam",
|
||||||
|
"ss2": "serioussam2",
|
||||||
|
"ship": "theship",
|
||||||
|
"sinep": "sinepisodes",
|
||||||
|
"sonsoftheforest": "sotf",
|
||||||
|
"swbf": "swb",
|
||||||
|
"swbf2": "swb2",
|
||||||
|
"swjk": "swjkja",
|
||||||
|
"swjk2": "swjk2jo",
|
||||||
|
"takeonhelicopters": "toh",
|
||||||
|
"tf2": "teamfortress2",
|
||||||
|
"terraria": "terrariatshock",
|
||||||
|
"tribes1": "t1s",
|
||||||
|
"ut": "unrealtournament",
|
||||||
|
"ut2003": "unrealtournament2003",
|
||||||
|
"ut2004": "unrealtournament2004",
|
||||||
|
"ut3": "unrealtournament3",
|
||||||
|
"v8supercar": "v8sc",
|
||||||
|
"vcmp": "vcm",
|
||||||
|
"vs": "vampireslayer",
|
||||||
|
"wheeloftime": "wot",
|
||||||
|
"wolfenstein2009": "wolfenstein",
|
||||||
|
"wolfensteinet": "wet",
|
||||||
|
"wurm": "wurmunlimited",
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Migrate game IDs from v4 to v5
|
||||||
|
* @param {import("knex").Knex} knex - Knex instance
|
||||||
|
* @returns {Promise<void>}
|
||||||
|
*/
|
||||||
|
exports.up = async function (knex) {
|
||||||
|
await knex.transaction(async (trx) => {
|
||||||
|
// Get all monitors that use the gamedig type
|
||||||
|
const monitors = await trx("monitor")
|
||||||
|
.select("id", "game")
|
||||||
|
.where("type", "gamedig")
|
||||||
|
.whereNotNull("game");
|
||||||
|
|
||||||
|
// Update each monitor with the new game ID if it needs migration
|
||||||
|
for (const monitor of monitors) {
|
||||||
|
const oldGameId = monitor.game;
|
||||||
|
const newGameId = gameDig4to5IdMap[oldGameId];
|
||||||
|
|
||||||
|
if (newGameId) {
|
||||||
|
await trx("monitor")
|
||||||
|
.where("id", monitor.id)
|
||||||
|
.update({ game: newGameId });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Revert game IDs from v5 back to v4
|
||||||
|
* @param {import("knex").Knex} knex - Knex instance
|
||||||
|
* @returns {Promise<void>}
|
||||||
|
*/
|
||||||
|
exports.down = async function (knex) {
|
||||||
|
// Create reverse mapping from the same LUT
|
||||||
|
const gameDig5to4IdMap = Object.fromEntries(
|
||||||
|
Object.entries(gameDig4to5IdMap).map(([ v4, v5 ]) => [ v5, v4 ])
|
||||||
|
);
|
||||||
|
|
||||||
|
await knex.transaction(async (trx) => {
|
||||||
|
// Get all monitors that use the gamedig type
|
||||||
|
const monitors = await trx("monitor")
|
||||||
|
.select("id", "game")
|
||||||
|
.where("type", "gamedig")
|
||||||
|
.whereNotNull("game");
|
||||||
|
|
||||||
|
// Revert each monitor back to the old game ID if it was migrated
|
||||||
|
for (const monitor of monitors) {
|
||||||
|
const newGameId = monitor.game;
|
||||||
|
const oldGameId = gameDig5to4IdMap[newGameId];
|
||||||
|
|
||||||
|
if (oldGameId) {
|
||||||
|
await trx("monitor")
|
||||||
|
.where("id", monitor.id)
|
||||||
|
.update({ game: oldGameId });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
403
package-lock.json
generated
403
package-lock.json
generated
@ -34,7 +34,7 @@
|
|||||||
"express-static-gzip": "~2.1.7",
|
"express-static-gzip": "~2.1.7",
|
||||||
"feed": "^4.2.2",
|
"feed": "^4.2.2",
|
||||||
"form-data": "~4.0.0",
|
"form-data": "~4.0.0",
|
||||||
"gamedig": "^4.2.0",
|
"gamedig": "^5.0.1",
|
||||||
"html-escaper": "^3.0.3",
|
"html-escaper": "^3.0.3",
|
||||||
"http-cookie-agent": "~5.0.4",
|
"http-cookie-agent": "~5.0.4",
|
||||||
"http-graceful-shutdown": "~3.1.7",
|
"http-graceful-shutdown": "~3.1.7",
|
||||||
@ -4956,12 +4956,12 @@
|
|||||||
"license": "BSD-3-Clause"
|
"license": "BSD-3-Clause"
|
||||||
},
|
},
|
||||||
"node_modules/@sindresorhus/is": {
|
"node_modules/@sindresorhus/is": {
|
||||||
"version": "4.6.0",
|
"version": "5.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz",
|
||||||
"integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
|
"integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10"
|
"node": ">=14.16"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sindresorhus/is?sponsor=1"
|
"url": "https://github.com/sindresorhus/is?sponsor=1"
|
||||||
@ -5760,18 +5760,6 @@
|
|||||||
"@popperjs/core": "^2.9.2"
|
"@popperjs/core": "^2.9.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/cacheable-request": {
|
|
||||||
"version": "6.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz",
|
|
||||||
"integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"@types/http-cache-semantics": "*",
|
|
||||||
"@types/keyv": "^3.1.4",
|
|
||||||
"@types/node": "*",
|
|
||||||
"@types/responselike": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@types/connect": {
|
"node_modules/@types/connect": {
|
||||||
"version": "3.4.38",
|
"version": "3.4.38",
|
||||||
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
|
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
|
||||||
@ -5893,15 +5881,6 @@
|
|||||||
"integrity": "sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==",
|
"integrity": "sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@types/keyv": {
|
|
||||||
"version": "3.1.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz",
|
|
||||||
"integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"@types/node": "*"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@types/koa": {
|
"node_modules/@types/koa": {
|
||||||
"version": "2.15.0",
|
"version": "2.15.0",
|
||||||
"resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.15.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.15.0.tgz",
|
||||||
@ -5984,15 +5963,6 @@
|
|||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@types/responselike": {
|
|
||||||
"version": "1.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz",
|
|
||||||
"integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"@types/node": "*"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@types/semver": {
|
"node_modules/@types/semver": {
|
||||||
"version": "7.7.1",
|
"version": "7.7.1",
|
||||||
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz",
|
||||||
@ -7820,54 +7790,30 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/cacheable-lookup": {
|
"node_modules/cacheable-lookup": {
|
||||||
"version": "6.1.0",
|
"version": "7.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz",
|
||||||
"integrity": "sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww==",
|
"integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10.6.0"
|
"node": ">=14.16"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/cacheable-request": {
|
"node_modules/cacheable-request": {
|
||||||
"version": "7.0.4",
|
"version": "10.2.14",
|
||||||
"resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz",
|
||||||
"integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==",
|
"integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"clone-response": "^1.0.2",
|
"@types/http-cache-semantics": "^4.0.2",
|
||||||
"get-stream": "^5.1.0",
|
"get-stream": "^6.0.1",
|
||||||
"http-cache-semantics": "^4.0.0",
|
"http-cache-semantics": "^4.1.1",
|
||||||
"keyv": "^4.0.0",
|
"keyv": "^4.5.3",
|
||||||
"lowercase-keys": "^2.0.0",
|
"mimic-response": "^4.0.0",
|
||||||
"normalize-url": "^6.0.1",
|
"normalize-url": "^8.0.0",
|
||||||
"responselike": "^2.0.0"
|
"responselike": "^3.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=14.16"
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/cacheable-request/node_modules/get-stream": {
|
|
||||||
"version": "5.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
|
|
||||||
"integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"pump": "^3.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/cacheable-request/node_modules/lowercase-keys": {
|
|
||||||
"version": "2.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
|
|
||||||
"integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/call-bind": {
|
"node_modules/call-bind": {
|
||||||
@ -8200,18 +8146,6 @@
|
|||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/clone-response": {
|
|
||||||
"version": "1.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
|
|
||||||
"integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"mimic-response": "^1.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/cluster-key-slot": {
|
"node_modules/cluster-key-slot": {
|
||||||
"version": "1.1.2",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz",
|
||||||
@ -9543,6 +9477,14 @@
|
|||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
|
"node_modules/emitter-component": {
|
||||||
|
"version": "1.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.1.2.tgz",
|
||||||
|
"integrity": "sha512-QdXO3nXOzZB4pAjM0n6ZE+R9/+kPpECA/XSELIcc54NeYVnBqIk+4DFiBgK+8QbV3mdvTG6nedl7dTYgO+5wDw==",
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/emoji-regex": {
|
"node_modules/emoji-regex": {
|
||||||
"version": "8.0.0",
|
"version": "8.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||||
@ -10365,7 +10307,6 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"strnum": "^2.1.0"
|
"strnum": "^2.1.0"
|
||||||
},
|
},
|
||||||
@ -10686,10 +10627,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/form-data-encoder": {
|
"node_modules/form-data-encoder": {
|
||||||
"version": "1.7.1",
|
"version": "2.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz",
|
"resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz",
|
||||||
"integrity": "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==",
|
"integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==",
|
||||||
"license": "MIT"
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 14.17"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"node_modules/formdata-node": {
|
"node_modules/formdata-node": {
|
||||||
"version": "6.0.3",
|
"version": "6.0.3",
|
||||||
@ -10894,171 +10838,42 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/gamedig": {
|
"node_modules/gamedig": {
|
||||||
"version": "4.3.2",
|
"version": "5.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/gamedig/-/gamedig-4.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/gamedig/-/gamedig-5.3.2.tgz",
|
||||||
"integrity": "sha512-TjYwybvy8HNAhkv2EJccd5HROIiMeMriWmeX8vT8m5Ibat5JMzVpugzsD8L8XZVrOfiXnVg/9DhWYM8k/VG/vw==",
|
"integrity": "sha512-R2b1LwjW783PZsHRl9M8R06UkvJwXmJ6PDKk48UukJQ9ktiwrCeAk90MAZx6nF3oA444uf7r5eHjfaYbNoSV+Q==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"cheerio": "1.0.0-rc.10",
|
"fast-xml-parser": "5.2.5",
|
||||||
"gbxremote": "0.2.1",
|
"gbxremote": "0.2.1",
|
||||||
"got": "12.1.0",
|
"got": "13.0.0",
|
||||||
"iconv-lite": "0.6.3",
|
"iconv-lite": "0.7.0",
|
||||||
"long": "5.2.0",
|
"long": "5.3.2",
|
||||||
"minimist": "1.2.6",
|
"minimist": "1.2.8",
|
||||||
"punycode": "2.1.1",
|
|
||||||
"seek-bzip": "2.0.0",
|
"seek-bzip": "2.0.0",
|
||||||
|
"telnet-client": "2.2.6",
|
||||||
"varint": "6.0.0"
|
"varint": "6.0.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"gamedig": "bin/gamedig.js"
|
"gamedig": "bin/gamedig.js"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14.0.0"
|
"node": ">=16.20.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/gamedig/node_modules/cheerio": {
|
"node_modules/gamedig/node_modules/iconv-lite": {
|
||||||
"version": "1.0.0-rc.10",
|
"version": "0.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
|
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz",
|
||||||
"integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
|
"integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"cheerio-select": "^1.5.0",
|
"safer-buffer": ">= 2.1.2 < 3.0.0"
|
||||||
"dom-serializer": "^1.3.2",
|
|
||||||
"domhandler": "^4.2.0",
|
|
||||||
"htmlparser2": "^6.1.0",
|
|
||||||
"parse5": "^6.0.1",
|
|
||||||
"parse5-htmlparser2-tree-adapter": "^6.0.1",
|
|
||||||
"tslib": "^2.2.0"
|
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 6"
|
"node": ">=0.10.0"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/cheeriojs/cheerio?sponsor=1"
|
"type": "opencollective",
|
||||||
}
|
"url": "https://opencollective.com/express"
|
||||||
},
|
|
||||||
"node_modules/gamedig/node_modules/cheerio-select": {
|
|
||||||
"version": "1.6.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz",
|
|
||||||
"integrity": "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==",
|
|
||||||
"license": "BSD-2-Clause",
|
|
||||||
"dependencies": {
|
|
||||||
"css-select": "^4.3.0",
|
|
||||||
"css-what": "^6.0.1",
|
|
||||||
"domelementtype": "^2.2.0",
|
|
||||||
"domhandler": "^4.3.1",
|
|
||||||
"domutils": "^2.8.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/fb55"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/gamedig/node_modules/css-select": {
|
|
||||||
"version": "4.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
|
|
||||||
"integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
|
|
||||||
"license": "BSD-2-Clause",
|
|
||||||
"dependencies": {
|
|
||||||
"boolbase": "^1.0.0",
|
|
||||||
"css-what": "^6.0.1",
|
|
||||||
"domhandler": "^4.3.1",
|
|
||||||
"domutils": "^2.8.0",
|
|
||||||
"nth-check": "^2.0.1"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/fb55"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/gamedig/node_modules/dom-serializer": {
|
|
||||||
"version": "1.4.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
|
|
||||||
"integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"domelementtype": "^2.0.1",
|
|
||||||
"domhandler": "^4.2.0",
|
|
||||||
"entities": "^2.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/gamedig/node_modules/domhandler": {
|
|
||||||
"version": "4.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
|
|
||||||
"integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
|
|
||||||
"license": "BSD-2-Clause",
|
|
||||||
"dependencies": {
|
|
||||||
"domelementtype": "^2.2.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 4"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/fb55/domhandler?sponsor=1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/gamedig/node_modules/domutils": {
|
|
||||||
"version": "2.8.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
|
|
||||||
"integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
|
|
||||||
"license": "BSD-2-Clause",
|
|
||||||
"dependencies": {
|
|
||||||
"dom-serializer": "^1.0.1",
|
|
||||||
"domelementtype": "^2.2.0",
|
|
||||||
"domhandler": "^4.2.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/fb55/domutils?sponsor=1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/gamedig/node_modules/entities": {
|
|
||||||
"version": "2.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
|
|
||||||
"integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
|
|
||||||
"license": "BSD-2-Clause",
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/fb55/entities?sponsor=1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/gamedig/node_modules/htmlparser2": {
|
|
||||||
"version": "6.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
|
|
||||||
"integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
|
|
||||||
"funding": [
|
|
||||||
"https://github.com/fb55/htmlparser2?sponsor=1",
|
|
||||||
{
|
|
||||||
"type": "github",
|
|
||||||
"url": "https://github.com/sponsors/fb55"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"domelementtype": "^2.0.1",
|
|
||||||
"domhandler": "^4.0.0",
|
|
||||||
"domutils": "^2.5.2",
|
|
||||||
"entities": "^2.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/gamedig/node_modules/long": {
|
|
||||||
"version": "5.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz",
|
|
||||||
"integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w==",
|
|
||||||
"license": "Apache-2.0"
|
|
||||||
},
|
|
||||||
"node_modules/gamedig/node_modules/parse5": {
|
|
||||||
"version": "6.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
|
|
||||||
"integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/gamedig/node_modules/parse5-htmlparser2-tree-adapter": {
|
|
||||||
"version": "6.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
|
|
||||||
"integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"parse5": "^6.0.1"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/gauge": {
|
"node_modules/gauge": {
|
||||||
@ -11415,27 +11230,25 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/got": {
|
"node_modules/got": {
|
||||||
"version": "12.1.0",
|
"version": "13.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/got/-/got-12.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz",
|
||||||
"integrity": "sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==",
|
"integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sindresorhus/is": "^4.6.0",
|
"@sindresorhus/is": "^5.2.0",
|
||||||
"@szmarczak/http-timer": "^5.0.1",
|
"@szmarczak/http-timer": "^5.0.1",
|
||||||
"@types/cacheable-request": "^6.0.2",
|
"cacheable-lookup": "^7.0.0",
|
||||||
"@types/responselike": "^1.0.0",
|
"cacheable-request": "^10.2.8",
|
||||||
"cacheable-lookup": "^6.0.4",
|
|
||||||
"cacheable-request": "^7.0.2",
|
|
||||||
"decompress-response": "^6.0.0",
|
"decompress-response": "^6.0.0",
|
||||||
"form-data-encoder": "1.7.1",
|
"form-data-encoder": "^2.1.2",
|
||||||
"get-stream": "^6.0.1",
|
"get-stream": "^6.0.1",
|
||||||
"http2-wrapper": "^2.1.10",
|
"http2-wrapper": "^2.1.10",
|
||||||
"lowercase-keys": "^3.0.0",
|
"lowercase-keys": "^3.0.0",
|
||||||
"p-cancelable": "^3.0.0",
|
"p-cancelable": "^3.0.0",
|
||||||
"responselike": "^2.0.0"
|
"responselike": "^3.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14.16"
|
"node": ">=16"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sindresorhus/got?sponsor=1"
|
"url": "https://github.com/sindresorhus/got?sponsor=1"
|
||||||
@ -13623,12 +13436,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/mimic-response": {
|
"node_modules/mimic-response": {
|
||||||
"version": "1.0.1",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz",
|
||||||
"integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
|
"integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=4"
|
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/minimalistic-assert": {
|
"node_modules/minimalistic-assert": {
|
||||||
@ -13653,10 +13469,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/minimist": {
|
"node_modules/minimist": {
|
||||||
"version": "1.2.6",
|
"version": "1.2.8",
|
||||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
|
||||||
"integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
|
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
|
||||||
"license": "MIT"
|
"license": "MIT",
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"node_modules/minimist-options": {
|
"node_modules/minimist-options": {
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
@ -14107,6 +13926,12 @@
|
|||||||
"node": ">= 0.6"
|
"node": ">= 0.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/net": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/net/-/net-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-kbhcj2SVVR4caaVnGLJKmlk2+f+oLkjqdKeQlmUtz6nGzOpbcobwVIeSURNgraV/v3tlmGIX82OcPCl0K6RbHQ==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/net-snmp": {
|
"node_modules/net-snmp": {
|
||||||
"version": "3.26.0",
|
"version": "3.26.0",
|
||||||
"resolved": "https://registry.npmjs.org/net-snmp/-/net-snmp-3.26.0.tgz",
|
"resolved": "https://registry.npmjs.org/net-snmp/-/net-snmp-3.26.0.tgz",
|
||||||
@ -14388,12 +14213,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/normalize-url": {
|
"node_modules/normalize-url": {
|
||||||
"version": "6.1.0",
|
"version": "8.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.1.tgz",
|
||||||
"integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
|
"integrity": "sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10"
|
"node": ">=14.16"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
@ -16272,26 +16097,20 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/responselike": {
|
"node_modules/responselike": {
|
||||||
"version": "2.0.1",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz",
|
||||||
"integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==",
|
"integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"lowercase-keys": "^2.0.0"
|
"lowercase-keys": "^3.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.16"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/responselike/node_modules/lowercase-keys": {
|
|
||||||
"version": "2.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
|
|
||||||
"integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/retimer": {
|
"node_modules/retimer": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/retimer/-/retimer-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/retimer/-/retimer-3.0.0.tgz",
|
||||||
@ -17254,6 +17073,15 @@
|
|||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/stream": {
|
||||||
|
"version": "0.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/stream/-/stream-0.0.2.tgz",
|
||||||
|
"integrity": "sha512-gCq3NDI2P35B2n6t76YJuOp7d6cN/C7Rt0577l91wllh0sY9ZBuw9KaSGqH/b0hzn3CWWJbpbW0W0WvQ1H/Q7g==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"emitter-component": "^1.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/stream-shift": {
|
"node_modules/stream-shift": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz",
|
||||||
@ -17552,8 +17380,7 @@
|
|||||||
"url": "https://github.com/sponsors/NaturalIntelligence"
|
"url": "https://github.com/sponsors/NaturalIntelligence"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT"
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"node_modules/style-search": {
|
"node_modules/style-search": {
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
@ -17969,6 +17796,20 @@
|
|||||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/telnet-client": {
|
||||||
|
"version": "2.2.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/telnet-client/-/telnet-client-2.2.6.tgz",
|
||||||
|
"integrity": "sha512-ZUYrLsPtQupQww3eSEORDVOb6ztdtKEghya6TVXPo2tg/UQq2pn5rHhvwuUvyYpbnsoqdNY1fyD1GNkXHR8dYA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"net": "^1.0.2",
|
||||||
|
"stream": "^0.0.2"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "paypal",
|
||||||
|
"url": "https://paypal.me/kozjak"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/temp-dir": {
|
"node_modules/temp-dir": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz",
|
||||||
@ -19130,16 +18971,6 @@
|
|||||||
"proxy-from-env": "^1.1.0"
|
"proxy-from-env": "^1.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/wait-on/node_modules/minimist": {
|
|
||||||
"version": "1.2.8",
|
|
||||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
|
|
||||||
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/web-push": {
|
"node_modules/web-push": {
|
||||||
"version": "3.6.7",
|
"version": "3.6.7",
|
||||||
"resolved": "https://registry.npmjs.org/web-push/-/web-push-3.6.7.tgz",
|
"resolved": "https://registry.npmjs.org/web-push/-/web-push-3.6.7.tgz",
|
||||||
|
|||||||
@ -95,7 +95,7 @@
|
|||||||
"express-static-gzip": "~2.1.7",
|
"express-static-gzip": "~2.1.7",
|
||||||
"feed": "^4.2.2",
|
"feed": "^4.2.2",
|
||||||
"form-data": "~4.0.0",
|
"form-data": "~4.0.0",
|
||||||
"gamedig": "^4.2.0",
|
"gamedig": "^5.0.1",
|
||||||
"html-escaper": "^3.0.3",
|
"html-escaper": "^3.0.3",
|
||||||
"http-cookie-agent": "~5.0.4",
|
"http-cookie-agent": "~5.0.4",
|
||||||
"http-graceful-shutdown": "~3.1.7",
|
"http-graceful-shutdown": "~3.1.7",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
const { MonitorType } = require("./monitor-type");
|
const { MonitorType } = require("./monitor-type");
|
||||||
const { UP, DOWN } = require("../../src/util");
|
const { UP } = require("../../src/util");
|
||||||
const Gamedig = require("gamedig");
|
const { GameDig } = require("gamedig");
|
||||||
const dns = require("dns").promises;
|
const dns = require("dns").promises;
|
||||||
const net = require("net");
|
const net = require("net");
|
||||||
|
|
||||||
@ -11,15 +11,13 @@ class GameDigMonitorType extends MonitorType {
|
|||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async check(monitor, heartbeat, server) {
|
async check(monitor, heartbeat, server) {
|
||||||
heartbeat.status = DOWN;
|
|
||||||
|
|
||||||
let host = monitor.hostname;
|
let host = monitor.hostname;
|
||||||
if (net.isIP(host) === 0) {
|
if (net.isIP(host) === 0) {
|
||||||
host = await this.resolveHostname(host);
|
host = await this.resolveHostname(host);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const state = await Gamedig.query({
|
const state = await GameDig.query({
|
||||||
type: monitor.game,
|
type: monitor.game,
|
||||||
host: host,
|
host: host,
|
||||||
port: monitor.port,
|
port: monitor.port,
|
||||||
|
|||||||
@ -2,30 +2,35 @@ const { log } = require("../../src/util");
|
|||||||
const { Settings } = require("../settings");
|
const { Settings } = require("../settings");
|
||||||
const { sendInfo } = require("../client");
|
const { sendInfo } = require("../client");
|
||||||
const { checkLogin } = require("../util-server");
|
const { checkLogin } = require("../util-server");
|
||||||
const GameResolver = require("gamedig/lib/GameResolver");
|
const { games } = require("gamedig");
|
||||||
const { testChrome } = require("../monitor-types/real-browser-monitor-type");
|
const { testChrome } = require("../monitor-types/real-browser-monitor-type");
|
||||||
const fsAsync = require("fs").promises;
|
const fsAsync = require("fs").promises;
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
|
|
||||||
let gameResolver = new GameResolver();
|
|
||||||
let gameList = null;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a game list via GameDig
|
* Get a game list via GameDig
|
||||||
* @returns {object[]} list of games supported by GameDig
|
* @returns {object} list of games supported by GameDig
|
||||||
*/
|
*/
|
||||||
function getGameList() {
|
function getGameList() {
|
||||||
if (gameList == null) {
|
let gameList = [];
|
||||||
gameList = gameResolver._readGames().games.sort((a, b) => {
|
gameList = Object.keys(games).map(key => {
|
||||||
if ( a.pretty < b.pretty ) {
|
const item = games[key];
|
||||||
return -1;
|
return {
|
||||||
}
|
keys: [ key ],
|
||||||
if ( a.pretty > b.pretty ) {
|
pretty: item.name,
|
||||||
return 1;
|
options: item.options,
|
||||||
}
|
extra: item.extra || {}
|
||||||
return 0;
|
};
|
||||||
});
|
});
|
||||||
}
|
gameList.sort((a, b) => {
|
||||||
|
if ( a.pretty < b.pretty ) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if ( a.pretty > b.pretty ) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
return gameList;
|
return gameList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,15 +1,15 @@
|
|||||||
const { describe, test, mock } = require("node:test");
|
const { describe, test, mock } = require("node:test");
|
||||||
const assert = require("node:assert");
|
const assert = require("node:assert");
|
||||||
const { GameDigMonitorType } = require("../../../server/monitor-types/gamedig");
|
const { GameDigMonitorType } = require("../../../server/monitor-types/gamedig");
|
||||||
const { UP, DOWN, PENDING } = require("../../../src/util");
|
const { UP, PENDING } = require("../../../src/util");
|
||||||
const net = require("net");
|
const net = require("net");
|
||||||
const Gamedig = require("gamedig");
|
const { GameDig } = require("gamedig");
|
||||||
|
|
||||||
describe("GameDig Monitor", () => {
|
describe("GameDig Monitor", () => {
|
||||||
test("check() sets status to UP when Gamedig.query returns valid server response", async () => {
|
test("check() sets status to UP when Gamedig.query returns valid server response", async () => {
|
||||||
const gamedigMonitor = new GameDigMonitorType();
|
const gamedigMonitor = new GameDigMonitorType();
|
||||||
|
|
||||||
mock.method(Gamedig, "query", async () => {
|
mock.method(GameDig, "query", async () => {
|
||||||
return {
|
return {
|
||||||
name: "Test Minecraft Server",
|
name: "Test Minecraft Server",
|
||||||
ping: 42,
|
ping: 42,
|
||||||
@ -43,7 +43,7 @@ describe("GameDig Monitor", () => {
|
|||||||
test("check() resolves hostname to IP address when hostname is not an IP", async () => {
|
test("check() resolves hostname to IP address when hostname is not an IP", async () => {
|
||||||
const gamedigMonitor = new GameDigMonitorType();
|
const gamedigMonitor = new GameDigMonitorType();
|
||||||
|
|
||||||
mock.method(Gamedig, "query", async (options) => {
|
mock.method(GameDig, "query", async (options) => {
|
||||||
assert.ok(
|
assert.ok(
|
||||||
net.isIP(options.host) !== 0,
|
net.isIP(options.host) !== 0,
|
||||||
`Expected IP address, got ${options.host}`
|
`Expected IP address, got ${options.host}`
|
||||||
@ -82,7 +82,7 @@ describe("GameDig Monitor", () => {
|
|||||||
|
|
||||||
let capturedOptions = null;
|
let capturedOptions = null;
|
||||||
|
|
||||||
mock.method(Gamedig, "query", async (options) => {
|
mock.method(GameDig, "query", async (options) => {
|
||||||
capturedOptions = options;
|
capturedOptions = options;
|
||||||
return {
|
return {
|
||||||
name: "Test Server",
|
name: "Test Server",
|
||||||
@ -117,7 +117,7 @@ describe("GameDig Monitor", () => {
|
|||||||
|
|
||||||
let capturedOptions = null;
|
let capturedOptions = null;
|
||||||
|
|
||||||
mock.method(Gamedig, "query", async (options) => {
|
mock.method(GameDig, "query", async (options) => {
|
||||||
capturedOptions = options;
|
capturedOptions = options;
|
||||||
return {
|
return {
|
||||||
name: "Test Server",
|
name: "Test Server",
|
||||||
@ -152,7 +152,7 @@ describe("GameDig Monitor", () => {
|
|||||||
|
|
||||||
let capturedOptions = null;
|
let capturedOptions = null;
|
||||||
|
|
||||||
mock.method(Gamedig, "query", async (options) => {
|
mock.method(GameDig, "query", async (options) => {
|
||||||
capturedOptions = options;
|
capturedOptions = options;
|
||||||
return {
|
return {
|
||||||
name: "Test Server",
|
name: "Test Server",
|
||||||
@ -189,7 +189,7 @@ describe("GameDig Monitor", () => {
|
|||||||
|
|
||||||
let capturedOptions = null;
|
let capturedOptions = null;
|
||||||
|
|
||||||
mock.method(Gamedig, "query", async (options) => {
|
mock.method(GameDig, "query", async (options) => {
|
||||||
capturedOptions = options;
|
capturedOptions = options;
|
||||||
return {
|
return {
|
||||||
name: "Test Server",
|
name: "Test Server",
|
||||||
@ -219,7 +219,7 @@ describe("GameDig Monitor", () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
test("check() sets status to DOWN and rejects when game server is unreachable", async () => {
|
test("check() rejects when game server is unreachable", async () => {
|
||||||
const gamedigMonitor = new GameDigMonitorType();
|
const gamedigMonitor = new GameDigMonitorType();
|
||||||
|
|
||||||
const monitor = {
|
const monitor = {
|
||||||
@ -238,8 +238,6 @@ describe("GameDig Monitor", () => {
|
|||||||
gamedigMonitor.check(monitor, heartbeat, {}),
|
gamedigMonitor.check(monitor, heartbeat, {}),
|
||||||
/Error/
|
/Error/
|
||||||
);
|
);
|
||||||
|
|
||||||
assert.strictEqual(heartbeat.status, DOWN);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test("resolveHostname() returns IP address when given valid hostname", async () => {
|
test("resolveHostname() returns IP address when given valid hostname", async () => {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user