@northflank/cli 0.11.2 → 0.11.3
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.
- package/dist/api-helpers.js +1 -1
- package/dist/cli.js +1 -1
- package/dist/context/contextCommands.js +1 -1
- package/dist/copy/index.js +1 -1
- package/dist/defaults.js +1 -1
- package/dist/exec/index.js +1 -1
- package/dist/formatting/command-overview.js +1 -1
- package/dist/formatting/console-format-helpers.js +1 -1
- package/dist/formatting/terminal-chart.js +1 -1
- package/dist/inquirer-helper.js +1 -1
- package/dist/login/browser-login.js +1 -1
- package/dist/logs/index.js +1 -1
- package/dist/logs/log-formatter.js +1 -1
- package/dist/metrics/index.js +1 -1
- package/dist/pagination/inquirer-pagination-prompt.js +1 -1
- package/dist/port-forward/index.js +1 -1
- package/dist/ssh/index.js +1 -1
- package/dist/utils.js +1 -1
- package/package.json +1 -1
package/dist/metrics/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const a13Z=a13V;function a13D(){const D8=['119650sXikwb','metricsSingle','85109bRGlko','format','Id\x20[NAME]','clear','toISOString','askForContainer','8vpzJqb','--deployment\x20--deploymentId\x20[deploymentId]','filter','--build\x20--buildId\x20[buildId]','argParser','Deployment\x20id,\x20example:\x20my-service-54785f4','slice','askForTeam','metricsApiClient','--timestamp\x20[timestamp]','jobId','Container\x20to\x20exec\x20into\x20(logs\x20from\x20all\x20containers\x20will\x20be\x20shown\x20if\x20not\x20specified)','Team\x20id','stringify','--team\x20--teamId\x20[TEAMID]','toFixed','org','3103578bzGqHW','stdout','6SYIVLN','getCurrentServiceName','conflicts','description','push','Length\x20of\x20timespan\x20in\x20seconds.\x20Only\x20valid\x20if\x20not\x20both,\x20startTime\x20and\x20endTime\x20are\x20set','askForJob',',\x20metric\x20types:\x20','exit','Error\x20while\x20fetching\x20metrics\x20entries:\x20','action','--duration\x20[duration]','askForAddon','keys','Don\x27t\x20use\x20context\x20default\x20values,\x20explicitly\x20use\x20options\x20or\x20ask.','unshift','\x20seconds','apiClient','error','printMetricsSingle','getTokenScope','forEach','metricId','containerId','printInitInfo','build-','8FZMgKs','printMetricsGraph','bold','Fetching\x20data..','map','\x20of\x20','value','contextProvider','endTime','json','Metrics\x20overview','log','deploymentId','refreshInterval','yaml','571221UXDgqF','askForProjectContext','valueOf','metricUnit','605IorMHZ','askForBuild','getPaddingDataStart','details','--project\x20--projectId\x20[NAME]','data','buildId','Metrics\x20for\x20','1236695UJCpDh','rows','No\x20metrics\x20found\x20for\x20this\x20query','length','min','values','getPaddingDataEnd','addOption','getStandardMetricsCommand','-t,\x20--metricTypes\x20<metricTypes...>','startTime','join','getTime','columns','--startTime\x20<timestamp>','1310646eaWhqj','charAt','service','Output\x20formatting.\x20Will\x20use\x20advanced\x20formatting\x20by\x20default.','handleError','container\x20','\x20for\x20container:\x20','getCurrentProjectName','serviceId','apiContext','1440362KMrTZk','--noDefaults','flatMap','choices','\x20in\x20project\x20','alias','message','--run\x20--runId\x20[runId]',',\x20duration:\x20','Only\x20two\x20of\x20\x27startTime\x27,\x20\x27endTime\x27\x20and\x20\x27duration\x27\x20can\x20be\x20set.','Get\x20metrics\x20at\x20this\x20exact\x20timestamp,\x20if\x20no\x20timestamp\x20set\x20most\x20recent\x20time\x20is\x20used.\x20','assign','printMetricsTable','job','addonId','inquirerHelper','Build\x20to\x20get\x20logs\x20from','pct','metrics','--endTime\x20<timestamp>','yml','option','flat','max','metricsRange'];a13D=function(){return D8;};return a13D();}(function(D,V){const L=a13V,P=D();while(!![]){try{const z=parseInt(L(0x15f))/0x1*(parseInt(L(0x178))/0x2)+-parseInt(L(0x11f))/0x3+-parseInt(L(0x165))/0x4*(parseInt(L(0x12b))/0x5)+parseInt(L(0x13a))/0x6+parseInt(L(0x144))/0x7*(parseInt(L(0x192))/0x8)+-parseInt(L(0x176))/0x9+-parseInt(L(0x15d))/0xa*(-parseInt(L(0x123))/0xb);if(z===V)break;else P['push'](P['shift']());}catch(e){P['push'](P['shift']());}}}(a13D,0x4b1e2));import{ApiClient,MetricType}from'@northflank/js-client';import{assertContextExisting,customUserAgent,error,getCommand,parseDateInput,tsHint,warning}from'../utils.js';import{InquirerHelper}from'../inquirer-helper.js';function a13V(D,V){const P=a13D();return a13V=function(z,e){z=z-0x11f;let g=P[z];return g;},a13V(D,V);}import{Option}from'commander';import{downSampleData,getAsciiChart}from'../formatting/terminal-chart.js';import{printAsTable,printResponse}from'../formatting/console-format-helpers.js';import a13P from'chalk';export class CliMetrics{[a13Z(0x143)];[a13Z(0x189)];[a13Z(0x16d)];[a13Z(0x153)];[a13Z(0x19f)]=0x2710;['getStandardMetricsCommand']=(D,V)=>{const u=a13Z,P=getCommand(!![])['name']((V?u(0x191):'')+u(0x156))[u(0x149)]((V?u(0x191):'')+'metric')[u(0x17b)]('Get\x20metrics\x20for\x20the\x20specified\x20'+D)[u(0x159)](u(0x127),'Project\x20for\x20logs')[u(0x159)]('--'+D+'\x20--'+D+u(0x161),D[u(0x13b)](0x0)['toUpperCase']()+D[u(0x16b)](0x1)+'\x20to\x20get\x20logs\x20from')[u(0x159)]('--container\x20--containerId\x20[NAME]',u(0x170))[u(0x159)](u(0x139),'Get\x20metrics\x20after\x20this\x20timestamp,\x20'+tsHint,parseDateInput)[u(0x159)](u(0x157),'Get\x20metrics\x20before\x20this\x20timestamp,\x20'+tsHint,parseDateInput)['option'](u(0x183),u(0x17d))['addOption'](new Option(u(0x134),'Which\x20metric\x20type\x20to\x20fetch')[u(0x147)](Object[u(0x130)](MetricType)))[u(0x132)](new Option(u(0x16e),u(0x14e)+tsHint)[u(0x169)](parseDateInput)[u(0x17a)]([u(0x135),u(0x19a)]))[u(0x159)](u(0x145),u(0x186),![])[u(0x132)](new Option('-o,\x20--output\x20[output]',u(0x13d))[u(0x147)](Object[u(0x130)]([u(0x160),u(0x19b),u(0x1a0)])));if(V)P['option'](u(0x168),u(0x154));if(D===u(0x151))P[u(0x159)](u(0x14b),'Job\x20run\x20id,\x20example:\x20162b1977-6636-4000-929b-cc265b862ff0');if(D===u(0x13c))P['option'](u(0x166),u(0x16a));return this['apiClient'][u(0x199)][u(0x18c)]()===u(0x175)&&P['option'](u(0x173),u(0x171)),P;};constructor(D,V){const N=a13Z;this[N(0x143)]=D,this[N(0x189)]=new ApiClient(D,{'throwErrorOnHttpErrorCode':!![],'customUserAgent':customUserAgent,'agent':V}),this[N(0x16d)]=this[N(0x189)],this['inquirerHelper']=new InquirerHelper(this['apiClient']);}['getMetricsCommand'](D,V=![]){const c=a13Z,P=async(B,h,l)=>{const O=a13V,t=l['noDefaults'],{apiContext:i,inquirerHelper:s}=this;switch(D){case O(0x13c):{const S=t?undefined:i[O(0x179)]();return l[O(0x142)]||S||await s['askForService'](B,h)();}case O(0x151):{const n=t?undefined:i[O(0x179)]();return l[O(0x16f)]||n||await s[O(0x17e)](B,h)();}case'addon':{const A=t?undefined:i[O(0x179)]();return l[O(0x152)]||A||await s[O(0x184)](B,h)();}}},z=async(B,h,l,t)=>{const I=a13V;if(V)return t[I(0x129)]||await this['inquirerHelper'][I(0x124)](B,D===I(0x13c)?l:undefined,D===I(0x151)?l:undefined,!![],h)();return undefined;},e=async(B,h,l,t)=>{const a=a13V;if(!V&&t[a(0x18f)]!==undefined){if(t[a(0x18f)]!==!![])return t[a(0x18f)];return await this[a(0x153)][a(0x164)](B,D===a(0x13c)?l:undefined,D===a(0x151)?l:undefined,!![],h)();}return undefined;},g=async(B,h,l,t)=>{const Y=a13V;if(D===Y(0x151))return t['runId']||await this[Y(0x153)]['askForJobRun'](l,B,!![],h)();return undefined;},b=async(B,h,l,t)=>{const p=a13V;if(D===p(0x13c)){if(t[p(0x19e)]!==!![])return t[p(0x19e)];return t[p(0x19e)];}return undefined;};return this[c(0x133)](D,V)[c(0x182)](async B=>{const K=c,{noDefaults:h,projectId:l,teamId:t,duration:i,timestamp:s,output:S,startTime:n,endTime:A,metricTypes:X,quiet:U}=B;assertContextExisting(this[K(0x189)]);if(n&&A&&i)throw new Error(K(0x14d));const {apiContext:R,inquirerHelper:k,metricsApiClient:H}=this,G=h?undefined:R[K(0x141)](),{projectId:o,teamId:F}=await this[K(0x120)](R,k,l,t,G),E=await P(o,F,B),J=await z(o,F,E,B),x=await g(o,F,E,B),C=await b(o,F,E,B),M=await e(o,F,E,B),W={'teamId':F,'projectId':o,'entityId':E},d={'containerName':M,'startTime':n,'endTime':A,'duration':i,'timestamp':s,'metricTypes':X,'runId':x,'buildId':J,'deploymentId':C,'isBuild':V??![]},f=!(n||A||i);if(!U&&S!==K(0x1a0)&&S!==K(0x158)&&S!==K(0x19b))this[K(0x190)](D,E,o,d,U);if(f){if(S!==undefined){const T=await H[K(0x156)][K(0x15e)](W,d,D);this[K(0x13e)](T),printResponse(S,T['data']);}else[...Array(process[K(0x177)]['rows']-0x1)][K(0x18d)]((m,q)=>q===0x0?console[K(0x19d)](K(0x195)):console[K(0x19d)]()),await this[K(0x150)](W,d,D)(),setInterval(this['printMetricsTable'](W,d,D),this['refreshInterval']),await new Promise(m=>setTimeout(m,this[K(0x19f)]*0x64));}else{const m=await H[K(0x156)][K(0x15c)](W,d,D);this[K(0x13e)](m),S!==undefined?printResponse(S,m[K(0x128)]):this[K(0x193)](n,A??new Date())(m['data']);}process[K(0x180)]();});}[a13Z(0x18b)](D){const r=a13Z,V=(e,g)=>{const v=a13V;if(!g?.[v(0x198)])'N/A';const b=e[v(0x122)]===v(0x155)?'%':e['metricUnit'];return''+Number(g?.[v(0x198)])[v(0x174)](0x3)+b;},P=e=>{if(!e?.['ts'])'N/A';return e['ts']['toTimeString']()['split']('\x20')[0x0];},z={};Object['keys'](D)[r(0x18d)](e=>{const w=r,{values:g,metricInfo:b}=D[e];return g[w(0x18d)](B=>{const j=w,h=B['metadata'][j(0x18f)];Object[j(0x14f)](z,{[h]:{...z?.[h],['time']:P(B[j(0x128)]?.[0x0]),'containerId':h,[b[j(0x18e)]]:V(b,B[j(0x128)]?.[0x0])}});});}),printAsTable(Object[r(0x130)](z),r(0x19c));}[a13Z(0x193)]=(D,V)=>{return P=>{const y=a13V,z=Object[y(0x185)](P)[y(0x146)](e=>{const Q=y,{values:g,metricInfo:b}=P[e],{metricUnit:B,metricResolution:h}=b;return g[Q(0x196)](l=>{const D0=Q,{metadata:t,data:i}=l,s=V?V?.[D0(0x137)]()>new Date()[D0(0x137)]()?new Date():V:undefined,S=new Date(i?.[0x0]?.['ts']),n=new Date(i?.[i[D0(0x12e)]-0x1]?.['ts']),A=this[D0(0x125)](D,S,h),X=this[D0(0x131)](s,n,h),U=[...A,...i,...X],R=U['map'](x=>[new Date(x['ts'])[D0(0x121)](),Number(x[D0(0x198)])])[D0(0x167)](x=>!Number['isNaN'](x[0x0])),k=Math[D0(0x12f)](Math[D0(0x15b)](process[D0(0x177)][D0(0x138)]-0xa,0xa),0x64),H=Math[D0(0x12f)](Math[D0(0x15b)](process['stdout'][D0(0x12c)]-0x9,0xa),0xf),G=B===D0(0x155)?0x64:undefined,o=B===D0(0x155)?'%':B,F=downSampleData(R,k),E=F[D0(0x196)](x=>x[0x1]),J={'min':0x0,'height':H,'max':G,'unit':o,'startTs':D??S,'endTs':s??n};return{'dataSeries':E,'metadata':t,'chartOpts':J,'metricInfo':b};});})[y(0x15a)]();if(z[y(0x12e)]===0x0)warning(y(0x12d));else z[y(0x18d)](e=>{const D1=y,{dataSeries:g,metadata:b,chartOpts:B,metricInfo:h}=e,{containerId:l,volumeId:t}=b,i=t?',\x20volume:\x20'+t:'';console[D1(0x19d)](h[D1(0x18e)]+D1(0x140)+a13P[D1(0x194)](l)+i),console[D1(0x19d)](getAsciiChart(g,B));});};};[a13Z(0x125)](D,V,P){const D2=a13Z,z=b=>new Date(b['getTime']()-e),e=P*0x3e8;if(!D)return[];if(!V)return[];if(z(V)[D2(0x137)]()<D[D2(0x137)]())return[];const g=[{'ts':z(V),'value':0x0}];while(z(g[g[D2(0x12e)]-0x1]['ts'])['getTime']()<=D[D2(0x137)]()){g[D2(0x187)]({'ts':z(g[g['length']-0x1]['ts']),'value':0x0});}return g;}[a13Z(0x131)](D,V,P){const D3=a13Z,z=b=>new Date(b[D3(0x137)]()+e),e=P*0x3e8;if(!D)return[];if(!V)return[];if(z(V)['getTime']()>D['getTime']())return[];const g=[{'ts':z(V),'value':0x0}];while(z(g[g['length']-0x1]['ts'])[D3(0x137)]()<=D[D3(0x137)]()){g[D3(0x17c)]({'ts':z(g[g[D3(0x12e)]-0x1]['ts']),'value':0x0});}return g;}[a13Z(0x150)]=(D,V,P)=>async()=>{const D4=a13Z;try{const z=await this[D4(0x16d)][D4(0x156)]['metricsSingle'](D,V,P);console[D4(0x162)]();if(z['error'])error(D4(0x181)+z['error'][D4(0x14a)]);else this[D4(0x18b)](z['data']);}catch(g){console[D4(0x162)](),error('Error\x20while\x20fetching\x20metrics\x20entries:\x20'+g['message']);}};['handleError']=D=>{const D5=a13Z;if(D[D5(0x18a)]){const V=JSON[D5(0x172)](D[D5(0x18a)][D5(0x126)]);throw new Error(D5(0x181)+D['error'][D5(0x14a)]+'\x20'+V);}};[a13Z(0x190)]=(D,V,P,z,e)=>{const D6=a13Z;if(e===!![])return;const {metricTypes:g,endTime:b,startTime:B,duration:h,containerId:l}=z,t=B?',\x20from:\x20'+B[D6(0x163)]():'',i=b?',\x20to:\x20'+b['toISOString']():'',s=h?D6(0x14c)+h+D6(0x188):'',S=l?D6(0x13f)+a13P[D6(0x194)](l):'all\x20containers',n=D+'\x20'+a13P[D6(0x194)](V)+D6(0x148)+a13P[D6(0x194)](P),A=''+t+i+s,X=g?D6(0x17f)+g?.[D6(0x136)](','):'';console[D6(0x19d)](D6(0x12a)+S+D6(0x197)+n+X+A);};[a13Z(0x120)]=async(D,V,P,z,e)=>{const D7=a13Z,g=D[D7(0x18c)]()===D7(0x175)?z??await V[D7(0x16c)]():undefined,b=P||e||await V['askForProject'](g)();return{'teamId':g,'projectId':b};};}
|
|
1
|
+
function a13A(Q,A){const N=a13Q();return a13A=function(t,a){t=t-0x15e;let p=N[t];return p;},a13A(Q,A);}const a13f=a13A;(function(Q,A){const F=a13A,N=Q();while(!![]){try{const t=parseInt(F(0x1c0))/0x1*(parseInt(F(0x1a5))/0x2)+-parseInt(F(0x16c))/0x3*(parseInt(F(0x197))/0x4)+-parseInt(F(0x193))/0x5*(-parseInt(F(0x180))/0x6)+parseInt(F(0x1c8))/0x7+parseInt(F(0x1a9))/0x8*(parseInt(F(0x1d1))/0x9)+-parseInt(F(0x17f))/0xa+-parseInt(F(0x1e6))/0xb;if(t===A)break;else N['push'](N['shift']());}catch(a){N['push'](N['shift']());}}}(a13Q,0x7b617));import{ApiClient,MetricType}from'@northflank/js-client';import{assertContextExisting,customUserAgent,error,getCommand,parseDateInput,tsHint,warning}from'../utils.js';import{InquirerHelper}from'../inquirer-helper.js';import{Option}from'commander';function a13Q(){const Q8=['jobId','columns','\x20--','error','stdout','Id\x20[NAME]','argParser','Project\x20for\x20logs','--noDefaults','2kUzKZO','serviceId','log','toFixed','8ehGetu','Job\x20run\x20id,\x20example:\x20162b1977-6636-4000-929b-cc265b862ff0','Container\x20to\x20exec\x20into\x20(logs\x20from\x20all\x20containers\x20will\x20be\x20shown\x20if\x20not\x20specified)','askForService','apiClient','max','getMetricsCommand','askForAddon','printMetricsSingle','container\x20','runId','apiContext','getTime','metadata','keys','printMetricsTable','endTime','Don\x27t\x20use\x20context\x20default\x20values,\x20explicitly\x20use\x20options\x20or\x20ask.','\x20for\x20container:\x20','--timestamp\x20[timestamp]','addonId','length','deploymentId','502984eMxTYn','filter','metricsApiClient','Length\x20of\x20timespan\x20in\x20seconds.\x20Only\x20valid\x20if\x20not\x20both,\x20startTime\x20and\x20endTime\x20are\x20set','Get\x20metrics\x20after\x20this\x20timestamp,\x20','Get\x20metrics\x20at\x20this\x20exact\x20timestamp,\x20if\x20no\x20timestamp\x20set\x20most\x20recent\x20time\x20is\x20used.\x20','build-','choices','4441500OGyNnt','format','Metrics\x20for\x20','split','metrics','isNaN','bold','askForProjectContext','push','9012150ubajij','all\x20containers','slice','conflicts','getStandardMetricsCommand',',\x20duration:\x20','alias','handleError','unshift','askForTeam','addon','inquirerHelper','--container\x20--containerId\x20[NAME]','time','\x20to\x20get\x20logs\x20from','rows','metricsRange','join','buildId','askForBuild','toUpperCase','16774692sGbzVc','exit','name','addOption','Fetching\x20data..','askForProject','option','flat','\x20in\x20project\x20','askForJobRun','forEach','-t,\x20--metricTypes\x20<metricTypes...>','getTokenScope','askForContainer','\x20seconds','value','Team\x20id','3iCabmK','service','containerId','org','askForJob','flatMap','contextProvider','metricId','yml','Deployment\x20id,\x20example:\x20my-service-54785f4','details','charAt','data','clear','Get\x20metrics\x20for\x20the\x20specified\x20','toISOString','pct','noDefaults','message','8859790TFJWMn','5900322YZCofd','metricsSingle','printMetricsGraph',',\x20volume:\x20','job','getCurrentProjectName','startTime','--project\x20--projectId\x20[NAME]','min','stringify','getCurrentServiceName','N/A','refreshInterval','Error\x20while\x20fetching\x20metrics\x20entries:\x20','toTimeString','getPaddingDataEnd',',\x20to:\x20','map','description','5iFYWjv','\x20of\x20','json','metricUnit','823612TjQCeD','values','yaml','--build\x20--buildId\x20[buildId]',',\x20metric\x20types:\x20'];a13Q=function(){return Q8;};return a13Q();}import{downSampleData,getAsciiChart}from'../formatting/terminal-chart.js';import{printAsTable,printResponse}from'../formatting/console-format-helpers.js';import a13N from'chalk';export class CliMetrics{[a13f(0x1b4)];[a13f(0x1ad)];['metricsApiClient'];[a13f(0x1dc)];['refreshInterval']=0x2710;[a13f(0x1d5)]=(Q,A)=>{const y=a13f,N=getCommand(!![])[y(0x1e8)]((A?y(0x1c6):'')+y(0x1cc))[y(0x1d7)]((A?y(0x1c6):'')+'metric')[y(0x192)](y(0x17a)+Q)[y(0x161)](y(0x187),y(0x1a3))[y(0x161)]('--'+Q+y(0x19e)+Q+y(0x1a1),Q[y(0x177)](0x0)[y(0x1e5)]()+Q[y(0x1d3)](0x1)+y(0x1df))['option'](y(0x1dd),y(0x1ab))['option']('--startTime\x20<timestamp>',y(0x1c4)+tsHint,parseDateInput)[y(0x161)]('--endTime\x20<timestamp>','Get\x20metrics\x20before\x20this\x20timestamp,\x20'+tsHint,parseDateInput)[y(0x161)]('--duration\x20[duration]',y(0x1c3))[y(0x15e)](new Option(y(0x166),'Which\x20metric\x20type\x20to\x20fetch')[y(0x1c7)](Object[y(0x198)](MetricType)))[y(0x15e)](new Option(y(0x1bc),y(0x1c5)+tsHint)[y(0x1a2)](parseDateInput)[y(0x1d4)]([y(0x186),y(0x1b9)]))[y(0x161)](y(0x1a4),y(0x1ba),![])['addOption'](new Option('-o,\x20--output\x20[output]','Output\x20formatting.\x20Will\x20use\x20advanced\x20formatting\x20by\x20default.')['choices'](Object[y(0x198)]([y(0x1c9),y(0x195),y(0x199)])));if(A)N[y(0x161)](y(0x19a),'Build\x20to\x20get\x20logs\x20from');if(Q===y(0x184))N[y(0x161)]('--run\x20--runId\x20[runId]',y(0x1aa));if(Q===y(0x16d))N[y(0x161)]('--deployment\x20--deploymentId\x20[deploymentId]',y(0x175));return this['apiClient'][y(0x172)][y(0x167)]()==='org'&&N['option']('--team\x20--teamId\x20[TEAMID]',y(0x16b)),N;};constructor(Q,A){const G=a13f;this[G(0x1b4)]=Q,this[G(0x1ad)]=new ApiClient(Q,{'throwErrorOnHttpErrorCode':!![],'customUserAgent':customUserAgent,'agent':A}),this['metricsApiClient']=this[G(0x1ad)],this[G(0x1dc)]=new InquirerHelper(this['apiClient']);}[a13f(0x1af)](Q,A=![]){const N=async(l,X,S)=>{const H=a13A,g=S[H(0x17d)],{apiContext:d,inquirerHelper:Z}=this;switch(Q){case'service':{const M=g?undefined:d[H(0x18a)]();return S[H(0x1a6)]||M||await Z[H(0x1ac)](l,X)();}case H(0x184):{const k=g?undefined:d[H(0x18a)]();return S[H(0x19c)]||k||await Z[H(0x170)](l,X)();}case H(0x1db):{const B=g?undefined:d[H(0x18a)]();return S[H(0x1bd)]||B||await Z[H(0x1b0)](l,X)();}}},t=async(l,X,S,g)=>{const v=a13A;if(A)return g[v(0x1e3)]||await this['inquirerHelper'][v(0x1e4)](l,Q===v(0x16d)?S:undefined,Q===v(0x184)?S:undefined,!![],X)();return undefined;},a=async(l,X,S,g)=>{const K=a13A;if(!A&&g[K(0x16e)]!==undefined){if(g[K(0x16e)]!==!![])return g[K(0x16e)];return await this[K(0x1dc)][K(0x168)](l,Q===K(0x16d)?S:undefined,Q===K(0x184)?S:undefined,!![],X)();}return undefined;},p=async(l,X,S,g)=>{const W=a13A;if(Q===W(0x184))return g[W(0x1b3)]||await this[W(0x1dc)][W(0x164)](S,l,!![],X)();return undefined;},P=async(l,X,S,g)=>{const o=a13A;if(Q===o(0x16d)){if(g[o(0x1bf)]!==!![])return g[o(0x1bf)];return g['deploymentId'];}return undefined;};return this['getStandardMetricsCommand'](Q,A)['action'](async l=>{const q=a13A,{noDefaults:X,projectId:S,teamId:g,duration:d,timestamp:Z,output:M,startTime:k,endTime:B,metricTypes:w,quiet:x}=l;assertContextExisting(this['apiClient']);if(k&&B&&d)throw new Error('Only\x20two\x20of\x20\x27startTime\x27,\x20\x27endTime\x27\x20and\x20\x27duration\x27\x20can\x20be\x20set.');const {apiContext:Y,inquirerHelper:E,metricsApiClient:D}=this,s=X?undefined:Y[q(0x185)](),{projectId:i,teamId:T}=await this['askForProjectContext'](Y,E,S,g,s),m=await N(i,T,l),n=await t(i,T,m,l),R=await p(i,T,m,l),u=await P(i,T,m,l),V=await a(i,T,m,l),U={'teamId':T,'projectId':i,'entityId':m},L={'containerName':V,'startTime':k,'endTime':B,'duration':d,'timestamp':Z,'metricTypes':w,'runId':R,'buildId':n,'deploymentId':u,'isBuild':A??![]},h=!(k||B||d);if(!x&&M!=='yaml'&&M!==q(0x174)&&M!==q(0x195))this['printInitInfo'](Q,m,i,L,x);if(h){if(M!==undefined){const O=await D[q(0x1cc)][q(0x181)](U,L,Q);this[q(0x1d8)](O),printResponse(M,O['data']);}else[...Array(process[q(0x1a0)]['rows']-0x1)][q(0x165)]((I,z)=>z===0x0?console[q(0x1a7)](q(0x15f)):console['log']()),await this[q(0x1b8)](U,L,Q)(),setInterval(this[q(0x1b8)](U,L,Q),this['refreshInterval']),await new Promise(I=>setTimeout(I,this[q(0x18c)]*0x64));}else{const I=await D[q(0x1cc)][q(0x1e1)](U,L,Q);this[q(0x1d8)](I),M!==undefined?printResponse(M,I[q(0x178)]):this[q(0x182)](k,B??new Date())(I['data']);}process[q(0x1e7)]();});}[a13f(0x1b1)](Q){const b=a13f,A=(a,p)=>{const C=a13A;if(!p?.[C(0x16a)])C(0x18b);const P=a[C(0x196)]===C(0x17c)?'%':a['metricUnit'];return''+Number(p?.[C(0x16a)])[C(0x1a8)](0x3)+P;},N=a=>{const r=a13A;if(!a?.['ts'])'N/A';return a['ts'][r(0x18e)]()[r(0x1cb)]('\x20')[0x0];},t={};Object[b(0x1b7)](Q)['forEach'](a=>{const c=b,{values:p,metricInfo:P}=Q[a];return p[c(0x165)](l=>{const e=c,X=l[e(0x1b6)][e(0x16e)];Object['assign'](t,{[X]:{...t?.[X],[e(0x1de)]:N(l[e(0x178)]?.[0x0]),'containerId':X,[P[e(0x173)]]:A(P,l[e(0x178)]?.[0x0])}});});}),printAsTable(Object[b(0x198)](t),'Metrics\x20overview');}[a13f(0x182)]=(Q,A)=>{return N=>{const J=a13A,t=Object[J(0x1b7)](N)[J(0x171)](a=>{const j=J,{values:p,metricInfo:P}=N[a],{metricUnit:l,metricResolution:X}=P;return p[j(0x191)](S=>{const Q0=j,{metadata:g,data:d}=S,Z=A?A?.[Q0(0x1b5)]()>new Date()[Q0(0x1b5)]()?new Date():A:undefined,M=new Date(d?.[0x0]?.['ts']),k=new Date(d?.[d[Q0(0x1be)]-0x1]?.['ts']),B=this['getPaddingDataStart'](Q,M,X),w=this[Q0(0x18f)](Z,k,X),x=[...B,...d,...w],Y=x[Q0(0x191)](R=>[new Date(R['ts'])['valueOf'](),Number(R[Q0(0x16a)])])[Q0(0x1c1)](R=>!Number[Q0(0x1cd)](R[0x0])),E=Math[Q0(0x188)](Math[Q0(0x1ae)](process[Q0(0x1a0)][Q0(0x19d)]-0xa,0xa),0x64),D=Math[Q0(0x188)](Math[Q0(0x1ae)](process['stdout'][Q0(0x1e0)]-0x9,0xa),0xf),s=l==='pct'?0x64:undefined,i=l==='pct'?'%':l,T=downSampleData(Y,E),m=T[Q0(0x191)](R=>R[0x1]),n={'min':0x0,'height':D,'max':s,'unit':i,'startTs':Q??M,'endTs':Z??k};return{'dataSeries':m,'metadata':g,'chartOpts':n,'metricInfo':P};});})[J(0x162)]();if(t[J(0x1be)]===0x0)warning('No\x20metrics\x20found\x20for\x20this\x20query');else t['forEach'](a=>{const Q1=J,{dataSeries:p,metadata:P,chartOpts:l,metricInfo:X}=a,{containerId:S,volumeId:g}=P,d=g?Q1(0x183)+g:'';console[Q1(0x1a7)](X['metricId']+Q1(0x1bb)+a13N[Q1(0x1ce)](S)+d),console['log'](getAsciiChart(p,l));});};};['getPaddingDataStart'](Q,A,N){const Q2=a13f,t=P=>new Date(P[Q2(0x1b5)]()-a),a=N*0x3e8;if(!Q)return[];if(!A)return[];if(t(A)[Q2(0x1b5)]()<Q[Q2(0x1b5)]())return[];const p=[{'ts':t(A),'value':0x0}];while(t(p[p[Q2(0x1be)]-0x1]['ts'])[Q2(0x1b5)]()<=Q[Q2(0x1b5)]()){p[Q2(0x1d9)]({'ts':t(p[p[Q2(0x1be)]-0x1]['ts']),'value':0x0});}return p;}[a13f(0x18f)](Q,A,N){const Q3=a13f,t=P=>new Date(P['getTime']()+a),a=N*0x3e8;if(!Q)return[];if(!A)return[];if(t(A)[Q3(0x1b5)]()>Q['getTime']())return[];const p=[{'ts':t(A),'value':0x0}];while(t(p[p[Q3(0x1be)]-0x1]['ts'])['getTime']()<=Q[Q3(0x1b5)]()){p[Q3(0x1d0)]({'ts':t(p[p[Q3(0x1be)]-0x1]['ts']),'value':0x0});}return p;}[a13f(0x1b8)]=(Q,A,N)=>async()=>{const Q4=a13f;try{const t=await this[Q4(0x1c2)][Q4(0x1cc)][Q4(0x181)](Q,A,N);console[Q4(0x179)]();if(t[Q4(0x19f)])error(Q4(0x18d)+t['error'][Q4(0x17e)]);else this[Q4(0x1b1)](t[Q4(0x178)]);}catch(a){console['clear'](),error(Q4(0x18d)+a[Q4(0x17e)]);}};[a13f(0x1d8)]=Q=>{const Q5=a13f;if(Q[Q5(0x19f)]){const A=JSON[Q5(0x189)](Q[Q5(0x19f)][Q5(0x176)]);throw new Error(Q5(0x18d)+Q[Q5(0x19f)][Q5(0x17e)]+'\x20'+A);}};['printInitInfo']=(Q,A,N,t,a)=>{const Q6=a13f;if(a===!![])return;const {metricTypes:p,endTime:P,startTime:l,duration:X,containerId:S}=t,g=l?',\x20from:\x20'+l[Q6(0x17b)]():'',d=P?Q6(0x190)+P[Q6(0x17b)]():'',Z=X?Q6(0x1d6)+X+Q6(0x169):'',M=S?Q6(0x1b2)+a13N[Q6(0x1ce)](S):Q6(0x1d2),k=Q+'\x20'+a13N[Q6(0x1ce)](A)+Q6(0x163)+a13N['bold'](N),B=''+g+d+Z,w=p?Q6(0x19b)+p?.[Q6(0x1e2)](','):'';console['log'](Q6(0x1ca)+M+Q6(0x194)+k+w+B);};[a13f(0x1cf)]=async(Q,A,N,t,a)=>{const Q7=a13f,p=Q['getTokenScope']()===Q7(0x16f)?t??await A[Q7(0x1da)]()():undefined,P=N||a||await A[Q7(0x160)](p)();return{'teamId':p,'projectId':P};};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a14S=a14A;(function(Q,A){const l=a14A,N=Q();while(!![]){try{const t=parseInt(l(0xbb))/0x1+parseInt(l(0xba))/0x2+-parseInt(l(0xb7))/0x3*(-parseInt(l(0xc9))/0x4)+parseInt(l(0xc8))/0x5*(-parseInt(l(0xbe))/0x6)+-parseInt(l(0xc1))/0x7+parseInt(l(0xb1))/0x8*(-parseInt(l(0xc2))/0x9)+parseInt(l(0xc3))/0xa;if(t===A)break;else N['push'](N['shift']());}catch(a){N['push'](N['shift']());}}}(a14Q,0x23a9d));function a14Q(){const B=['loading','1060iTJjiJ','4whpHxx','dir\x20must\x20be\x20up\x20or\x20down','realLength','choices','handleDynamicPageLoad','opt','6896VzFxTp','selected','onUpKey','down','push','render','22824JgsOVi','loop','loadMore','72402yrWLgG','225217iWCsrq','pagOpt','nextPageCursor','7134mBrBNr','italic','\x20Loading\x20more\x20options','1047158IAzSWK','2565IVFlse','5243830XRtZSQ','name','catch','reloadText'];a14Q=function(){return B;};return a14Q();}import a14N from'inquirer/lib/prompts/list.js';function a14A(Q,A){const N=a14Q();return a14A=function(t,a){t=t-0xaf;let p=N[t];return p;},a14A(Q,A);}import a14t from'inquirer/lib/objects/choice.js';import a14a from'chalk';function incrementListIndex(Q,A,N){const X=a14A,t=N['choices'][X(0xcb)],a=X(0xb8)in N?Boolean(N['loop']):!![];if(A==='up'){if(Q>0x0)return Q-0x1;return a?t-0x1:Q;}if(A===X(0xb4)){if(Q<t-0x1)return Q+0x1;return a?0x0:Q;}throw new Error(X(0xca));}export class DynamicReloadPaginationPrompt extends a14N{['reloadText']=a14a[a14S(0xbf)]('..\x20Load\x20more\x20options\x20..');[a14S(0xbc)];['loading']=![];[a14S(0xbd)];constructor(Q,A,N){const g=a14S;super(Q,A,N),this['pagOpt']=this['opt'],this[g(0xbd)]=this[g(0xbc)]['nextPageCursor'],this['nextPageCursor']!==undefined&&this['opt']['choices'][g(0xb5)](new a14t(this[g(0xc6)],this[g(0xc6)]));}[a14S(0xb3)](){const d=a14S;if(this['loading'])return;this[d(0xb2)]=incrementListIndex(this[d(0xb2)],'up',this[d(0xb0)]),this[d(0xb6)]();}async['onDownKey'](){const Z=a14S;if(this[Z(0xc7)])return;this['selected']=incrementListIndex(this['selected'],Z(0xb4),this['opt']),await this[Z(0xaf)](),this[Z(0xb6)]();}async[a14S(0xaf)](){const M=a14S;if(this[M(0xb2)]>=this[M(0xb0)][M(0xcc)]['length']-0x1){if(this[M(0xbd)]===undefined)return;this[M(0xc7)]=!![];let Q=0x0;const A=setInterval(()=>{const k=M,p=['⠋','⠙','⠹','⠸','⠼','⠴','⠦','⠧','⠇','⠏'],P=a14a[k(0xbf)](p[Q%p['length']]+k(0xc0));this[k(0xb0)][k(0xcc)]['choices'][this[k(0xb2)]][k(0xc4)]=''+P,Q+=0x1,this[k(0xb6)]();},0x50),{elements:N,nextPageCursor:t}=await this[M(0xbc)][M(0xb9)]({'nextPageCursor':this[M(0xbd)]})[M(0xc5)](()=>({'elements':[],'nextPageCursor':undefined}));this[M(0xbd)]=t;const a=N['map'](p=>new a14t(p,p));this['opt'][M(0xcc)][M(0xcc)]['splice'](this['selected'],0x1),this[M(0xb0)][M(0xcc)][M(0xb5)](...a),t!==undefined&&this[M(0xb0)][M(0xcc)][M(0xb5)](new a14t(this[M(0xc6)],this[M(0xc6)])),clearInterval(A),this[M(0xc7)]=![];}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a15E=a15V;(function(D,V){const F=a15V,P=D();while(!![]){try{const z=-parseInt(F(0xa8))/0x1*(parseInt(F(0xaa))/0x2)+parseInt(F(0xf3))/0x3+parseInt(F(0xb1))/0x4*(-parseInt(F(0xe2))/0x5)+parseInt(F(0xb3))/0x6*(-parseInt(F(0xc3))/0x7)+-parseInt(F(0x95))/0x8+-parseInt(F(0xab))/0x9+-parseInt(F(0xc7))/0xa*(-parseInt(F(0xb8))/0xb);if(z===V)break;else P['push'](P['shift']());}catch(e){P['push'](P['shift']());}}}(a15D,0xaf4a2));function a15D(){const c=['Error\x20occured\x20while\x20trying\x20to\x20forward\x20','entries','Services:','noDefaultsText','\x20with\x20these\x20hostnames:','bold','printForwardingInfo','Addons:','\x20and\x20','forwarding','exit','Please\x20ensure\x20the\x20','greenBright','Port-forwarding\x20for\x20the\x20specified\x20addon','getCurrentProjectName','4118745FvXcCl','apiClient','option','askForProjectContext','SIGINT','C:/Windows/System32/drivers/etc/hosts','data','getTokenScope','forwardService','addon','with\x20hostname:\x20','\x20\x20\x20\x20\x20\x20\x20\x20\x20','hosts','addCommand','\x20\x20\x20No\x20running\x20container\x20found\x20for\x20','askForTeam','length','data.id','printHostsFileHint','Only\x20expose\x20on\x20IP\x20address,\x20not\x20on\x20hostnames.\x20With\x20this\x20option,\x20no\x20root\x20permissions\x20are\x20required.','3945608zQHFem','all','\x27:\x20\x22','skipHostnamesText','description','Forwarding\x20','\x20-\x20','filter','port','askForProject','canExecuteWithHostnames','Instance\x20to\x20forward','green','HTTP','tunnel-close','forEach','askForAddon','message','connection-error','179uCIHUe','\x20flag\x20or\x20manually\x20append\x20following\x20entry\x20to\x20your\x20hosts\x20file\x20(','3602CsDMKG','9618273KjCvMA','Port-forwarding\x20for\x20Northflank\x20services\x20and\x20addons.','Cleaning\x20up\x20open\x20connections\x20failed:\x20','No\x20services\x20and\x20addons\x20to\x20forward\x20found\x20in\x20project\x20','--team\x20--teamId\x20[TEAMID]','darwin','4060OTttcO','--service\x20--serviceId\x20[NAME]','6VLMMYJ','\x20to\x20','alias','--noDefaults','hostnames','6802103nZSIKH','--skipHostnames','askForService','\x20\x20-\x20port\x20','log','\x20mode:\x20the\x20locally\x20forwarded\x20port\x20differs\x20from\x20the\x20actual\x20port\x20on\x20the\x20forwarded\x20service/addon.','contextProvider','\x20\x20-\x20Address:\x20','ports','fwd','protocol','10025099IPvZAm','\x27\x20of\x20','action','getCurrentServiceName','50nzebCS','Running\x20in\x20','\x20\x20If\x20you\x20have\x20added\x20entries\x20to\x20your\x20hosts\x20file,\x20it\x20is\x20recommended\x20to\x20remove\x20them\x20again\x20now.','\x20is\x20exposed\x20on\x20','\x20is\x20running\x20and\x20reachable\x20and\x20that\x20a\x20port\x20is\x20defined\x20on\x20the\x20networking\x20section.','flat','--addon\x20--addonId\x20[NAME]','type','getBaseCommand','/etc/hosts','Team\x20for\x20forwarding','forwardProject','Failed:\x20','\x20service\x20ports','forwardAddon','org','name','join','--project\x20--projectId\x20[NAME]','platform','portFwdCmd','Stop\x20forwarding\x20traffic\x20from\x20','portName','error','address','service','getProxyForwarder','2120CpgpAs','Forwarding\x20addon\x20'];a15D=function(){return c;};return a15D();}import{ApiClient}from'@northflank/js-client';import a15P from'chalk';import{assertContextExisting,customUserAgent,error,getCommand,success,warning}from'../utils.js';import{InquirerHelper}from'../inquirer-helper.js';import*as a15z from'os';import{uniqBy,uniq,repeat,groupBy,capitalize}from'lodash-es';function a15V(D,V){const P=a15D();return a15V=function(z,e){z=z-0x87;let g=P[z];return g;},a15V(D,V);}import{EOL}from'os';export class CliPortForward{[a15E(0xdb)];[a15E(0xf4)];[a15E(0xe7)]='Don\x27t\x20use\x20context\x20default\x20values,\x20explicitly\x20use\x20options\x20or\x20ask.';['skipHostnamesText']=a15E(0x94);constructor(D,V){const J=a15E;this[J(0xf4)]=new ApiClient(D,{'throwErrorOnHttpErrorCode':!![],'customUserAgent':customUserAgent,'agent':V});const P=new InquirerHelper(this[J(0xf4)]);this['portFwdCmd']=getCommand()[J(0xd7)]('forward')[J(0xb5)](J(0xc1))[J(0x99)](J(0xac));const z=this[J(0xcf)]()['name'](J(0x96))['description']('Port-forwarding\x20for\x20all\x20services\x20and\x20addons\x20in\x20the\x20given\x20project')['option'](J(0xb6),this[J(0xe7)],![])[J(0xf5)](J(0xb9),this[J(0x98)],![])[J(0xc5)](async({noDefaults:b,teamId:B,projectId:h,skipHostnames:l})=>{const x=J;assertContextExisting(this[x(0xf4)]);const t=this[x(0xe1)](l),i=b?undefined:D[x(0xf2)](),{projectId:s,teamId:S}=await this[x(0xf6)](D,P,B,h,i);try{const {services:n,addons:A}=await t[x(0xd2)]({'teamId':S,'projectId':s},l);if(n['length']+A[x(0x91)]<=0x0)warning(x(0xae)+a15P['bold'](s));else{const X=n[x(0x9c)](k=>k['length']>0x0)[x(0x91)],U=A[x(0x9c)](k=>k['length']>0x0)[x(0x91)],R='\x20in\x20project\x20'+a15P[x(0xe9)](s);console[x(0xbc)](x(0x9a)+a15P['green']['bold'](X+x(0xd4))+x(0xec)+a15P[x(0xa1)][x(0xe9)](U+'\x20addon\x20ports')+R),console[x(0xbc)](),console[x(0xbc)](a15P[x(0xe9)](x(0xe6))),n[x(0xa4)](k=>{const C=x;if(k[C(0x91)]>=0x1&&!k[0x0][C(0xde)])this[C(0xea)](k,{'type':'service','name':k[0x0][C(0x87)]['id']},l);}),console[x(0xbc)](a15P[x(0xe9)](x(0xeb))),A[x(0xa4)](k=>{const M=x;if(k[M(0x91)]>=0x1&&!k[0x0][M(0xde)])this[M(0xea)](k,{'type':M(0x8a),'name':k[0x0][M(0x87)]['id']},l);}),this[x(0x93)]([...n[x(0xcc)](),...A[x(0xcc)]()],l);}}catch(k){error(x(0xd3)+k[x(0xa6)]);}}),e=this[J(0xcf)]()[J(0xd7)](J(0xe0))[J(0x99)]('Port-forwarding\x20for\x20the\x20specified\x20service')[J(0xf5)](J(0xb2),'Service\x20to\x20forward')[J(0xf5)]('--instance\x20--instanceId\x20[NAME]',J(0xa0))[J(0xf5)](J(0xb6),this[J(0xe7)],![])[J(0xf5)](J(0xb9),this['skipHostnamesText'],![])[J(0xc5)](async({noDefaults:b,teamId:B,projectId:h,serviceId:l,instanceId:t,skipHostnames:i})=>{const W=J;assertContextExisting(this[W(0xf4)]);const s=this['getProxyForwarder'](i),S=b?undefined:D['getCurrentProjectName'](),{projectId:n,teamId:A}=await this['askForProjectContext'](D,P,h,B,S),X=b?undefined:D[W(0xc6)](),U=l||X||await P[W(0xba)](n,A)();console[W(0xbc)]('Forwarding\x20service\x20'+a15P[W(0xe9)](U)+'\x20in\x20project\x20'+a15P['bold'](n));try{const R=await s[W(0x89)]({'teamId':A,'projectId':n,'serviceId':U,'instanceId':t},i);this[W(0xea)](R,{'name':U,'type':W(0xe0),'instanceId':t},i),this[W(0x93)](R,i);}catch(k){error('Failed:\x20'+k[W(0xa6)]);}}),g=this[J(0xcf)]()[J(0xd7)](J(0x8a))[J(0x99)](J(0xf1))[J(0xf5)](J(0xcd),'Addon\x20to\x20forward')[J(0xf5)]('--skipHostnames',this[J(0x98)],![])[J(0xc5)](async({noDefaults:b,teamId:B,projectId:h,addonId:l,skipHostnames:t})=>{const d=J;assertContextExisting(this[d(0xf4)]);const i=this[d(0xe1)](t),s=b?undefined:D[d(0xf2)](),{projectId:S,teamId:n}=await this[d(0xf6)](D,P,h,B,s),A=l||await P[d(0xa5)](S,n)();console[d(0xbc)](d(0xe3)+a15P['bold'](A)+'\x20in\x20project\x20'+a15P[d(0xe9)](S));try{const X={'teamId':n,'projectId':S,'addonId':A},U=await i[d(0xd5)](X,t);this[d(0xea)](U,{'name':A,'type':d(0x8a)},t),this[d(0x93)](U,t);}catch(R){error(d(0xd3)+R['message']);}});this[J(0xdb)][J(0x8e)](z),this[J(0xdb)][J(0x8e)](e),this[J(0xdb)][J(0x8e)](g);}['getBaseCommand']=()=>{const f=a15E,D=getCommand(!![])[f(0xf5)](f(0xd9),'Project\x20for\x20forwarding');return this[f(0xf4)][f(0xbe)][f(0x88)]()===f(0xd6)&&D[f(0xf5)](f(0xaf),f(0xd1)),D;};[a15E(0xe1)](D=![]){const T=a15E,V=this[T(0xf4)][T(0xed)];if(!D){const P=V[T(0x9f)]();if(P['error'])throw new Error(P[T(0xa6)]);}return V['on'](T(0xa3),(z,e)=>{const m=T,g=a15P[m(0xe9)](e['type']+'\x20\x27'+e['id']+'\x27'),b=e[m(0xb7)][m(0x91)]>0x0;warning(m(0xdc)+e[m(0xdf)]+':'+e[m(0x9d)]+m(0xb4)+g),D&&b&&warning(m(0xc9));}),V['on'](T(0xa7),(z,e,g)=>{const q=T;warning('Connection\x20error\x20occurred\x20when\x20forwarding\x20\x27'+e[q(0xdf)]+':'+e[q(0x9d)]+q(0x97)+g?.[q(0xa6)]+'\x22');}),process['on'](T(0xf7),async()=>{const L=T;try{await V['stop']();}catch(z){error(L(0xad)+z[L(0xa6)]);}finally{process[L(0xee)]();}}),V;}[a15E(0xea)](D,V,P=![]){const Z=a15E,{type:z,name:e,instanceId:g}=V;if(D[Z(0x91)]<=0x0){const l=Z(0xef)+V[Z(0xce)]+Z(0xcb);warning(Z(0x8f)+z+'\x20'+a15P[Z(0xe9)](e)+'.\x20'+l);return;}const b=groupBy(D,Z(0x92)),B=t=>'\x20('+(t['portName']?t[Z(0xdd)]+Z(0x9b):'')+t[Z(0xc2)]+')';function h(t,i=0x2){const u=Z;if(!P){const s=t['protocol']===u(0xa2)?'http://':'';t[u(0xb7)][u(0xa4)](S=>{const N=u;console[N(0xbc)](repeat('\x20',i)+'-\x20'+s+S+':'+t[N(0x9d)]);});}}Object[Z(0xe5)](b)[Z(0xa4)](([t,i])=>{const O=Z,s=g?'>\x20Instance\x20\x27'+a15P[O(0xf0)][O(0xe9)](g)+O(0xc4)+z+'\x20\x27'+a15P[O(0xf0)][O(0xe9)](t)+'\x27':'>\x20'+capitalize(z)+'\x20\x27'+a15P['greenBright'][O(0xe9)](t)+'\x27';if(z==='addon'){if(i['length']===0x1){const S=i[0x0];if(S[O(0xde)]){error(O(0xe4)+t+':\x20'+S[O(0xde)]['message']);return;}const n=S[O(0x87)],A=!P?'\x20'+a15P['reset'](O(0x8b)+n[O(0xb7)][O(0xd8)](',')):'';success(s+'\x20is\x20exposed\x20on\x20'+n['address']+':'+n[O(0x9d)]+B(n)+A);}else{const X=uniqBy(i,U=>U?.[O(0x87)]?.[O(0xb7)]?.[O(0xd8)](','))[O(0x91)]>0x1;success(s+'\x20is\x20exposed\x20with\x20multiple\x20'+(X?O(0x8d):O(0xc0))+':'),i[O(0xa4)](U=>{const I=O;if(U['error']){error(I(0xe4)+t+':\x20'+U['error'][I(0xa6)]);return;}const R=U[I(0x87)],k=!P?',\x20hostname:\x20'+R[I(0xb7)]['join'](','):'';console[I(0xbc)](I(0xbf)+R[I(0xdf)]+':'+R['port']+B(R)+k);});}}if(z==='service'){if(i[O(0x91)]===0x1){const U=i[0x0];if(U['error']){error(O(0xe4)+t+':\x20'+U['error']['message']);return;}const R=U['data'],k=!P?O(0xe8):':',H=R[O(0xdf)]+':'+R[O(0x9d)]+B(R);success(s+O(0xca)+H+k),h(R);}else success(s+'\x20is\x20exposed\x20on\x20'+i[0x0]?.[O(0x87)]?.['address']+'\x20with\x20multiple\x20ports:'),i['forEach'](G=>{const a=O;if(G['error']){error('Error\x20occured\x20while\x20trying\x20to\x20forward\x20'+t+':\x20'+G[a(0xde)][a(0xa6)]);return;}const o=G[a(0x87)];success(a(0xbb)+o[a(0x9d)]+B(o)),h(o,0x4);});}});}[a15E(0x93)](D,V=![]){const Y=a15E;if(V){const P=D['flatMap'](t=>t['data'])[Y(0x9c)](t=>t!==undefined),z=process?.[Y(0xda)]==='win32',e=a15z[Y(0xda)]()===Y(0xb0),g=z?Y(0xf8):Y(0xd0),b=a15P[Y(0xe9)]('skipHostnames'),B=e?EOL+'Running\x20on\x20macOS\x20in\x20'+b+Y(0xbd):undefined;let h=Y(0xc8)+b+'\x20mode.\x20If\x20hostname\x20forwarding\x20is\x20required,\x20remove\x20'+Y(0xb9)+Y(0xa9)+g+'):';B!==undefined&&warning(B??'');warning(h);const l=P['map'](t=>t[Y(0xdf)]+Y(0x8c)+t['hostnames'][Y(0xd8)]('\x20'));console['log'](uniq(l)[Y(0xd8)](EOL)),console[Y(0xbc)]();}}['askForProjectContext']=async(D,V,P,z,e)=>{const p=a15E,g=D['getTokenScope']()===p(0xd6)?z??await V[p(0x90)]():undefined,b=P||e||await V[p(0x9e)](g)();return{'teamId':g,'projectId':b};};}
|
|
1
|
+
const a15m=a15A;(function(Q,A){const T=a15A,N=Q();while(!![]){try{const t=-parseInt(T(0x158))/0x1+parseInt(T(0x17a))/0x2+-parseInt(T(0x151))/0x3+parseInt(T(0x14d))/0x4*(parseInt(T(0x152))/0x5)+-parseInt(T(0x172))/0x6+parseInt(T(0x16b))/0x7+-parseInt(T(0x187))/0x8*(-parseInt(T(0x15b))/0x9);if(t===A)break;else N['push'](N['shift']());}catch(a){N['push'](N['shift']());}}}(a15Q,0xd6f15));import{ApiClient}from'@northflank/js-client';import a15N from'chalk';import{assertContextExisting,customUserAgent,error,getCommand,success,warning}from'../utils.js';function a15Q(){const q=['portName','message','Port-forwarding\x20for\x20Northflank\x20services\x20and\x20addons.','Forwarding\x20service\x20','\x20-\x20','\x20in\x20project\x20','join','description','askForProjectContext','protocol','101514aCubVu','http://','getProxyForwarder','/etc/hosts','--service\x20--serviceId\x20[NAME]','type','skipHostnamesText','7137120tMPYIi',',\x20hostname:\x20','tunnel-close','--skipHostnames','address','Service\x20to\x20forward','Stop\x20forwarding\x20traffic\x20from\x20','getTokenScope','511404JKVFTV','Project\x20for\x20forwarding','portFwdCmd','hostnames','ports','\x27:\x20\x22','addon','action','bold','forwardProject','addCommand','--noDefaults','flatMap','864iEYcNQ','forwardAddon','Forwarding\x20addon\x20','>\x20Instance\x20\x27','greenBright','getCurrentServiceName','forEach','map','\x20mode.\x20If\x20hostname\x20forwarding\x20is\x20required,\x20remove\x20','log','org','data','HTTP','service','Cleaning\x20up\x20open\x20connections\x20failed:\x20','skipHostnames','\x20flag\x20or\x20manually\x20append\x20following\x20entry\x20to\x20your\x20hosts\x20file\x20(','\x20mode:\x20the\x20locally\x20forwarded\x20port\x20differs\x20from\x20the\x20actual\x20port\x20on\x20the\x20forwarded\x20service/addon.','entries','apiClient','Error\x20occured\x20while\x20trying\x20to\x20forward\x20','green','\x20\x20\x20\x20\x20\x20\x20\x20\x20','length','Instance\x20to\x20forward','getCurrentProjectName','Don\x27t\x20use\x20context\x20default\x20values,\x20explicitly\x20use\x20options\x20or\x20ask.','filter','platform','\x20and\x20','alias','port','error','Port-forwarding\x20for\x20the\x20specified\x20addon','forward','connection-error','\x27\x20of\x20','\x20is\x20exposed\x20on\x20','Please\x20ensure\x20the\x20','forwardService','\x20service\x20ports','contextProvider','canExecuteWithHostnames','name','reset','Only\x20expose\x20on\x20IP\x20address,\x20not\x20on\x20hostnames.\x20With\x20this\x20option,\x20no\x20root\x20permissions\x20are\x20required.','Port-forwarding\x20for\x20all\x20services\x20and\x20addons\x20in\x20the\x20given\x20project','Failed:\x20','exit','SIGINT','forwarding','--addon\x20--addonId\x20[NAME]','getBaseCommand','C:/Windows/System32/drivers/etc/hosts','4404856zuelLW','\x20\x20\x20No\x20running\x20container\x20found\x20for\x20','Running\x20in\x20','printForwardingInfo','2997249SbFASZ','5bceuNb','printHostsFileHint','\x20addon\x20ports','Running\x20on\x20macOS\x20in\x20','--team\x20--teamId\x20[TEAMID]','Port-forwarding\x20for\x20the\x20specified\x20service','394262fdRfhy','option','noDefaultsText','174321gyZLSd','\x20with\x20these\x20hostnames:','all','\x20to\x20','\x20is\x20running\x20and\x20reachable\x20and\x20that\x20a\x20port\x20is\x20defined\x20on\x20the\x20networking\x20section.','hosts'];a15Q=function(){return q;};return a15Q();}import{InquirerHelper}from'../inquirer-helper.js';import*as a15t from'os';function a15A(Q,A){const N=a15Q();return a15A=function(t,a){t=t-0x13b;let p=N[t];return p;},a15A(Q,A);}import{uniqBy,uniq,repeat,groupBy,capitalize}from'lodash-es';import{EOL}from'os';export class CliPortForward{[a15m(0x17c)];[a15m(0x19a)];[a15m(0x15a)]=a15m(0x1a1);[a15m(0x171)]=a15m(0x144);constructor(Q,A){const n=a15m;this[n(0x19a)]=new ApiClient(Q,{'throwErrorOnHttpErrorCode':!![],'customUserAgent':customUserAgent,'agent':A});const N=new InquirerHelper(this[n(0x19a)]);this['portFwdCmd']=getCommand()[n(0x142)](n(0x1a9))[n(0x1a5)]('fwd')[n(0x168)](n(0x163));const t=this['getBaseCommand']()[n(0x142)](n(0x15d))[n(0x168)](n(0x145))[n(0x159)](n(0x185),this['noDefaultsText'],![])[n(0x159)](n(0x175),this[n(0x171)],![])[n(0x181)](async({noDefaults:P,teamId:l,projectId:X,skipHostnames:S})=>{const R=n;assertContextExisting(this[R(0x19a)]);const g=this[R(0x16d)](S),d=P?undefined:Q[R(0x1a0)](),{projectId:Z,teamId:M}=await this[R(0x169)](Q,N,l,X,d);try{const {services:k,addons:B}=await g[R(0x183)]({'teamId':M,'projectId':Z},S);if(k['length']+B[R(0x19e)]<=0x0)warning('No\x20services\x20and\x20addons\x20to\x20forward\x20found\x20in\x20project\x20'+a15N[R(0x182)](Z));else{const w=k[R(0x1a2)](E=>E[R(0x19e)]>0x0)[R(0x19e)],x=B[R(0x1a2)](E=>E[R(0x19e)]>0x0)['length'],Y='\x20in\x20project\x20'+a15N[R(0x182)](Z);console['log']('Forwarding\x20'+a15N[R(0x19c)][R(0x182)](w+R(0x13f))+R(0x1a4)+a15N[R(0x19c)][R(0x182)](x+R(0x154))+Y),console[R(0x190)](),console[R(0x190)](a15N[R(0x182)]('Services:')),k['forEach'](E=>{const u=R;if(E[u(0x19e)]>=0x1&&!E[0x0]['error'])this[u(0x150)](E,{'type':u(0x194),'name':E[0x0]['data']['id']},S);}),console['log'](a15N['bold']('Addons:')),B[R(0x18d)](E=>{const V=R;if(E['length']>=0x1&&!E[0x0][V(0x1a7)])this['printForwardingInfo'](E,{'type':'addon','name':E[0x0][V(0x192)]['id']},S);}),this[R(0x153)]([...k['flat'](),...B['flat']()],S);}}catch(E){error(R(0x146)+E['message']);}}),a=this[n(0x14b)]()[n(0x142)](n(0x194))[n(0x168)](n(0x157))[n(0x159)](n(0x16f),n(0x177))['option']('--instance\x20--instanceId\x20[NAME]',n(0x19f))['option'](n(0x185),this[n(0x15a)],![])['option'](n(0x175),this[n(0x171)],![])['action'](async({noDefaults:P,teamId:l,projectId:X,serviceId:S,instanceId:g,skipHostnames:d})=>{const U=n;assertContextExisting(this[U(0x19a)]);const Z=this[U(0x16d)](d),M=P?undefined:Q[U(0x1a0)](),{projectId:k,teamId:B}=await this[U(0x169)](Q,N,X,l,M),w=P?undefined:Q[U(0x18c)](),x=S||w||await N['askForService'](k,B)();console['log'](U(0x164)+a15N[U(0x182)](x)+U(0x166)+a15N['bold'](k));try{const Y=await Z[U(0x13e)]({'teamId':B,'projectId':k,'serviceId':x,'instanceId':g},d);this[U(0x150)](Y,{'name':x,'type':U(0x194),'instanceId':g},d),this[U(0x153)](Y,d);}catch(E){error(U(0x146)+E[U(0x162)]);}}),p=this[n(0x14b)]()[n(0x142)]('addon')[n(0x168)](n(0x1a8))[n(0x159)](n(0x14a),'Addon\x20to\x20forward')[n(0x159)](n(0x175),this[n(0x171)],![])[n(0x181)](async({noDefaults:P,teamId:l,projectId:X,addonId:S,skipHostnames:g})=>{const L=n;assertContextExisting(this['apiClient']);const d=this[L(0x16d)](g),Z=P?undefined:Q[L(0x1a0)](),{projectId:M,teamId:k}=await this[L(0x169)](Q,N,X,l,Z),B=S||await N['askForAddon'](M,k)();console[L(0x190)](L(0x189)+a15N[L(0x182)](B)+'\x20in\x20project\x20'+a15N[L(0x182)](M));try{const w={'teamId':k,'projectId':M,'addonId':B},x=await d[L(0x188)](w,g);this[L(0x150)](x,{'name':B,'type':L(0x180)},g),this[L(0x153)](x,g);}catch(Y){error('Failed:\x20'+Y[L(0x162)]);}});this['portFwdCmd'][n(0x184)](t),this[n(0x17c)][n(0x184)](a),this['portFwdCmd'][n(0x184)](p);}[a15m(0x14b)]=()=>{const h=a15m,Q=getCommand(!![])[h(0x159)]('--project\x20--projectId\x20[NAME]',h(0x17b));return this[h(0x19a)][h(0x140)]['getTokenScope']()==='org'&&Q[h(0x159)](h(0x156),'Team\x20for\x20forwarding'),Q;};[a15m(0x16d)](Q=![]){const O=a15m,A=this[O(0x19a)][O(0x149)];if(!Q){const N=A[O(0x141)]();if(N[O(0x1a7)])throw new Error(N[O(0x162)]);}return A['on'](O(0x174),(t,a)=>{const I=O,p=a15N[I(0x182)](a[I(0x170)]+'\x20\x27'+a['id']+'\x27'),P=a[I(0x17d)][I(0x19e)]>0x0;warning(I(0x178)+a['address']+':'+a[I(0x1a6)]+I(0x15e)+p),Q&&P&&warning('\x20\x20If\x20you\x20have\x20added\x20entries\x20to\x20your\x20hosts\x20file,\x20it\x20is\x20recommended\x20to\x20remove\x20them\x20again\x20now.');}),A['on'](O(0x1aa),(t,a,p)=>{const z=O;warning('Connection\x20error\x20occurred\x20when\x20forwarding\x20\x27'+a[z(0x176)]+':'+a[z(0x1a6)]+z(0x17f)+p?.[z(0x162)]+'\x22');}),process['on'](O(0x148),async()=>{const F=O;try{await A['stop']();}catch(t){error(F(0x195)+t[F(0x162)]);}finally{process[F(0x147)]();}}),A;}[a15m(0x150)](Q,A,N=![]){const f=a15m,{type:t,name:a,instanceId:p}=A;if(Q[f(0x19e)]<=0x0){const S=f(0x13d)+A['type']+f(0x15f);warning(f(0x14e)+t+'\x20'+a15N[f(0x182)](a)+'.\x20'+S);return;}const P=groupBy(Q,'data.id'),l=g=>'\x20('+(g[f(0x161)]?g['portName']+f(0x165):'')+g[f(0x16a)]+')';function X(g,d=0x2){const y=f;if(!N){const Z=g[y(0x16a)]===y(0x193)?y(0x16c):'';g[y(0x17d)][y(0x18d)](M=>{const G=y;console['log'](repeat('\x20',d)+'-\x20'+Z+M+':'+g[G(0x1a6)]);});}}Object[f(0x199)](P)[f(0x18d)](([g,d])=>{const H=f,Z=p?H(0x18a)+a15N[H(0x18b)][H(0x182)](p)+H(0x13b)+t+'\x20\x27'+a15N[H(0x18b)][H(0x182)](g)+'\x27':'>\x20'+capitalize(t)+'\x20\x27'+a15N[H(0x18b)][H(0x182)](g)+'\x27';if(t===H(0x180)){if(d[H(0x19e)]===0x1){const M=d[0x0];if(M[H(0x1a7)]){error(H(0x19b)+g+':\x20'+M[H(0x1a7)]['message']);return;}const k=M[H(0x192)],B=!N?'\x20'+a15N[H(0x143)]('with\x20hostname:\x20'+k['hostnames'][H(0x167)](',')):'';success(Z+H(0x13c)+k[H(0x176)]+':'+k[H(0x1a6)]+l(k)+B);}else{const w=uniqBy(d,x=>x?.['data']?.[H(0x17d)]?.['join'](','))[H(0x19e)]>0x1;success(Z+'\x20is\x20exposed\x20with\x20multiple\x20'+(w?H(0x160):H(0x17e))+':'),d['forEach'](x=>{const v=H;if(x[v(0x1a7)]){error('Error\x20occured\x20while\x20trying\x20to\x20forward\x20'+g+':\x20'+x[v(0x1a7)][v(0x162)]);return;}const Y=x[v(0x192)],E=!N?v(0x173)+Y['hostnames']['join'](','):'';console['log']('\x20\x20-\x20Address:\x20'+Y[v(0x176)]+':'+Y[v(0x1a6)]+l(Y)+E);});}}if(t==='service'){if(d['length']===0x1){const x=d[0x0];if(x['error']){error(H(0x19b)+g+':\x20'+x[H(0x1a7)]['message']);return;}const Y=x['data'],E=!N?H(0x15c):':',D=Y['address']+':'+Y[H(0x1a6)]+l(Y);success(Z+H(0x13c)+D+E),X(Y);}else success(Z+H(0x13c)+d[0x0]?.['data']?.['address']+'\x20with\x20multiple\x20ports:'),d[H(0x18d)](s=>{const K=H;if(s[K(0x1a7)]){error(K(0x19b)+g+':\x20'+s[K(0x1a7)][K(0x162)]);return;}const i=s['data'];success('\x20\x20-\x20port\x20'+i[K(0x1a6)]+l(i)),X(i,0x4);});}});}[a15m(0x153)](Q,A=![]){const W=a15m;if(A){const N=Q[W(0x186)](g=>g['data'])['filter'](g=>g!==undefined),t=process?.[W(0x1a3)]==='win32',a=a15t['platform']()==='darwin',p=t?W(0x14c):W(0x16e),P=a15N['bold'](W(0x196)),l=a?EOL+W(0x155)+P+W(0x198):undefined;let X=W(0x14f)+P+W(0x18f)+W(0x175)+W(0x197)+p+'):';l!==undefined&&warning(l??'');warning(X);const S=N[W(0x18e)](g=>g[W(0x176)]+W(0x19d)+g[W(0x17d)][W(0x167)]('\x20'));console['log'](uniq(S)[W(0x167)](EOL)),console[W(0x190)]();}}['askForProjectContext']=async(Q,A,N,t,a)=>{const o=a15m,p=Q[o(0x179)]()===o(0x191)?t??await A['askForTeam']()():undefined,P=N||a||await A['askForProject'](p)();return{'teamId':p,'projectId':P};};}
|
package/dist/ssh/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a16I=a16A;function a16Q(){const C=['findSSH','getCurrentProjectName','askForContainer','uncaughtException','ssh\x20','--useHostnames','\x20-p\x20','\x20to\x20ssh\x20into','3DGrzKc',',\x20stop\x20with\x20Ctrl+C','which','603410jbuqds','askForTeam','Ctrl+C\x20received\x20-\x20Terminating\x20SSH\x20proxy...','78AEXSjF','name','Establish\x20SSH\x20connectivity\x20to\x20Northflank\x20','apiClient','9qbRjwm','find','org','SSH\x20exited\x20with\x20code:\x20','SSH\x20for\x20Northflank\x20services\x20and\x20jobs.','getTokenScope','toUpperCase','\x22\x20./data/\x20','UserKnownHostsFile=/dev/null','data','getCurrentServiceName','SIGTERM','\x20-l','scp\x20-P\x20','Id\x20[NAME]','.\x20Creates\x20an\x20SSH\x20terminal\x20session\x20by\x20default.','56651yhyvev','askForProject',':/remote/path/','ssh','\x20\x20>\x20SCP:\x20\x20\x09','Use\x20with\x20any\x20SSH\x20compatible\x20client.\x20Example\x20usages:','--user\x20[USER]','/usr/bin/ssh','blackBright','description','SSH\x20proxy\x20started\x20on\x20endpoint:\x20','default-ssh','Use\x20specific\x20username\x20for\x20SSH\x20connection','message','33uvguin','push','Only\x20startup\x20SSH\x20proxy\x20without\x20opening\x20an\x20SSH\x20terminal\x20session.','SIGINT','sshCmd','StrictHostKeyChecking=no','RemoteCommand=su\x20','execFileAsync','\x20\x20>\x20SSH\x20session:','\x20\x20>\x20RSYNC:\x20\x20\x09','inherit','Failed\x20to\x20spawn\x20SSH\x20command:\x20','option','contextProvider','addCommand','\x20file.txt\x20','--instance\x20--instanceName\x20[NAME]','Must\x20be\x20run\x20in\x20an\x20interactive\x20terminal\x20(TTY\x20required).','/usr/local/bin/ssh','564296nTEnJb','Instance\x20to\x20use\x20for\x20SSH\x20(random\x20instance\x20will\x20be\x20chosen\x20if\x20not\x20specified)','error','unknown\x20error','SSH\x20killed\x20by\x20signal:\x20','trim','\x20\x20>\x20SFTP:\x20\x20\x09','root','log','kill','rsync\x20-avz\x20-e\x20\x22ssh\x20-p\x20','sftp\x20-P\x20','2017404reHEpf','--project\x20--projectId\x20[NAME]','close','stdin','-tt','askForProjectContext',':/rsync-test/','Unable\x20to\x20initiate\x20SSH\x20tunnel.\x20Ensure\x20your\x20service\x20is\x20running\x20and\x20has\x20SSH\x20enabled','195435stUXzu','withServiceForwarding','11512gSMnjA','Error\x20trying\x20to\x20forward:\x20','exit','LogLevel=ERROR','Project\x20of\x20the\x20','148970VJFwsr','SSH\x20binary\x20not\x20found.\x20Please\x20install\x20OpenSSH.','Don\x27t\x20use\x20context\x20default\x20values,\x20explicitly\x20use\x20options\x20or\x20ask.','730ffUdGg','charAt'];a16Q=function(){return C;};return a16Q();}(function(Q,A){const O=a16A,N=Q();while(!![]){try{const t=parseInt(O(0x190))/0x1+parseInt(O(0x197))/0x2*(parseInt(O(0x1a4))/0x3)+-parseInt(O(0x192))/0x4*(parseInt(O(0x19a))/0x5)+parseInt(O(0x1aa))/0x6*(-parseInt(O(0x1be))/0x7)+-parseInt(O(0x1df))/0x8*(-parseInt(O(0x1ae))/0x9)+-parseInt(O(0x1a7))/0xa+parseInt(O(0x1cc))/0xb*(parseInt(O(0x1eb))/0xc);if(t===A)break;else N['push'](N['shift']());}catch(a){N['push'](N['shift']());}}}(a16Q,0x3f3fe));import{ApiClient}from'@northflank/js-client';import{assertContextExisting,customUserAgent,error,getCommand,success,warning}from'../utils.js';import{InquirerHelper}from'../inquirer-helper.js';import{spawn}from'child_process';import{execFile}from'child_process';import{promisify}from'util';function a16A(Q,A){const N=a16Q();return a16A=function(t,a){t=t-0x18a;let p=N[t];return p;},a16A(Q,A);}import a16N from'chalk';export class CliSsh{[a16I(0x1d0)];[a16I(0x1ad)];constructor(Q,A){const z=a16I;this[z(0x1ad)]=new ApiClient(Q,{'throwErrorOnHttpErrorCode':!![],'customUserAgent':customUserAgent,'agent':A});const N=new InquirerHelper(this[z(0x1ad)]);this[z(0x1d0)]=getCommand(!![])[z(0x1ab)](z(0x1c1))['description'](z(0x1b2));const t='service',a=getCommand(!![])['name'](t)[z(0x1c7)](z(0x1ac)+t+z(0x1bd))[z(0x1d8)](z(0x1ec),z(0x196)+t)[z(0x1d8)]('--'+t+'\x20--'+t+z(0x1bc),t[z(0x19b)](0x0)[z(0x1b4)]()+t['slice'](0x1)+z(0x1a3))['option'](z(0x1dc),z(0x1e0))[z(0x1d8)]('--proxyOnly',z(0x1ce),![])[z(0x1d8)](z(0x1a1),'Replicate\x20'+t+'\x20hostnames\x20on\x20local\x20machine.\x20Requires\x20sudo\x20permissions',![])[z(0x1d8)](z(0x1c4),z(0x1ca))[z(0x1d8)]('--noDefaults',z(0x199),![]);this[z(0x1ad)][z(0x1d9)][z(0x1b3)]()===z(0x1b0)&&a['option']('--team\x20--teamId\x20[TEAMID]','Team\x20id');const p=a['action'](async P=>{const F=z,{noDefaults:l,teamId:X,projectId:S,serviceId:g,instanceName:d,proxyOnly:Z,useHostnames:M}=P,{user:user=F(0x1e6),quiet:k}=P;assertContextExisting(this[F(0x1ad)]);try{const B=l?undefined:Q[F(0x19d)](),{projectId:w,teamId:x}=await this[F(0x18d)](Q,N,S,X,B),Y=l?undefined:Q[F(0x1b8)](),E=g||Y||await N['askForService'](w,x)(),D=d||await N[F(0x19e)](w,E,undefined,![],x,!![])(),s=process[F(0x18b)]['isTTY'],i=s&&!Z,T={'teamId':x,'projectId':w,'serviceId':E,'instanceId':D,'portsFilter':[0x16]};await this[F(0x1ad)]['forwarding'][F(0x191)](T,async m=>{const f=F,n=m[f(0x1af)](L=>L[f(0x1b7)]?.['portName']===f(0x1c9));if(n===undefined)throw new Error(f(0x18f));if(n?.[f(0x1e1)]!==undefined||n?.[f(0x1b7)]===undefined)throw new Error(f(0x193)+(n?.[f(0x1e1)]?.[f(0x1cb)]??f(0x1e2)));const {address:R,port:u,hostnames:V}=n[f(0x1b7)],U=M?V[0x0]??R:R;i?(!k&&success(f(0x1c8)+(U+':'+u)+',\x20stop\x20with\x20Ctrl+D'),await this['startSSH']({'address':U,'port':u,'user':user})):(!k?(success('SSH\x20proxy\x20started\x20on\x20endpoint:\x20'+(U+':'+u)+f(0x1a5)),console[f(0x1e7)](f(0x1c3)),console['log'](f(0x1d4)+a16N[f(0x1c6)](f(0x1a0)+user+'@'+U+f(0x1a2)+u)),console[f(0x1e7)](f(0x1e5)+a16N[f(0x1c6)](f(0x1ea)+u+'\x20'+user+'@'+U)),console[f(0x1e7)](f(0x1d5)+a16N[f(0x1c6)](f(0x1e9)+u+f(0x1b5)+user+'@'+U+f(0x18e))),console[f(0x1e7)](f(0x1c2)+a16N[f(0x1c6)](f(0x1bb)+u+f(0x1db)+user+'@'+U+f(0x1c0)))):console[f(0x1e7)](user,U,u),await new Promise((L,h)=>{const G=f;process['on']('SIGINT',()=>{const y=a16A;if(!k)success(y(0x1a9));L();}),process['on'](G(0x19f),h);}));},!M);}catch(m){error(''+m[F(0x1cb)]);}finally{process[F(0x194)]();}});this['sshCmd'][z(0x1da)](p);}['execFileAsync']=promisify(execFile);async[a16I(0x19c)](){const H=a16I;try{const {stdout:Q}=await this[H(0x1d3)](H(0x1a6),['ssh']);return Q[H(0x1e4)]();}catch{const A=['ssh',H(0x1c5),H(0x1de),'C:\x5cWindows\x5cSystem32\x5cOpenSSH\x5cssh.exe'];for(const N of A){try{return await this[H(0x1d3)](N,['-V']),N;}catch{}}return null;}}async['startSSH'](Q){const v=a16I,A=await this[v(0x19c)]();if(!A)throw new Error(v(0x198));if(!process[v(0x18b)]['isTTY'])throw new Error(v(0x1dd));const {address:N,port:port=0x16,user:user=v(0x1e6),args:args=[],trusted:trusted=!![]}=Q,t=[];trusted&&t[v(0x1cd)]('-o',v(0x1d1),'-o',v(0x1b6),'-o',v(0x195));user!==v(0x1e6)&&t[v(0x1cd)]('-o',v(0x1d2)+user+v(0x1ba),'-o','RequestTTY=yes');const a=spawn(A,[v(0x18c),'-p',port['toString'](),'-l',v(0x1e6),...t,...args,N],{'stdio':v(0x1d6)});await new Promise((p,P)=>{const K=v;a['on'](K(0x18a),(l,X)=>{const W=K;if(X)warning(W(0x1e3)+X);else l!==0x0?warning(W(0x1b1)+l):success('SSH\x20session\x20ended.');p(l);}),a['on'](K(0x1e1),l=>{const o=K;P(new Error(o(0x1d7)+l['message']));}),process['on'](K(0x1cf),()=>a[K(0x1e8)](K(0x1cf))),process['on'](K(0x1b9),()=>a[K(0x1e8)](K(0x1b9)));});}[a16I(0x18d)]=async(Q,A,N,t,a)=>{const q=a16I,p=Q[q(0x1b3)]()===q(0x1b0)?t??await A[q(0x1a8)]()():undefined,P=N||a||await A[q(0x1bf)](p)();return{'teamId':p,'projectId':P};};}
|
package/dist/utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a17S=a17A;function a17A(Q,A){const N=a17Q();return a17A=function(t,a){t=t-0x87;let p=N[t];return p;},a17A(Q,A);}(function(Q,A){const X=a17A,N=Q();while(!![]){try{const t=parseInt(X(0x8c))/0x1*(parseInt(X(0xab))/0x2)+-parseInt(X(0x87))/0x3*(-parseInt(X(0xbf))/0x4)+parseInt(X(0xba))/0x5+parseInt(X(0x94))/0x6*(-parseInt(X(0xa3))/0x7)+-parseInt(X(0xa8))/0x8*(parseInt(X(0x96))/0x9)+parseInt(X(0x98))/0xa*(parseInt(X(0x8b))/0xb)+parseInt(X(0xb9))/0xc*(parseInt(X(0x8e))/0xd);if(t===A)break;else N['push'](N['shift']());}catch(a){N['push'](N['shift']());}}}(a17Q,0x34090));import a17N from'chalk';import{Command}from'commander';import{ProxyAgent}from'proxy-agent';import a17t from'node-fetch';import{readFileSync}from'fs';import{fileURLToPath}from'url';import{dirname,join}from'path';const __filename=fileURLToPath(import.meta[a17S(0x8a)]),__dirname=dirname(__filename),pgk=JSON[a17S(0x91)](readFileSync(join(__dirname,'../package.json'),a17S(0xb6)));export const customUserAgent=a17S(0xb2)+pgk?.['version'];export const agent=new ProxyAgent();export const proxyEnvsSet=process[a17S(0xbb)][a17S(0xbe)]!==undefined||process[a17S(0xbb)][a17S(0x97)]!==undefined;export const decodeJwtPayload=Q=>{const d=a17S;try{const A=a=>{const g=a17A,p=a['replace'](/-/g,'+')[g(0xb8)](/_/g,'/')[g(0xc0)](a[g(0xae)]+(0x4-a[g(0xae)]%0x4)%0x4,'=');return JSON['parse'](Buffer[g(0xa5)](p,'base64')[g(0xa7)]());},[N,t]=Q[d(0xc4)]('.');return A(t);}catch(a){return{};}};export async function checkUpdate(Q){const M=a17S;function A(N,t){const Z=a17A,a=new Date(Number(N));return a[Z(0x90)](a['getDate']()+t),a;}try{if(A(Q[M(0xb3)](),0x1)>new Date())return;const N=pgk[M(0xa2)],{name:t}=pgk;if(!N)return;const a=M(0xb4)+t+M(0x89),p=await a17t(a,{'agent':agent,'method':M(0x9a),'signal':AbortSignal['timeout'](0x1388)}),P=(await p[M(0xc1)]())[M(0xa2)];needsUpdate(N,P)&&warning(M(0xb0)+N+',\x20the\x20latest\x20version\x20of\x20the\x20cli\x20is\x20'+P+'.'+(M(0xc2)+t+'\x20-g\x27\x20or\x20\x27yarn\x20global\x20add\x20'+t+'\x27\x20**')),await Q[M(0x8d)](new Date());}catch(l){}}function needsUpdate(Q,A){const k=a17S,N=/(\.0+)+$/,t=Q[k(0xb8)](N,'')[k(0xc4)]('.'),a=A[k(0xb8)](N,'')[k(0xc4)]('.');for(let p=0x0;p<Math['min'](t['length'],a[k(0xae)]);p+=0x1){const P=parseInt(a[p],0xa)-parseInt(t[p],0xa);if(P>0x0)return!![];if(P<0x0)return![];}return a[k(0xae)]>t[k(0xae)];}export function error(Q){const B=a17S;console['error'](a17N['redBright'](B(0xbd)+Q));}export function warning(Q){const w=a17S;console[w(0x9c)](a17N['yellow'](''+Q));}export function success(Q){const x=a17S;console[x(0x9e)](a17N['green'](''+Q));}function a17Q(){const T=['getCurrentToken','log','contextProvider','No\x20CLI\x20context\x20present.\x20Create\x20context\x20with\x20\x27northflank\x20login\x27','setUTCSeconds','version','434knFqgH','storeOptionsAsProperties','from','Verbose\x20output','toString','8rwFCpq','Do\x20not\x20validate\x20input\x20fields\x20on\x20client\x20side','No\x20console\x20output','2ubETaj','then','No\x20token\x20in\x20CLI\x20context.\x20Add\x20token\x20with\x20\x27northflank\x20set-token\x27','length','--quiet','**\x20You\x27re\x20running\x20on\x20version\x20','--skipValidation','northflank-cli/','getLastUpdateCheck','https://registry.npmjs.org/','Display\x20help\x20for\x20command','utf-8','No\x20API\x20URL\x20present\x20in\x20context.\x20Create\x20new\x20context\x20with\x20\x27northflank\x20login\x27','replace','756qrjnZH','704405EZovyI','env','helpOption','Failed:\x20','HTTP_PROXY','16Aytsdf','padEnd','json','\x20Consider\x20updating\x20using\x20\x27npm\x20i\x20','Invalid\x20date\x20received:\x20','split','122034pozxdD','allowExcessArguments','/latest','url','9229SjSWtm','405222poEFLy','setLastUpdateCheck','14261mgRRsU',',\x20expected\x20valid\x20date\x20string\x20(example:\x202020-02-02T02:02:02Z)\x20or\x20unix\x20timestamp\x20(example\x201580608922)','setDate','parse','option','reduce','34704nvcOXx','getCurrentContext','3343185flcsLy','HTTPS_PROXY','1970nPGDln','--verbose','GET','getTime','error'];a17Q=function(){return T;};return a17Q();}export function getCommand(Q=![]){const Y=a17S,A=new Command();return A[Y(0xbc)](undefined,Y(0xb5)),A['addHelpCommand'](![]),A[Y(0xa4)](![]),A['allowUnknownOption'](![]),A[Y(0x88)](![]),A['enablePositionalOptions'](!![]),Q&&(A['option'](Y(0x99),Y(0xa6),![]),A[Y(0x92)](Y(0xaf),Y(0xaa),![]),A[Y(0x92)](Y(0xb1),Y(0xa9),![])),A;}export const retry=(Q,A=0x32)=>N=>{let t=Q;const a=async()=>{try{return await N();}catch(p){if(t<=0x0)throw p;return t-=0x1,await new Promise(P=>setTimeout(()=>P(),A)),a();}};return a();};export const asyncSequential=async(Q,A)=>{const E=a17S,N=Promise['resolve']([]);return Q[E(0x93)]((t,a)=>t['then'](p=>A(a)[E(0xac)](P=>{return p['push'](P),p;})),N);};export function isValidJSON(Q){const D=a17S;try{return JSON[D(0x91)](Q);}catch(A){return![];}}export function assertContextExisting(Q){const s=a17S;if(Q[s(0x9f)][s(0x95)]()===undefined)throw new Error(s(0xa0));if(Q['contextProvider']['getCurrentBaseUrl']()===undefined)throw new Error(s(0xb7));if(Q[s(0x9f)][s(0x9d)]()===undefined)throw new Error(s(0xad));}export const parseDateInput=Q=>{const i=a17S;try{let A=new Date(Q);if(isNaN(A[i(0x9b)]())){const N=Q[i(0xae)]===0xd?Q/0x3e8:Q,t=new Date(0x0);t[i(0xa1)](N);if(isNaN(t[i(0x9b)]()))throw new Error();return t;}return A;}catch(a){throw new Error(i(0xc3)+Q+i(0x8f));}};export const tsHint='example:\x202020-02-02T02:02:02Z\x20(date\x20string)\x20or\x201580608922\x20(unix\x20ts)';
|