tcpie 11.0.2 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/tcpie.js +4 -4
  2. package/package.json +14 -13
package/dist/tcpie.js CHANGED
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {createRequire} from 'module';const require = createRequire(import.meta.url);
3
- var vt=Object.create;var j=Object.defineProperty;var Rt=Object.getOwnPropertyDescriptor;var $t=Object.getOwnPropertyNames;var Ot=Object.getPrototypeOf,It=Object.prototype.hasOwnProperty;var k=(t,o)=>()=>(o||t((o={exports:{}}).exports,o),o.exports);var Ct=(t,o,e,s)=>{if(o&&typeof o=="object"||typeof o=="function")for(let n of $t(o))!It.call(t,n)&&n!==e&&j(t,n,{get:()=>o[n],enumerable:!(s=Rt(o,n))||s.enumerable});return t};var tt=(t,o,e)=>(e=t!=null?vt(Ot(t)):{},Ct(o||!t||!t.__esModule?j(e,"default",{value:t,enumerable:!0}):e,t));var it=k((Zt,st)=>{(function(){"use strict";function t(o){if(!Array.isArray(o))throw new TypeError("stdev()::invalid input argument. Must provide an array.");var e=o.length,s=0,n=0,c=0,r=0;if(e<2)return 0;for(var A=0;A<e;A++)s+=1,r=o[A]-n,n+=r/s,c+=r*(o[A]-n);return Math.sqrt(c/(s-1))}st.exports=t})()});var lt=k((kt,ut)=>{"use strict";function At(t,o){var e=t;o.slice(0,-1).forEach(function(n){e=e[n]||{}});var s=o[o.length-1];return s in e}function ct(t){return typeof t=="number"||/^0x[0-9a-f]+$/i.test(t)?!0:/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(t)}function ft(t,o){return o==="constructor"&&typeof t[o]=="function"||o==="__proto__"}ut.exports=function(t,o){o||(o={});var e={bools:{},strings:{},unknownFn:null};typeof o.unknown=="function"&&(e.unknownFn=o.unknown),typeof o.boolean=="boolean"&&o.boolean?e.allBools=!0:[].concat(o.boolean).filter(Boolean).forEach(function(i){e.bools[i]=!0});var s={};function n(i){return s[i].some(function(m){return e.bools[m]})}Object.keys(o.alias||{}).forEach(function(i){s[i]=[].concat(o.alias[i]),s[i].forEach(function(m){s[m]=[i].concat(s[i].filter(function(I){return m!==I}))})}),[].concat(o.string).filter(Boolean).forEach(function(i){e.strings[i]=!0,s[i]&&[].concat(s[i]).forEach(function(m){e.strings[m]=!0})});var c=o.default||{},r={_:[]};function A(i,m){return e.allBools&&/^--[^=]+$/.test(m)||e.strings[i]||e.bools[i]||s[i]}function B(i,m,I){for(var u=i,S=0;S<m.length-1;S++){var $=m[S];if(ft(u,$))return;u[$]===void 0&&(u[$]={}),(u[$]===Object.prototype||u[$]===Number.prototype||u[$]===String.prototype)&&(u[$]={}),u[$]===Array.prototype&&(u[$]=[]),u=u[$]}var C=m[m.length-1];ft(u,C)||((u===Object.prototype||u===Number.prototype||u===String.prototype)&&(u={}),u===Array.prototype&&(u=[]),u[C]===void 0||e.bools[C]||typeof u[C]=="boolean"?u[C]=I:Array.isArray(u[C])?u[C].push(I):u[C]=[u[C],I])}function h(i,m,I){if(!(I&&e.unknownFn&&!A(i,I)&&e.unknownFn(I)===!1)){var u=!e.strings[i]&&ct(m)?Number(m):m;B(r,i.split("."),u),(s[i]||[]).forEach(function(S){B(r,S.split("."),u)})}}Object.keys(e.bools).forEach(function(i){h(i,c[i]===void 0?!1:c[i])});var U=[];t.indexOf("--")!==-1&&(U=t.slice(t.indexOf("--")+1),t=t.slice(0,t.indexOf("--")));for(var d=0;d<t.length;d++){var f=t[d],p,T;if(/^--.+=/.test(f)){var X=f.match(/^--([^=]+)=([\s\S]*)$/);p=X[1];var V=X[2];e.bools[p]&&(V=V!=="false"),h(p,V,f)}else if(/^--no-.+/.test(f))p=f.match(/^--no-(.+)/)[1],h(p,!1,f);else if(/^--.+/.test(f))p=f.match(/^--(.+)/)[1],T=t[d+1],T!==void 0&&!/^(-|--)[^-]/.test(T)&&!e.bools[p]&&!e.allBools&&(!s[p]||!n(p))?(h(p,T,f),d+=1):/^(true|false)$/.test(T)?(h(p,T==="true",f),d+=1):h(p,e.strings[p]?"":!0,f);else if(/^-[^-]+/.test(f)){for(var v=f.slice(1,-1).split(""),G=!1,_=0;_<v.length;_++){if(T=f.slice(_+2),T==="-"){h(v[_],T,f);continue}if(/[A-Za-z]/.test(v[_])&&T[0]==="="){h(v[_],T.slice(1),f),G=!0;break}if(/[A-Za-z]/.test(v[_])&&/-?\d+(\.\d*)?(e-?\d+)?$/.test(T)){h(v[_],T,f),G=!0;break}if(v[_+1]&&v[_+1].match(/\W/)){h(v[_],f.slice(_+2),f),G=!0;break}else h(v[_],e.strings[v[_]]?"":!0,f)}p=f.slice(-1)[0],!G&&p!=="-"&&(t[d+1]&&!/^(-|--)[^-]/.test(t[d+1])&&!e.bools[p]&&(!s[p]||!n(p))?(h(p,t[d+1],f),d+=1):t[d+1]&&/^(true|false)$/.test(t[d+1])?(h(p,t[d+1]==="true",f),d+=1):h(p,e.strings[p]?"":!0,f))}else if((!e.unknownFn||e.unknownFn(f)!==!1)&&r._.push(e.strings._||!ct(f)?f:Number(f)),o.stopEarly){r._.push.apply(r._,t.slice(d+1));break}}return Object.keys(c).forEach(function(i){At(r,i.split("."))||(B(r,i.split("."),c[i]),(s[i]||[]).forEach(function(m){B(r,m.split("."),c[i])}))}),o["--"]?r["--"]=U.slice():U.forEach(function(i){r._.push(i)}),r}});var ot=!0;function et(){ot=!1}function q(t,o,e){let s=t.join(" ");return ot?`\x1B[${o}m${s}\x1B[${e}m`:s}var g=(...t)=>q(t,31,39),K=(...t)=>q(t,32,39),nt=(...t)=>q(t,33,39);var _t=tt(it(),1);import{isIP as Bt}from"node:net";import{lookup as Gt}from"node:dns";import x,{exit as O,argv as Lt,stdin as W,stdout as Q,stderr as Dt}from"node:process";import{EventEmitter as wt}from"node:events";import{Socket as gt}from"node:net";import{inherits as Nt}from"node:util";var M=function(t,o,e){if(!(this instanceof M))return new M;if(typeof t!="string")throw new Error("host is required");o===void 0&&(o=80),this.host=t,this.port=o,this.opts={interval:1e3,timeout:3e3,count:1/0,...e},this.stats={sent:0,success:0,failed:0}};Nt(M,wt);M.prototype.start=function t(o){return o||(this.stats.sent=0,this.stats.success=0,this.stats.failed=0),this._next=setTimeout(t.bind(this,!0),this.opts.interval),this._done=!1,this._abort=!1,this._socket=new gt,this._startTime=performance.now(),this._socket.setTimeout(this.opts.timeout),this._socket.on("timeout",()=>{this._done||(this._done=!0,this.stats.sent++,this.stats.failed++,this.emit("timeout",z(this,this)),this._socket.destroy(),L(this))}),this._socket.on("error",e=>{this._done||(this._done=!0,this.stats.sent++,this.stats.failed++,this.emit("error",e,z(this,this)),this._socket.destroy(),L(this))}),this._socket.connect(this.port,this.host,()=>{this._done||(this._done=!0,this.stats.sent++,this.stats.success++,this.stats.rtt=performance.now()-this._startTime,this.emit("connect",z(this,this)),this._socket.end(),L(this))}),this};M.prototype.stop=function(){return this._abort=!0,this._socket.end(),L(this),this};function rt(...t){return new M(...t)}function z(t,o){let e=t.stats;return e.target={host:t.host,port:t.port},e.socket={localAddress:o.localAddress,localPort:o.localPort,remoteAddress:o.remoteAddress,remotePort:o.remotePort},e}function L(t){(t._abort||t.stats.failed+t.stats.success>=t.opts.count)&&(t._next&&clearTimeout(t._next),t.emit("end",{sent:t.stats.sent,success:t.stats.success,failed:t.stats.failed,target:{host:t.host,port:t.port}}))}var Tt=tt(lt(),1);import H from"node:process";import Mt from"node:os";import at from"node:tty";function b(t,o=globalThis.Deno?globalThis.Deno.args:H.argv){let e=t.startsWith("-")?"":t.length===1?"-":"--",s=o.indexOf(e+t),n=o.indexOf("--");return s!==-1&&(n===-1||s<n)}var{env:l}=H,D;b("no-color")||b("no-colors")||b("color=false")||b("color=never")?D=0:(b("color")||b("colors")||b("color=true")||b("color=always"))&&(D=1);function Ft(){if(!("FORCE_COLOR"in l))return;if(l.FORCE_COLOR==="true")return 1;if(l.FORCE_COLOR==="false")return 0;if(l.FORCE_COLOR.length===0)return 1;let t=Math.min(Number.parseInt(l.FORCE_COLOR,10),3);if([0,1,2,3].includes(t))return t}function St(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function xt(t,{streamIsTTY:o,sniffFlags:e=!0}={}){let s=Ft();s!==void 0&&(D=s);let n=e?D:s;if(n===0)return 0;if(e){if(b("color=16m")||b("color=full")||b("color=truecolor"))return 3;if(b("color=256"))return 2}if("TF_BUILD"in l&&"AGENT_NAME"in l)return 1;if(t&&!o&&n===void 0)return 0;let c=n||0;if(l.TERM==="dumb")return c;if(H.platform==="win32"){let r=Mt.release().split(".");return Number(r[0])>=10&&Number(r[2])>=10586?Number(r[2])>=14931?3:2:1}if("CI"in l)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(r=>r in l)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(r=>r in l)||l.CI_NAME==="codeship"?1:c;if("TEAMCITY_VERSION"in l)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(l.TEAMCITY_VERSION)?1:0;if(l.COLORTERM==="truecolor"||l.TERM==="xterm-kitty"||l.TERM==="xterm-ghostty"||l.TERM==="wezterm")return 3;if("TERM_PROGRAM"in l){let r=Number.parseInt((l.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(l.TERM_PROGRAM){case"iTerm.app":return r>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(l.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(l.TERM)||"COLORTERM"in l?1:c}function pt(t,o={}){let e=xt(t,{streamIsTTY:t&&t.isTTY,...o});return St(e)}var Pt={stdout:pt({isTTY:at.isatty(1)}),stderr:pt({isTTY:at.isatty(2)})},mt=Pt;var a=(0,Tt.default)(Lt.slice(2),{boolean:["color","C","timestamp","T","flood","f","version","v"]}),Yt="11.0.2",yt=1,Y=3,Ut=0,Vt=22,qt=[""," Usage: tcpie [options] host[:port] [port|22]",""," Options:",""," -v, --version output version"," -c, --count <n> number of connects (default: infinite)"," -i, --interval <n> wait n seconds between connects (default: 1)"," -t, --timeout <n> connection timeout in seconds (default: 3)"," -T, --timestamp add timestamps to output"," -f, --flood flood mode, connect as fast as possible"," -C, --no-color disable color output",""," Examples:",""," $ tcpie google.com"," $ tcpie -i .1 8.8.8.8:53"," $ tcpie -c5 -t.05 aspmx.l.google.com 25","",""].join(`
4
- `);a.v&&(console.info(Yt),O(0));(!a._.length||a._.length>2||a._[1]&&Number.isNaN(parseInt(a._[1])))&&bt();var E=a._[0],F={},w=parseInt(a._[1]),J=!1,y=[],R;typeof E!="string"&&bt();var P=/^(.+):(\d+)$/.exec(E);(P==null?void 0:P.length)===3&&!w&&(E=P[1],w=P[2]);w||(w=Vt);(a.count||a.c)&&(F.count=parseInt(a.count||a.c));(a.interval||a.i)&&(F.interval=Et(a.interval||a.i));(a.timeout||a.t)&&(F.timeout=Et(a.timeout||a.t));(a.flood||a.f)&&(F.interval=0);(a.C||!mt.stdout)&&et();Bt(E)?(ht(E,E,w),dt(E,w,F)):Gt(E,(t,o)=>{t?(t.code==="ENOTFOUND"?N(g("ERROR:"),`Host '${E}' not found`):N(g("ERROR:"),t.code,t.syscall||""),O(1)):(ht(E,o,w),dt(E,w,F))});function dt(t,o,e){let s=rt(t,o,e);s.on("error",(n,c)=>{R=c,N(g("error connecting to",`${c.target.host}:${c.target.port}`),`seq=${c.sent}`,`error=${g(n.code)}`)}).on("connect",n=>{R=n,y.push(n.rtt),N(K("connected to",`${n.target.host}:${n.target.port}`),`seq=${n.sent}`,n.socket.localPort!==void 0?`srcport=${n.socket.localPort}`:"",`time=${Kt(n.rtt.toFixed(yt))}`)}).on("timeout",n=>{R=n,N(g("timeout connecting to",`${n.target.host}:${n.target.port}`),`seq=${n.sent}`,n.socket.localPort&&`srcport=${n.socket.localPort}`)}),W.isTTY?(W.setRawMode(!0),W.on("data",n=>{let c=[3,4,26,28];for(let r of n)c.includes(r)&&Z()})):(x.on("SIGINT",O),x.on("SIGQUIT",O),x.on("SIGTERM",O),x.on("SIGTSTP",O)),x.on("exit",Z),s.on("end",Z).start()}function ht(t,o,e){N("TCPIE",t,`(${o})`,"port",String(e))}function Z(){let t=0,o=1/0,e=0,s,n;if(J&&O(R.success===0&&1||0),R&&R.sent>0){for(let c of y)c<=o&&(o=c.toFixed(Y)),c>=e&&(e=c.toFixed(Y)),t+=c;s=(t/y.length).toFixed(Y),n=(0,_t.default)(y).toFixed(Y),o===1/0&&(o="0"),Number.isNaN(s)&&(s="0"),J=!0,N(`
3
+ var vt=Object.create;var j=Object.defineProperty;var Rt=Object.getOwnPropertyDescriptor;var $t=Object.getOwnPropertyNames;var Ot=Object.getPrototypeOf,It=Object.prototype.hasOwnProperty;var k=(t,o)=>()=>(o||t((o={exports:{}}).exports,o),o.exports);var Ct=(t,o,e,s)=>{if(o&&typeof o=="object"||typeof o=="function")for(let n of $t(o))!It.call(t,n)&&n!==e&&j(t,n,{get:()=>o[n],enumerable:!(s=Rt(o,n))||s.enumerable});return t};var tt=(t,o,e)=>(e=t!=null?vt(Ot(t)):{},Ct(o||!t||!t.__esModule?j(e,"default",{value:t,enumerable:!0}):e,t));var it=k((Zt,st)=>{(function(){"use strict";function t(o){if(!Array.isArray(o))throw new TypeError("stdev()::invalid input argument. Must provide an array.");var e=o.length,s=0,n=0,c=0,r=0;if(e<2)return 0;for(var A=0;A<e;A++)s+=1,r=o[A]-n,n+=r/s,c+=r*(o[A]-n);return Math.sqrt(c/(s-1))}st.exports=t})()});var lt=k((kt,ut)=>{"use strict";function At(t,o){var e=t;o.slice(0,-1).forEach(function(n){e=e[n]||{}});var s=o[o.length-1];return s in e}function ct(t){return typeof t=="number"||/^0x[0-9a-f]+$/i.test(t)?!0:/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(t)}function ft(t,o){return o==="constructor"&&typeof t[o]=="function"||o==="__proto__"}ut.exports=function(t,o){o||(o={});var e={bools:{},strings:{},unknownFn:null};typeof o.unknown=="function"&&(e.unknownFn=o.unknown),typeof o.boolean=="boolean"&&o.boolean?e.allBools=!0:[].concat(o.boolean).filter(Boolean).forEach(function(i){e.bools[i]=!0});var s={};function n(i){return s[i].some(function(m){return e.bools[m]})}Object.keys(o.alias||{}).forEach(function(i){s[i]=[].concat(o.alias[i]),s[i].forEach(function(m){s[m]=[i].concat(s[i].filter(function(I){return m!==I}))})}),[].concat(o.string).filter(Boolean).forEach(function(i){e.strings[i]=!0,s[i]&&[].concat(s[i]).forEach(function(m){e.strings[m]=!0})});var c=o.default||{},r={_:[]};function A(i,m){return e.allBools&&/^--[^=]+$/.test(m)||e.strings[i]||e.bools[i]||s[i]}function B(i,m,I){for(var u=i,S=0;S<m.length-1;S++){var $=m[S];if(ft(u,$))return;u[$]===void 0&&(u[$]={}),(u[$]===Object.prototype||u[$]===Number.prototype||u[$]===String.prototype)&&(u[$]={}),u[$]===Array.prototype&&(u[$]=[]),u=u[$]}var C=m[m.length-1];ft(u,C)||((u===Object.prototype||u===Number.prototype||u===String.prototype)&&(u={}),u===Array.prototype&&(u=[]),u[C]===void 0||e.bools[C]||typeof u[C]=="boolean"?u[C]=I:Array.isArray(u[C])?u[C].push(I):u[C]=[u[C],I])}function h(i,m,I){if(!(I&&e.unknownFn&&!A(i,I)&&e.unknownFn(I)===!1)){var u=!e.strings[i]&&ct(m)?Number(m):m;B(r,i.split("."),u),(s[i]||[]).forEach(function(S){B(r,S.split("."),u)})}}Object.keys(e.bools).forEach(function(i){h(i,c[i]===void 0?!1:c[i])});var U=[];t.indexOf("--")!==-1&&(U=t.slice(t.indexOf("--")+1),t=t.slice(0,t.indexOf("--")));for(var d=0;d<t.length;d++){var f=t[d],p,_;if(/^--.+=/.test(f)){var X=f.match(/^--([^=]+)=([\s\S]*)$/);p=X[1];var V=X[2];e.bools[p]&&(V=V!=="false"),h(p,V,f)}else if(/^--no-.+/.test(f))p=f.match(/^--no-(.+)/)[1],h(p,!1,f);else if(/^--.+/.test(f))p=f.match(/^--(.+)/)[1],_=t[d+1],_!==void 0&&!/^(-|--)[^-]/.test(_)&&!e.bools[p]&&!e.allBools&&(!s[p]||!n(p))?(h(p,_,f),d+=1):/^(true|false)$/.test(_)?(h(p,_==="true",f),d+=1):h(p,e.strings[p]?"":!0,f);else if(/^-[^-]+/.test(f)){for(var v=f.slice(1,-1).split(""),G=!1,b=0;b<v.length;b++){if(_=f.slice(b+2),_==="-"){h(v[b],_,f);continue}if(/[A-Za-z]/.test(v[b])&&_[0]==="="){h(v[b],_.slice(1),f),G=!0;break}if(/[A-Za-z]/.test(v[b])&&/-?\d+(\.\d*)?(e-?\d+)?$/.test(_)){h(v[b],_,f),G=!0;break}if(v[b+1]&&v[b+1].match(/\W/)){h(v[b],f.slice(b+2),f),G=!0;break}else h(v[b],e.strings[v[b]]?"":!0,f)}p=f.slice(-1)[0],!G&&p!=="-"&&(t[d+1]&&!/^(-|--)[^-]/.test(t[d+1])&&!e.bools[p]&&(!s[p]||!n(p))?(h(p,t[d+1],f),d+=1):t[d+1]&&/^(true|false)$/.test(t[d+1])?(h(p,t[d+1]==="true",f),d+=1):h(p,e.strings[p]?"":!0,f))}else if((!e.unknownFn||e.unknownFn(f)!==!1)&&r._.push(e.strings._||!ct(f)?f:Number(f)),o.stopEarly){r._.push.apply(r._,t.slice(d+1));break}}return Object.keys(c).forEach(function(i){At(r,i.split("."))||(B(r,i.split("."),c[i]),(s[i]||[]).forEach(function(m){B(r,m.split("."),c[i])}))}),o["--"]?r["--"]=U.slice():U.forEach(function(i){r._.push(i)}),r}});var ot=!0;function et(){ot=!1}function q(t,o,e){let s=t.join(" ");return ot?`\x1B[${o}m${s}\x1B[${e}m`:s}var w=(...t)=>q(t,31,39),K=(...t)=>q(t,32,39),nt=(...t)=>q(t,33,39);var bt=tt(it(),1);import{isIP as Bt}from"node:net";import{lookup as Gt}from"node:dns";import x,{exit as O,argv as Lt,stdin as W,stdout as Q,stderr as Dt}from"node:process";import{EventEmitter as Nt}from"node:events";import{Socket as wt}from"node:net";import{inherits as gt}from"node:util";var M=function(t,o,e){if(!(this instanceof M))return new M;if(typeof t!="string")throw new Error("host is required");o===void 0&&(o=80),this.host=t,this.port=o,this.opts={interval:1e3,timeout:3e3,count:1/0,...e},this.stats={sent:0,success:0,failed:0}};gt(M,Nt);M.prototype.start=function t(o){return o||(this.stats.sent=0,this.stats.success=0,this.stats.failed=0),this._next=setTimeout(t.bind(this,!0),this.opts.interval),this._done=!1,this._abort=!1,this._socket=new wt,this._startTime=performance.now(),this._socket.setTimeout(this.opts.timeout),this._socket.on("timeout",()=>{this._done||(this._done=!0,this.stats.sent++,this.stats.failed++,this.emit("timeout",z(this,this)),this._socket.destroy(),L(this))}),this._socket.on("error",e=>{this._done||(this._done=!0,this.stats.sent++,this.stats.failed++,this.emit("error",e,z(this,this)),this._socket.destroy(),L(this))}),this._socket.connect(this.port,this.host,()=>{this._done||(this._done=!0,this.stats.sent++,this.stats.success++,this.stats.rtt=performance.now()-this._startTime,this.emit("connect",z(this,this)),this._socket.end(),L(this))}),this};M.prototype.stop=function(){return this._abort=!0,this._socket.end(),L(this),this};function rt(...t){return new M(...t)}function z(t,o){let e=t.stats;return e.target={host:t.host,port:t.port},e.socket={localAddress:o.localAddress,localPort:o.localPort,remoteAddress:o.remoteAddress,remotePort:o.remotePort},e}function L(t){(t._abort||t.stats.failed+t.stats.success>=t.opts.count)&&(t._next&&clearTimeout(t._next),t.emit("end",{sent:t.stats.sent,success:t.stats.success,failed:t.stats.failed,target:{host:t.host,port:t.port}}))}var _t=tt(lt(),1);import H from"node:process";import Mt from"node:os";import at from"node:tty";function T(t,o=globalThis.Deno?globalThis.Deno.args:H.argv){let e=t.startsWith("-")?"":t.length===1?"-":"--",s=o.indexOf(e+t),n=o.indexOf("--");return s!==-1&&(n===-1||s<n)}var{env:l}=H,D;T("no-color")||T("no-colors")||T("color=false")||T("color=never")?D=0:(T("color")||T("colors")||T("color=true")||T("color=always"))&&(D=1);function Ft(){if(!("FORCE_COLOR"in l))return;if(l.FORCE_COLOR==="true")return 1;if(l.FORCE_COLOR==="false")return 0;if(l.FORCE_COLOR.length===0)return 1;let t=Math.min(Number.parseInt(l.FORCE_COLOR,10),3);if([0,1,2,3].includes(t))return t}function St(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function xt(t,{streamIsTTY:o,sniffFlags:e=!0}={}){let s=Ft();s!==void 0&&(D=s);let n=e?D:s;if(n===0)return 0;if(e){if(T("color=16m")||T("color=full")||T("color=truecolor"))return 3;if(T("color=256"))return 2}if("TF_BUILD"in l&&"AGENT_NAME"in l)return 1;if(t&&!o&&n===void 0)return 0;let c=n||0;if(l.TERM==="dumb")return c;if(H.platform==="win32"){let r=Mt.release().split(".");return Number(r[0])>=10&&Number(r[2])>=10586?Number(r[2])>=14931?3:2:1}if("CI"in l)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(r=>r in l)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(r=>r in l)||l.CI_NAME==="codeship"?1:c;if("TEAMCITY_VERSION"in l)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(l.TEAMCITY_VERSION)?1:0;if(l.COLORTERM==="truecolor"||l.TERM==="xterm-kitty"||l.TERM==="xterm-ghostty"||l.TERM==="wezterm")return 3;if("TERM_PROGRAM"in l){let r=Number.parseInt((l.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(l.TERM_PROGRAM){case"iTerm.app":return r>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(l.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(l.TERM)||"COLORTERM"in l?1:c}function pt(t,o={}){let e=xt(t,{streamIsTTY:t&&t.isTTY,...o});return St(e)}var Pt={stdout:pt({isTTY:at.isatty(1)}),stderr:pt({isTTY:at.isatty(2)})},mt=Pt;var a=(0,_t.default)(Lt.slice(2),{boolean:["color","C","timestamp","T","flood","f","version","v"]}),Yt="12.0.0",yt=1,Y=3,Ut=0,Vt=22,qt=[""," Usage: tcpie [options] host[:port] [port|22]",""," Options:",""," -v, --version output version"," -c, --count <n> number of connects (default: infinite)"," -i, --interval <n> wait n seconds between connects (default: 1)"," -t, --timeout <n> connection timeout in seconds (default: 3)"," -T, --timestamp add timestamps to output"," -f, --flood flood mode, connect as fast as possible"," -C, --no-color disable color output",""," Examples:",""," $ tcpie google.com"," $ tcpie -i .1 8.8.8.8:53"," $ tcpie -c5 -t.05 aspmx.l.google.com 25","",""].join(`
4
+ `);a.v&&(console.info(Yt),O(0));(!a._.length||a._.length>2||a._[1]&&Number.isNaN(Number.parseInt(a._[1])))&&Tt();var E=a._[0],F={},N=Number.parseInt(a._[1]),J=!1,y=[],R;typeof E!="string"&&Tt();var P=/^(.+):(\d+)$/.exec(E);(P==null?void 0:P.length)===3&&!N&&(E=P[1],N=P[2]);N||(N=Vt);(a.count||a.c)&&(F.count=Number.parseInt(a.count||a.c));(a.interval||a.i)&&(F.interval=Et(a.interval||a.i));(a.timeout||a.t)&&(F.timeout=Et(a.timeout||a.t));(a.flood||a.f)&&(F.interval=0);(a.C||!mt.stdout)&&et();Bt(E)?(ht(E,E,N),dt(E,N,F)):Gt(E,(t,o)=>{t?(t.code==="ENOTFOUND"?g(w("ERROR:"),`Host '${E}' not found`):g(w("ERROR:"),t.code,t.syscall||""),O(1)):(ht(E,o,N),dt(E,N,F))});function dt(t,o,e){let s=rt(t,o,e);s.on("error",(n,c)=>{R=c,g(w("error connecting to",`${c.target.host}:${c.target.port}`),`seq=${c.sent}`,`error=${w(n.code)}`)}).on("connect",n=>{R=n,y.push(n.rtt),g(K("connected to",`${n.target.host}:${n.target.port}`),`seq=${n.sent}`,n.socket.localPort!==void 0?`srcport=${n.socket.localPort}`:"",`time=${Kt(n.rtt.toFixed(yt))}`)}).on("timeout",n=>{R=n,g(w("timeout connecting to",`${n.target.host}:${n.target.port}`),`seq=${n.sent}`,n.socket.localPort&&`srcport=${n.socket.localPort}`)}),W.isTTY?(W.setRawMode(!0),W.on("data",n=>{let c=[3,4,26,28];for(let r of n)c.includes(r)&&Z()})):(x.on("SIGINT",O),x.on("SIGQUIT",O),x.on("SIGTERM",O),x.on("SIGTSTP",O)),x.on("exit",Z),s.on("end",Z).start()}function ht(t,o,e){g("TCPIE",t,`(${o})`,"port",String(e))}function Z(){let t=0,o=1/0,e=0,s,n;if(J&&O(R.success===0&&1||0),R&&R.sent>0){for(let c of y)c<=o&&(o=c.toFixed(Y)),c>=e&&(e=c.toFixed(Y)),t+=c;s=(t/y.length).toFixed(Y),n=(0,bt.default)(y).toFixed(Y),o===1/0&&(o="0"),Number.isNaN(s)&&(s="0"),J=!0,g(`
5
5
  ---`,E,"tcpie statistics","---",`
6
6
  ${R.sent}`,"handshakes attempted,",R.success||"0","succeeded,",`${(R.failed/R.sent*100).toFixed(Ut)}% failed`,`
7
- rtt min/avg/max/stdev =`,`${o}/${s}/${e}/${n}`,"ms"),O(R.success===0&&1||0)}else O(1)}function Kt(t){return t>=150?`${g(t)} ms`:t>=75?`${nt(t)} ms`:`${K(t)} ms`}function N(...t){t=t.filter(Boolean),(a.timeout||a.T)&&t[0][0]!==`
7
+ rtt min/avg/max/stdev =`,`${o}/${s}/${e}/${n}`,"ms"),O(R.success===0&&1||0)}else O(1)}function Kt(t){return t>=150?`${w(t)} ms`:t>=75?`${nt(t)} ms`:`${K(t)} ms`}function g(...t){t=t.filter(Boolean),(a.timeout||a.T)&&t[0][0]!==`
8
8
  `&&t.unshift(zt()),t.push(`
9
- `),(Q._type==="pipe"&&J?Dt:Q).write(t.join(" "))}function bt(){Q.write(qt),O(1)}function Et(t){return parseFloat(t)*1e3}function zt(){let t=new Date,o=t.getFullYear(),e=t.getMonth()+1,s=t.getDate(),n=t.getHours(),c=t.getMinutes(),r=t.getSeconds();return e<10&&(e=`0${e}`),s<10&&(s=`0${s}`),n<10&&(n=`0${n}`),c<10&&(c=`0${c}`),r<10&&(r=`0${r}`),`${o}-${e}-${s} ${n}:${c}:${r}`}
9
+ `),(Q._type==="pipe"&&J?Dt:Q).write(t.join(" "))}function Tt(){Q.write(qt),O(1)}function Et(t){return Number.parseFloat(t)*1e3}function zt(){let t=new Date,o=t.getFullYear(),e=t.getMonth()+1,s=t.getDate(),n=t.getHours(),c=t.getMinutes(),r=t.getSeconds();return e<10&&(e=`0${e}`),s<10&&(s=`0${s}`),n<10&&(n=`0${n}`),c<10&&(c=`0${c}`),r<10&&(r=`0${r}`),`${o}-${e}-${s} ${n}:${c}:${r}`}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tcpie",
3
- "version": "11.0.2",
3
+ "version": "12.0.0",
4
4
  "description": "Ping any TCP port",
5
5
  "author": "silverwind <me@silverwind.io>",
6
6
  "repository": "silverwind/tcpie",
@@ -10,7 +10,7 @@
10
10
  "type": "module",
11
11
  "sideEffects": false,
12
12
  "engines": {
13
- "node": ">=18"
13
+ "node": ">=22"
14
14
  },
15
15
  "files": [
16
16
  "./index.js",
@@ -18,20 +18,21 @@
18
18
  ],
19
19
  "dependencies": {
20
20
  "compute-stdev": "1.0.0",
21
- "glowie": "1.3.3",
21
+ "glowie": "1.3.4",
22
22
  "minimist": "1.2.8",
23
23
  "supports-color": "10.2.2"
24
24
  },
25
25
  "devDependencies": {
26
- "esbuild": "0.27.3",
27
- "eslint": "9.39.2",
28
- "eslint-config-silverwind": "121.0.5",
29
- "typescript": "5.9.3",
30
- "typescript-config-silverwind": "15.0.0",
31
- "updates": "17.5.2",
32
- "updates-config-silverwind": "1.0.3",
33
- "versions": "14.1.2",
34
- "vitest": "4.0.18",
35
- "vitest-config-silverwind": "10.6.3"
26
+ "esbuild": "0.28.0",
27
+ "eslint": "9.39.4",
28
+ "eslint-config-silverwind": "131.0.4",
29
+ "jest-extended": "7.0.0",
30
+ "typescript": "6.0.2",
31
+ "typescript-config-silverwind": "17.0.0",
32
+ "updates": "17.15.2",
33
+ "updates-config-silverwind": "3.0.0",
34
+ "versions": "15.0.0",
35
+ "vitest": "4.1.4",
36
+ "vitest-config-silverwind": "11.3.3"
36
37
  }
37
38
  }