UNPKG

ping-minecraft

Version:

A minecraft server ping & query tool

1 lines 1.89 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _dns=require("@wanyne/dns"),_ip=_interopRequireDefault(require("@wanyne/ip")),_minecraftProtocol=_interopRequireDefault(require("minecraft-protocol"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}async function ping(host,port=25565,options={}){let timeout=options.timeout||2e3,filterBogon=options.filterBogon||!1,dnsServer=options.dnsServer,version=options.version;const result={error:void 0,type:"ping/minecraft",host:host,ip:"",port:port,version:{name:"",protocol:0},description:"",players:{current:0,max:0,sample:[]},favicon:"",time:0};host=host.toLowerCase(),result.host=host;const ipsa=await(0,_dns.ips)(host,dnsServer),ip=ipsa?.[0];if(result.ip=ip,filterBogon&&new _ip.default(ip).isBogon())return result.error="EBOGONIP",result.status="error",result;port=Math.max(1,Math.min(65535,1*port||25565)),result.port=port;const timestamp=new Date().getTime();return new Promise(resolve=>{const timer=setTimeout(()=>{result.error="ETIMEDOUT",resolve(result)},timeout).unref();_minecraftProtocol.default.ping({host:host,port:port,version:version}).then(res=>(clearTimeout(timer),res?.remote?.ip?result.ip=res?.remote?.ip:null,result.ip&&filterBogon&&new _ip.default(result.ip).isBogon()?(result.error="EBOGONIP",result):void(result.version.name=res.version.name||res.version||"",result.version.protocol=res.version.protocol||res.protoco||0,result.description=res.motd||res.description||"",result.players.current=res.playerCount||res.players.online||0,result.players.max=res.maxPlayers||res.players.max||0,result.players.sample=res.players.sample||[],result.favicon=res.favicon||"",result.time=new Date().getTime()-timestamp,resolve(result)))).catch(error=>{clearTimeout(timer),result.error=error,resolve(result)})})}var _default=ping;exports.default=_default;