@northflank/cli 0.11.1 → 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 +2 -2
package/dist/metrics/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function a13e(){const e9=['1431090VJPHps','printMetricsSingle','keys',',\x20from:\x20','metricsSingle','description','\x20for\x20container:\x20','metrics','log','build-','--container\x20--containerId\x20[NAME]','getMetricsCommand','Get\x20metrics\x20for\x20the\x20specified\x20','--noDefaults','Job\x20run\x20id,\x20example:\x20162b1977-6636-4000-929b-cc265b862ff0','charAt','job','map','pct','inquirerHelper','split','serviceId','--endTime\x20<timestamp>','getTokenScope','askForContainer','metricsRange','\x20to\x20get\x20logs\x20from','clear','addon','Metrics\x20overview','7570qnMWnP','getStandardMetricsCommand','stdout','slice',',\x20volume:\x20','conflicts','rows','endTime','values','askForAddon','min','service','Deployment\x20id,\x20example:\x20my-service-54785f4','--timestamp\x20[timestamp]','-t,\x20--metricTypes\x20<metricTypes...>','13MUtQAm','name','\x20of\x20','--deployment\x20--deploymentId\x20[deploymentId]','stringify','message','alias','printInitInfo','N/A','exit','flatMap','assign','metricUnit','askForTeam','getPaddingDataEnd','refreshInterval','option','14436136bdMXcp','valueOf','toUpperCase','Only\x20two\x20of\x20\x27startTime\x27,\x20\x27endTime\x27\x20and\x20\x27duration\x27\x20can\x20be\x20set.','addOption','7767dSkHSk','argParser','isNaN','value','7rfoNZm','getPaddingDataStart','getTime','32366mOZuzo','66JqTjye','--run\x20--runId\x20[runId]','data','askForService','askForJobRun',',\x20to:\x20','--startTime\x20<timestamp>','noDefaults','all\x20containers','Get\x20metrics\x20before\x20this\x20timestamp,\x20','askForProjectContext','getCurrentServiceName','printMetricsTable','\x20in\x20project\x20','containerId','Length\x20of\x20timespan\x20in\x20seconds.\x20Only\x20valid\x20if\x20not\x20both,\x20startTime\x20and\x20endTime\x20are\x20set','forEach','Fetching\x20data..','Project\x20for\x20logs','toISOString','metricsApiClient','Which\x20metric\x20type\x20to\x20fetch','8710648GgTTRI','yaml','error','Error\x20while\x20fetching\x20metrics\x20entries:\x20','402520SRHjPt','contextProvider','handleError','yml','flat','unshift','max','time','filter','columns','getCurrentProjectName','--build\x20--buildId\x20[buildId]','bold',',\x20metric\x20types:\x20','org','Team\x20id','Container\x20to\x20exec\x20into\x20(logs\x20from\x20all\x20containers\x20will\x20be\x20shown\x20if\x20not\x20specified)','-o,\x20--output\x20[output]','format','apiClient','details','runId','deploymentId','askForJob','apiContext','printMetricsGraph','No\x20metrics\x20found\x20for\x20this\x20query','addonId','22067856uUyTvP','Id\x20[NAME]','json','choices',',\x20duration:\x20','metricId','action','4DWKBzB','length'];a13e=function(){return e9;};return a13e();}const a13p=a13V;function a13V(e,V){const b=a13e();return a13V=function(G,a){G=G-0xe9;let m=b[G];return m;},a13V(e,V);}(function(e,V){const g=a13V,b=e();while(!![]){try{const G=-parseInt(g(0x16f))/0x1*(-parseInt(g(0x102))/0x2)+-parseInt(g(0x142))/0x3*(parseInt(g(0x140))/0x4)+parseInt(g(0x11d))/0x5*(parseInt(g(0x103))/0x6)+parseInt(g(0xff))/0x7*(-parseInt(g(0x119))/0x8)+-parseInt(g(0xfb))/0x9*(-parseInt(g(0x160))/0xa)+-parseInt(g(0xf6))/0xb+parseInt(g(0x139))/0xc;if(G===V)break;else b['push'](b['shift']());}catch(a){b['push'](b['shift']());}}}(a13e,0xad54d));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';import{downSampleData,getAsciiChart}from'../formatting/terminal-chart.js';import{printAsTable,printResponse}from'../formatting/console-format-helpers.js';import a13b from'chalk';export class CliMetrics{[a13p(0x135)];['apiClient'];[a13p(0x117)];[a13p(0x155)];[a13p(0xf4)]=0x2710;[a13p(0x161)]=(e,V)=>{const C=a13p,b=getCommand(!![])[C(0x170)]((V?C(0x14b):'')+C(0x149))[C(0xeb)]((V?C(0x14b):'')+'metric')[C(0x147)](C(0x14e)+e)[C(0xf5)]('--project\x20--projectId\x20[NAME]',C(0x115))['option']('--'+e+'\x20--'+e+C(0x13a),e[C(0x151)](0x0)[C(0xf8)]()+e[C(0x163)](0x1)+C(0x15c))['option'](C(0x14c),C(0x12d))[C(0xf5)](C(0x109),'Get\x20metrics\x20after\x20this\x20timestamp,\x20'+tsHint,parseDateInput)['option'](C(0x158),C(0x10c)+tsHint,parseDateInput)['option']('--duration\x20[duration]',C(0x112))[C(0xfa)](new Option(C(0x16e),C(0x118))[C(0x13c)](Object[C(0x168)](MetricType)))['addOption'](new Option(C(0x16d),'Get\x20metrics\x20at\x20this\x20exact\x20timestamp,\x20if\x20no\x20timestamp\x20set\x20most\x20recent\x20time\x20is\x20used.\x20'+tsHint)[C(0xfc)](parseDateInput)[C(0x165)](['startTime',C(0x167)]))[C(0xf5)](C(0x14f),'Don\x27t\x20use\x20context\x20default\x20values,\x20explicitly\x20use\x20options\x20or\x20ask.',![])[C(0xfa)](new Option(C(0x12e),'Output\x20formatting.\x20Will\x20use\x20advanced\x20formatting\x20by\x20default.')[C(0x13c)](Object[C(0x168)]([C(0x12f),C(0x13b),C(0x11a)])));if(V)b['option'](C(0x128),'Build\x20to\x20get\x20logs\x20from');if(e===C(0x152))b[C(0xf5)](C(0x104),C(0x150));if(e===C(0x16b))b['option'](C(0x172),C(0x16c));return this[C(0x130)][C(0x11e)][C(0x159)]()===C(0x12b)&&b['option']('--team\x20--teamId\x20[TEAMID]',C(0x12c)),b;};constructor(e,V){const u=a13p;this[u(0x135)]=e,this['apiClient']=new ApiClient(e,{'throwErrorOnHttpErrorCode':!![],'customUserAgent':customUserAgent,'agent':V}),this[u(0x117)]=this[u(0x130)],this['inquirerHelper']=new InquirerHelper(this[u(0x130)]);}[a13p(0x14d)](e,V=![]){const i=a13p,b=async(E,W,M)=>{const L=a13V,Q=M[L(0x10a)],{apiContext:k,inquirerHelper:r}=this;switch(e){case L(0x16b):{const U=Q?undefined:k[L(0x10e)]();return M[L(0x157)]||U||await r[L(0x106)](E,W)();}case L(0x152):{const S=Q?undefined:k[L(0x10e)]();return M['jobId']||S||await r[L(0x134)](E,W)();}case L(0x15e):{const z=Q?undefined:k[L(0x10e)]();return M[L(0x138)]||z||await r[L(0x169)](E,W)();}}},G=async(E,W,M,Q)=>{const q=a13V;if(V)return Q['buildId']||await this[q(0x155)]['askForBuild'](E,e===q(0x16b)?M:undefined,e===q(0x152)?M:undefined,!![],W)();return undefined;},a=async(E,W,M,Q)=>{const s=a13V;if(!V&&Q[s(0x111)]!==undefined){if(Q[s(0x111)]!==!![])return Q[s(0x111)];return await this[s(0x155)][s(0x15a)](E,e===s(0x16b)?M:undefined,e===s(0x152)?M:undefined,!![],W)();}return undefined;},m=async(E,W,M,Q)=>{const F=a13V;if(e===F(0x152))return Q[F(0x132)]||await this['inquirerHelper'][F(0x107)](M,E,!![],W)();return undefined;},O=async(E,W,M,Q)=>{const H=a13V;if(e==='service'){if(Q[H(0x133)]!==!![])return Q['deploymentId'];return Q[H(0x133)];}return undefined;};return this[i(0x161)](e,V)[i(0x13f)](async E=>{const P=i,{noDefaults:W,projectId:M,teamId:Q,duration:k,timestamp:r,output:U,startTime:S,endTime:z,metricTypes:x,quiet:o}=E;assertContextExisting(this['apiClient']);if(S&&z&&k)throw new Error(P(0xf9));const {apiContext:K,inquirerHelper:N,metricsApiClient:J}=this,f=W?undefined:K[P(0x127)](),{projectId:D,teamId:Y}=await this['askForProjectContext'](K,N,M,Q,f),j=await b(D,Y,E),d=await G(D,Y,j,E),B=await m(D,Y,j,E),I=await O(D,Y,j,E),R=await a(D,Y,j,E),c={'teamId':Y,'projectId':D,'entityId':j},y={'containerName':R,'startTime':S,'endTime':z,'duration':k,'timestamp':r,'metricTypes':x,'runId':B,'buildId':d,'deploymentId':I,'isBuild':V??![]},X=!(S||z||k);if(!o&&U!=='yaml'&&U!==P(0x120)&&U!==P(0x13b))this['printInitInfo'](e,j,D,y,o);if(X){if(U!==undefined){const Z=await J['metrics']['metricsSingle'](c,y,e);this['handleError'](Z),printResponse(U,Z[P(0x105)]);}else[...Array(process[P(0x162)][P(0x166)]-0x1)][P(0x113)]((l,T)=>T===0x0?console[P(0x14a)](P(0x114)):console[P(0x14a)]()),await this[P(0x10f)](c,y,e)(),setInterval(this[P(0x10f)](c,y,e),this[P(0xf4)]),await new Promise(l=>setTimeout(l,this[P(0xf4)]*0x64));}else{const l=await J[P(0x149)][P(0x15b)](c,y,e);this[P(0x11f)](l),U!==undefined?printResponse(U,l['data']):this[P(0x136)](S,z??new Date())(l[P(0x105)]);}process[P(0xee)]();});}[a13p(0x143)](e){const A=a13p,V=(a,m)=>{const v=a13V;if(!m?.[v(0xfe)])v(0xed);const O=a[v(0xf1)]==='pct'?'%':a[v(0xf1)];return''+Number(m?.[v(0xfe)])['toFixed'](0x3)+O;},b=a=>{const t=a13V;if(!a?.['ts'])'N/A';return a['ts']['toTimeString']()[t(0x156)]('\x20')[0x0];},G={};Object['keys'](e)[A(0x113)](a=>{const h=A,{values:O,metricInfo:E}=e[a];return O[h(0x113)](W=>{const w=h,M=W['metadata'][w(0x111)];Object[w(0xf0)](G,{[M]:{...G?.[M],[w(0x124)]:b(W[w(0x105)]?.[0x0]),'containerId':M,[E[w(0x13e)]]:V(E,W[w(0x105)]?.[0x0])}});});}),printAsTable(Object[A(0x168)](G),A(0x15f));}['printMetricsGraph']=(e,V)=>{return b=>{const n=a13V,G=Object[n(0x144)](b)[n(0xef)](a=>{const e0=n,{values:m,metricInfo:O}=b[a],{metricUnit:E,metricResolution:W}=O;return m[e0(0x153)](M=>{const e1=e0,{metadata:Q,data:k}=M,r=V?V?.[e1(0x101)]()>new Date()[e1(0x101)]()?new Date():V:undefined,U=new Date(k?.[0x0]?.['ts']),S=new Date(k?.[k[e1(0x141)]-0x1]?.['ts']),z=this[e1(0x100)](e,U,W),x=this[e1(0xf3)](r,S,W),o=[...z,...k,...x],K=o[e1(0x153)](B=>[new Date(B['ts'])[e1(0xf7)](),Number(B['value'])])[e1(0x125)](B=>!Number[e1(0xfd)](B[0x0])),N=Math['min'](Math[e1(0x123)](process[e1(0x162)][e1(0x126)]-0xa,0xa),0x64),J=Math[e1(0x16a)](Math[e1(0x123)](process[e1(0x162)]['rows']-0x9,0xa),0xf),f=E===e1(0x154)?0x64:undefined,D=E===e1(0x154)?'%':E,Y=downSampleData(K,N),j=Y[e1(0x153)](B=>B[0x1]),d={'min':0x0,'height':J,'max':f,'unit':D,'startTs':e??U,'endTs':r??S};return{'dataSeries':j,'metadata':Q,'chartOpts':d,'metricInfo':O};});})[n(0x121)]();if(G[n(0x141)]===0x0)warning(n(0x137));else G[n(0x113)](a=>{const e2=n,{dataSeries:m,metadata:O,chartOpts:E,metricInfo:W}=a,{containerId:M,volumeId:Q}=O,k=Q?e2(0x164)+Q:'';console['log'](W[e2(0x13e)]+e2(0x148)+a13b[e2(0x129)](M)+k),console[e2(0x14a)](getAsciiChart(m,E));});};};[a13p(0x100)](e,V,b){const e3=a13p,G=O=>new Date(O[e3(0x101)]()-a),a=b*0x3e8;if(!e)return[];if(!V)return[];if(G(V)[e3(0x101)]()<e['getTime']())return[];const m=[{'ts':G(V),'value':0x0}];while(G(m[m[e3(0x141)]-0x1]['ts'])[e3(0x101)]()<=e[e3(0x101)]()){m[e3(0x122)]({'ts':G(m[m[e3(0x141)]-0x1]['ts']),'value':0x0});}return m;}[a13p(0xf3)](e,V,b){const e4=a13p,G=O=>new Date(O[e4(0x101)]()+a),a=b*0x3e8;if(!e)return[];if(!V)return[];if(G(V)[e4(0x101)]()>e['getTime']())return[];const m=[{'ts':G(V),'value':0x0}];while(G(m[m[e4(0x141)]-0x1]['ts'])['getTime']()<=e[e4(0x101)]()){m['push']({'ts':G(m[m[e4(0x141)]-0x1]['ts']),'value':0x0});}return m;}[a13p(0x10f)]=(e,V,b)=>async()=>{const e5=a13p;try{const G=await this['metricsApiClient']['metrics'][e5(0x146)](e,V,b);console[e5(0x15d)]();if(G[e5(0x11b)])error(e5(0x11c)+G[e5(0x11b)][e5(0xea)]);else this[e5(0x143)](G[e5(0x105)]);}catch(a){console[e5(0x15d)](),error(e5(0x11c)+a[e5(0xea)]);}};[a13p(0x11f)]=e=>{const e6=a13p;if(e[e6(0x11b)]){const V=JSON[e6(0xe9)](e[e6(0x11b)][e6(0x131)]);throw new Error('Error\x20while\x20fetching\x20metrics\x20entries:\x20'+e[e6(0x11b)][e6(0xea)]+'\x20'+V);}};[a13p(0xec)]=(e,V,b,G,a)=>{const e7=a13p;if(a===!![])return;const {metricTypes:m,endTime:O,startTime:E,duration:W,containerId:M}=G,Q=E?e7(0x145)+E[e7(0x116)]():'',k=O?e7(0x108)+O[e7(0x116)]():'',r=W?e7(0x13d)+W+'\x20seconds':'',U=M?'container\x20'+a13b[e7(0x129)](M):e7(0x10b),S=e+'\x20'+a13b[e7(0x129)](V)+e7(0x110)+a13b[e7(0x129)](b),z=''+Q+k+r,x=m?e7(0x12a)+m?.['join'](','):'';console[e7(0x14a)]('Metrics\x20for\x20'+U+e7(0x171)+S+x+z);};[a13p(0x10d)]=async(e,V,b,G,a)=>{const e8=a13p,m=e['getTokenScope']()===e8(0x12b)?G??await V[e8(0xf2)]():undefined,O=b||a||await V['askForProject'](m)();return{'teamId':m,'projectId':O};};}
|
|
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 a15j=a15V;(function(e,V){const Y=a15V,b=e();while(!![]){try{const G=parseInt(Y(0x176))/0x1*(-parseInt(Y(0x185))/0x2)+-parseInt(Y(0x182))/0x3+parseInt(Y(0x17b))/0x4*(parseInt(Y(0x1c1))/0x5)+parseInt(Y(0x183))/0x6+parseInt(Y(0x187))/0x7+-parseInt(Y(0x168))/0x8+parseInt(Y(0x159))/0x9;if(G===V)break;else b['push'](b['shift']());}catch(a){b['push'](b['shift']());}}}(a15e,0x925b5));import{ApiClient}from'@northflank/js-client';function a15e(){const i=['printHostsFileHint','Services:','No\x20services\x20and\x20addons\x20to\x20forward\x20found\x20in\x20project\x20','join','option','Cleaning\x20up\x20open\x20connections\x20failed:\x20','green','16691112vPhTqU','Team\x20for\x20forwarding','Forwarding\x20','getProxyForwarder','entries','\x20is\x20running\x20and\x20reachable\x20and\x20that\x20a\x20port\x20is\x20defined\x20on\x20the\x20networking\x20section.','data.id','portFwdCmd','bold','Forwarding\x20addon\x20','service','askForProjectContext','action',',\x20hostname:\x20','skipHostnamesText','8564096SPAWXc','--service\x20--serviceId\x20[NAME]','hosts','name','\x20with\x20these\x20hostnames:','askForProject','port','\x20with\x20multiple\x20ports:','contextProvider','askForAddon','alias','SIGINT','\x20service\x20ports','\x20\x20-\x20port\x20','101685OLXfvE','askForTeam','error','askForService','--team\x20--teamId\x20[TEAMID]','4hYNnCt','tunnel-close','hostnames','message','Port-forwarding\x20for\x20all\x20services\x20and\x20addons\x20in\x20the\x20given\x20project','Running\x20on\x20macOS\x20in\x20','noDefaultsText','2060058gsiTao','4964376wIFoSa','Running\x20in\x20','14EBSUNR','--skipHostnames','1476111BEOsem','--project\x20--projectId\x20[NAME]','flat','getTokenScope','\x20addon\x20ports','log','ports','forwardProject','reset','/etc/hosts','Failed:\x20','greenBright','data','platform','type','forwardAddon','skipHostnames','with\x20hostname:\x20','http://','addCommand','darwin','>\x20Instance\x20\x27','Error\x20occured\x20while\x20trying\x20to\x20forward\x20','\x27\x20of\x20','Don\x27t\x20use\x20context\x20default\x20values,\x20explicitly\x20use\x20options\x20or\x20ask.','Instance\x20to\x20forward','forwardService','\x20and\x20','Only\x20expose\x20on\x20IP\x20address,\x20not\x20on\x20hostnames.\x20With\x20this\x20option,\x20no\x20root\x20permissions\x20are\x20required.','length','Service\x20to\x20forward','win32','canExecuteWithHostnames','Port-forwarding\x20for\x20Northflank\x20services\x20and\x20addons.','Project\x20for\x20forwarding','HTTP','flatMap','addon','printForwardingInfo','C:/Windows/System32/drivers/etc/hosts','description','forEach','apiClient','forwarding','getCurrentProjectName','Forwarding\x20service\x20','Connection\x20error\x20occurred\x20when\x20forwarding\x20\x27','protocol','org','address','\x20to\x20','filter','\x20\x20\x20No\x20running\x20container\x20found\x20for\x20','Stop\x20forwarding\x20traffic\x20from\x20','\x20is\x20exposed\x20on\x20','\x20\x20\x20\x20\x20\x20\x20\x20\x20','getBaseCommand','Addon\x20to\x20forward','878165YfssBN','\x20\x20-\x20Address:\x20','--instance\x20--instanceId\x20[NAME]'];a15e=function(){return i;};return a15e();}function a15V(e,V){const b=a15e();return a15V=function(G,a){G=G-0x158;let m=b[G];return m;},a15V(e,V);}import a15b from'chalk';import{assertContextExisting,customUserAgent,error,getCommand,success,warning}from'../utils.js';import{InquirerHelper}from'../inquirer-helper.js';import*as a15G from'os';import{uniqBy,uniq,repeat,groupBy,capitalize}from'lodash-es';import{EOL}from'os';export class CliPortForward{[a15j(0x160)];[a15j(0x1b1)];[a15j(0x181)]=a15j(0x19f);[a15j(0x167)]=a15j(0x1a3);constructor(e,V){const d=a15j;this[d(0x1b1)]=new ApiClient(e,{'throwErrorOnHttpErrorCode':!![],'customUserAgent':customUserAgent,'agent':V});const b=new InquirerHelper(this[d(0x1b1)]);this['portFwdCmd']=getCommand()[d(0x16b)]('forward')[d(0x172)]('fwd')[d(0x1af)](d(0x1a8));const G=this[d(0x1bf)]()[d(0x16b)]('all')['description'](d(0x17f))[d(0x1c8)]('--noDefaults',this[d(0x181)],![])['option'](d(0x186),this[d(0x167)],![])['action'](async({noDefaults:O,teamId:E,projectId:W,skipHostnames:M})=>{const B=d;assertContextExisting(this[B(0x1b1)]);const Q=this[B(0x15c)](M),k=O?undefined:e[B(0x1b3)](),{projectId:r,teamId:U}=await this['askForProjectContext'](e,b,E,W,k);try{const {services:S,addons:z}=await Q[B(0x18e)]({'teamId':U,'projectId':r},M);if(S[B(0x1a4)]+z[B(0x1a4)]<=0x0)warning(B(0x1c6)+a15b[B(0x161)](r));else{const x=S[B(0x1ba)](N=>N[B(0x1a4)]>0x0)[B(0x1a4)],o=z[B(0x1ba)](N=>N[B(0x1a4)]>0x0)[B(0x1a4)],K='\x20in\x20project\x20'+a15b['bold'](r);console['log'](B(0x15b)+a15b[B(0x158)][B(0x161)](x+B(0x174))+B(0x1a2)+a15b[B(0x158)][B(0x161)](o+B(0x18b))+K),console['log'](),console['log'](a15b[B(0x161)](B(0x1c5))),S['forEach'](N=>{const I=B;if(N[I(0x1a4)]>=0x1&&!N[0x0][I(0x178)])this['printForwardingInfo'](N,{'type':'service','name':N[0x0][I(0x193)]['id']},M);}),console[B(0x18c)](a15b[B(0x161)]('Addons:')),z[B(0x1b0)](N=>{const R=B;if(N['length']>=0x1&&!N[0x0][R(0x178)])this['printForwardingInfo'](N,{'type':R(0x1ac),'name':N[0x0]['data']['id']},M);}),this['printHostsFileHint']([...S[B(0x189)](),...z['flat']()],M);}}catch(N){error(B(0x191)+N[B(0x17e)]);}}),a=this['getBaseCommand']()[d(0x16b)]('service')['description']('Port-forwarding\x20for\x20the\x20specified\x20service')[d(0x1c8)](d(0x169),d(0x1a5))[d(0x1c8)](d(0x1c3),d(0x1a0))[d(0x1c8)]('--noDefaults',this[d(0x181)],![])['option']('--skipHostnames',this[d(0x167)],![])[d(0x165)](async({noDefaults:O,teamId:E,projectId:W,serviceId:M,instanceId:Q,skipHostnames:k})=>{const c=d;assertContextExisting(this[c(0x1b1)]);const r=this[c(0x15c)](k),U=O?undefined:e[c(0x1b3)](),{projectId:S,teamId:z}=await this[c(0x164)](e,b,W,E,U),x=O?undefined:e['getCurrentServiceName'](),o=M||x||await b[c(0x179)](S,z)();console[c(0x18c)](c(0x1b4)+a15b[c(0x161)](o)+'\x20in\x20project\x20'+a15b[c(0x161)](S));try{const K=await r[c(0x1a1)]({'teamId':z,'projectId':S,'serviceId':o,'instanceId':Q},k);this['printForwardingInfo'](K,{'name':o,'type':c(0x163),'instanceId':Q},k),this['printHostsFileHint'](K,k);}catch(N){error(c(0x191)+N[c(0x17e)]);}}),m=this[d(0x1bf)]()[d(0x16b)](d(0x1ac))[d(0x1af)]('Port-forwarding\x20for\x20the\x20specified\x20addon')[d(0x1c8)]('--addon\x20--addonId\x20[NAME]',d(0x1c0))[d(0x1c8)](d(0x186),this[d(0x167)],![])[d(0x165)](async({noDefaults:O,teamId:E,projectId:W,addonId:M,skipHostnames:Q})=>{const y=d;assertContextExisting(this['apiClient']);const k=this[y(0x15c)](Q),r=O?undefined:e[y(0x1b3)](),{projectId:U,teamId:S}=await this['askForProjectContext'](e,b,W,E,r),z=M||await b[y(0x171)](U,S)();console[y(0x18c)](y(0x162)+a15b[y(0x161)](z)+'\x20in\x20project\x20'+a15b[y(0x161)](U));try{const x={'teamId':S,'projectId':U,'addonId':z},o=await k[y(0x196)](x,Q);this[y(0x1ad)](o,{'name':z,'type':y(0x1ac)},Q),this[y(0x1c4)](o,Q);}catch(K){error('Failed:\x20'+K['message']);}});this[d(0x160)][d(0x19a)](G),this['portFwdCmd'][d(0x19a)](a),this['portFwdCmd'][d(0x19a)](m);}['getBaseCommand']=()=>{const X=a15j,e=getCommand(!![])[X(0x1c8)](X(0x188),X(0x1a9));return this[X(0x1b1)][X(0x170)][X(0x18a)]()===X(0x1b7)&&e[X(0x1c8)](X(0x17a),X(0x15a)),e;};['getProxyForwarder'](e=![]){const Z=a15j,V=this[Z(0x1b1)][Z(0x1b2)];if(!e){const b=V[Z(0x1a7)]();if(b[Z(0x178)])throw new Error(b[Z(0x17e)]);}return V['on'](Z(0x17c),(G,a)=>{const l=Z,m=a15b[l(0x161)](a[l(0x195)]+'\x20\x27'+a['id']+'\x27'),O=a['hostnames']['length']>0x0;warning(l(0x1bc)+a[l(0x1b8)]+':'+a[l(0x16e)]+l(0x1b9)+m),e&&O&&warning('\x20\x20If\x20you\x20have\x20added\x20entries\x20to\x20your\x20hosts\x20file,\x20it\x20is\x20recommended\x20to\x20remove\x20them\x20again\x20now.');}),V['on']('connection-error',(G,a,m)=>{const T=Z;warning(T(0x1b5)+a[T(0x1b8)]+':'+a[T(0x16e)]+'\x27:\x20\x22'+m?.[T(0x17e)]+'\x22');}),process['on'](Z(0x173),async()=>{const g=Z;try{await V['stop']();}catch(G){error(g(0x1c9)+G[g(0x17e)]);}finally{process['exit']();}}),V;}[a15j(0x1ad)](e,V,b=![]){const p=a15j,{type:G,name:a,instanceId:m}=V;if(e[p(0x1a4)]<=0x0){const M='Please\x20ensure\x20the\x20'+V[p(0x195)]+p(0x15e);warning(p(0x1bb)+G+'\x20'+a15b[p(0x161)](a)+'.\x20'+M);return;}const O=groupBy(e,p(0x15f)),E=Q=>'\x20('+(Q['portName']?Q['portName']+'\x20-\x20':'')+Q['protocol']+')';function W(Q,k=0x2){const C=p;if(!b){const r=Q[C(0x1b6)]===C(0x1aa)?C(0x199):'';Q['hostnames'][C(0x1b0)](U=>{const u=C;console['log'](repeat('\x20',k)+'-\x20'+r+U+':'+Q[u(0x16e)]);});}}Object[p(0x15d)](O)[p(0x1b0)](([Q,k])=>{const L=p,r=m?L(0x19c)+a15b[L(0x192)]['bold'](m)+L(0x19e)+G+'\x20\x27'+a15b[L(0x192)]['bold'](Q)+'\x27':'>\x20'+capitalize(G)+'\x20\x27'+a15b[L(0x192)][L(0x161)](Q)+'\x27';if(G===L(0x1ac)){if(k[L(0x1a4)]===0x1){const U=k[0x0];if(U[L(0x178)]){error(L(0x19d)+Q+':\x20'+U[L(0x178)][L(0x17e)]);return;}const S=U['data'],z=!b?'\x20'+a15b[L(0x18f)](L(0x198)+S[L(0x17d)][L(0x1c7)](',')):'';success(r+L(0x1bd)+S['address']+':'+S['port']+E(S)+z);}else{const x=uniqBy(k,o=>o?.['data']?.[L(0x17d)]?.['join'](','))[L(0x1a4)]>0x1;success(r+'\x20is\x20exposed\x20with\x20multiple\x20'+(x?L(0x16a):L(0x18d))+':'),k['forEach'](o=>{const q=L;if(o[q(0x178)]){error('Error\x20occured\x20while\x20trying\x20to\x20forward\x20'+Q+':\x20'+o[q(0x178)][q(0x17e)]);return;}const K=o['data'],N=!b?q(0x166)+K['hostnames']['join'](','):'';console[q(0x18c)](q(0x1c2)+K['address']+':'+K[q(0x16e)]+E(K)+N);});}}if(G===L(0x163)){if(k['length']===0x1){const o=k[0x0];if(o[L(0x178)]){error('Error\x20occured\x20while\x20trying\x20to\x20forward\x20'+Q+':\x20'+o[L(0x178)][L(0x17e)]);return;}const K=o[L(0x193)],N=!b?L(0x16c):':',J=K['address']+':'+K[L(0x16e)]+E(K);success(r+L(0x1bd)+J+N),W(K);}else success(r+L(0x1bd)+k[0x0]?.[L(0x193)]?.[L(0x1b8)]+L(0x16f)),k[L(0x1b0)](f=>{const s=L;if(f[s(0x178)]){error('Error\x20occured\x20while\x20trying\x20to\x20forward\x20'+Q+':\x20'+f[s(0x178)][s(0x17e)]);return;}const D=f[s(0x193)];success(s(0x175)+D[s(0x16e)]+E(D)),W(D,0x4);});}});}[a15j(0x1c4)](e,V=![]){const F=a15j;if(V){const b=e[F(0x1ab)](Q=>Q[F(0x193)])['filter'](Q=>Q!==undefined),G=process?.[F(0x194)]===F(0x1a6),a=a15G['platform']()===F(0x19b),m=G?F(0x1ae):F(0x190),O=a15b[F(0x161)](F(0x197)),E=a?EOL+F(0x180)+O+'\x20mode:\x20the\x20locally\x20forwarded\x20port\x20differs\x20from\x20the\x20actual\x20port\x20on\x20the\x20forwarded\x20service/addon.':undefined;let W=F(0x184)+O+'\x20mode.\x20If\x20hostname\x20forwarding\x20is\x20required,\x20remove\x20'+F(0x186)+'\x20flag\x20or\x20manually\x20append\x20following\x20entry\x20to\x20your\x20hosts\x20file\x20('+m+'):';E!==undefined&&warning(E??'');warning(W);const M=b['map'](Q=>Q[F(0x1b8)]+F(0x1be)+Q[F(0x17d)][F(0x1c7)]('\x20'));console[F(0x18c)](uniq(M)[F(0x1c7)](EOL)),console['log']();}}['askForProjectContext']=async(e,V,b,G,a)=>{const H=a15j,m=e[H(0x18a)]()==='org'?G??await V[H(0x177)]():undefined,O=b||a||await V[H(0x16d)](m)();return{'teamId':m,'projectId':O};};}
|
|
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 a17Q=
|
|
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)';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@northflank/cli",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.3",
|
|
4
4
|
"author": "Marco Suter",
|
|
5
5
|
"description": "Provides a command-line interface to the Northflank platform.",
|
|
6
6
|
"homepage": "https://www.northflank.com",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"LICENSE"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@northflank/js-client": "0.9.
|
|
30
|
+
"@northflank/js-client": "0.9.3",
|
|
31
31
|
"bufferutil": "^4.0.9",
|
|
32
32
|
"chalk": "~5.6.2",
|
|
33
33
|
"columnify": "^1.6.0",
|