@northflank/cli
Version:
Provides a command-line interface to the Northflank platform.
1 lines • 12.9 kB
JavaScript
;const a13B=a13a;(function(S,a){const h=a13a,j=S();while(!![]){try{const v=-parseInt(h(0x102))/0x1+-parseInt(h(0xc5))/0x2*(parseInt(h(0x113))/0x3)+parseInt(h(0x130))/0x4*(parseInt(h(0x135))/0x5)+parseInt(h(0xc3))/0x6+parseInt(h(0x119))/0x7*(-parseInt(h(0x149))/0x8)+-parseInt(h(0x123))/0x9+-parseInt(h(0xe6))/0xa*(-parseInt(h(0xf5))/0xb);if(v===a)break;else j['push'](j['shift']());}catch(z){j['push'](j['shift']());}}}(a13S,0x4f8b9));var __awaiter=this&&this[a13B(0xd7)]||function(S,a,j,v){function z(s){return s instanceof j?s:new j(function(u){u(s);});}return new(j||(j=Promise))(function(s,u){const y=a13a;function g(o){const F=a13a;try{i(v[F(0x142)](o));}catch(X){u(X);}}function w(o){const P=a13a;try{i(v[P(0x112)](o));}catch(X){u(X);}}function i(o){const m=a13a;o[m(0x110)]?s(o['value']):z(o[m(0xda)])[m(0xdc)](g,w);}i((v=v[y(0x129)](S,a||[]))[y(0x142)]());});},__importDefault=this&&this['__importDefault']||function(S){return S&&S['__esModule']?S:{'default':S};};Object[a13B(0xf6)](exports,a13B(0x116),{'value':!![]}),exports[a13B(0xd6)]=void 0x0;function a13S(){const S9=['argParser','commander','assign','-o,\x20--output\x20[output]','message','../formatting/console-format-helpers','handleError','all\x20containers','addonId','yaml','deploymentId','11VVdoeO','defineProperty','--build\x20--buildId\x20[buildId]','metricsSingle','pct','getStandardMetricsCommand','flatMap','runId','../formatting/terminal-chart','Option','choices','max','rows','641159vpNjxB','--noDefaults','Get\x20metrics\x20for\x20the\x20specified\x20','serviceId','push','valueOf','Fetching\x20data..','askForJobRun','columns','No\x20metrics\x20found\x20for\x20this\x20query','json','inquirerHelper','Output\x20formatting.\x20Will\x20use\x20advanced\x20formatting\x20by\x20default.',',\x20from:\x20','done','build-','throw','3oxBNEb','flat','option','__esModule','askForAddon','data','7AXMppQ','noDefaults','getTime','Error\x20while\x20fetching\x20metrics\x20entries:\x20','min','jobId','addon','service','\x20seconds','metricsApiClient','1990809UyaeDD','--duration\x20[duration]','yml','printResponse','getCommand','Get\x20metrics\x20at\x20this\x20exact\x20timestamp,\x20if\x20no\x20timestamp\x20set\x20most\x20recent\x20time\x20is\x20used.\x20','apply','default','askForService','--run\x20--runId\x20[runId]','metric','Job\x20run\x20id,\x20example:\x20162b1977-6636-4000-929b-cc265b862ff0','Length\x20of\x20timespan\x20in\x20seconds.\x20Only\x20valid\x20if\x20not\x20both,\x20startTime\x20and\x20endTime\x20are\x20set','4sNimPx','log','printMetricsSingle','--timestamp\x20[timestamp]','printInitInfo','2045905jKwrfO','toISOString','\x20to\x20get\x20logs\x20from','Deployment\x20id,\x20example:\x20my-service-54785f4',',\x20to:\x20','--endTime\x20<timestamp>','ApiClient','split','error','join','job','exit','conflicts','next','N/A','getPaddingDataStart','\x20in\x20project\x20','addOption','stringify','Metrics\x20for\x20','4513424MYOkPF','metricId','keys','askForProject','--project\x20--projectId\x20[NAME]','tsHint','metricsRange','Build\x20to\x20get\x20logs\x20from','downSampleData','details','unshift','buildId','@northflank/js-client','96624SuKwTK','name','85426gcxNHA','Don\x27t\x20use\x20context\x20default\x20values,\x20explicitly\x20use\x20options\x20or\x20ask.','printMetricsGraph','clear','getCurrentProjectName','bold','parseDateInput','toTimeString','stdout','length','askForContainer','metricUnit','printMetricsTable','Metrics\x20overview','getCurrentServiceName','apiClient','../utils','CliMetrics','__awaiter','refreshInterval','getAsciiChart','value','apiContext','then','startTime','values','map','askForJob','MetricType','getPaddingDataEnd','assertContextExisting','metrics','containerId','13697830qZujiU','Only\x20two\x20of\x20\x27startTime\x27,\x20\x27endTime\x27\x20and\x20\x27duration\x27\x20can\x20be\x20set.','askForBuild','isNaN'];a13S=function(){return S9;};return a13S();}const js_client_1=require(a13B(0xc2)),utils_1=require(a13B(0xd5)),inquirer_helper_1=require('../inquirer-helper'),commander_1=require(a13B(0xeb)),terminal_chart_1=require(a13B(0xfd)),console_format_helpers_1=require(a13B(0xef)),chalk_1=__importDefault(require('chalk'));class CliMetrics{constructor(S,a){const U=a13B;this[U(0xdb)]=S,this[U(0xd8)]=0x2710,this[U(0xfa)]=(j,v)=>{const J=U,z=(0x0,utils_1[J(0x127)])(!![])[J(0xc4)]((v?J(0x111):'')+J(0xe4))['alias']((v?J(0x111):'')+J(0x12d))['description'](J(0x104)+j)[J(0x115)](J(0x14d),'Project\x20for\x20logs')[J(0x115)]('--'+j+'\x20--'+j+'Id\x20[NAME]',j['charAt'](0x0)['toUpperCase']()+j['slice'](0x1)+J(0x137))[J(0x115)]('--container\x20--containerId\x20[NAME]','Container\x20to\x20exec\x20into\x20(logs\x20from\x20all\x20containers\x20will\x20be\x20shown\x20if\x20not\x20specified)')[J(0x115)]('--startTime\x20<timestamp>','Get\x20metrics\x20after\x20this\x20timestamp,\x20'+utils_1[J(0x14e)],utils_1[J(0xcb)])[J(0x115)](J(0x13a),'Get\x20metrics\x20before\x20this\x20timestamp,\x20'+utils_1[J(0x14e)],utils_1[J(0xcb)])[J(0x115)](J(0x124),J(0x12f))[J(0x146)](new commander_1[(J(0xfe))](J(0xed),J(0x10e))['choices'](Object['values'](['format',J(0x10c),J(0xf3)])))['addOption'](new commander_1['Option']('-t,\x20--metricTypes\x20<metricTypes...>','Which\x20metric\x20type\x20to\x20fetch')[J(0xff)](Object[J(0xde)](js_client_1[J(0xe1)])))[J(0x146)](new commander_1['Option'](J(0x133),J(0x128)+utils_1[J(0x14e)])[J(0xea)](utils_1['parseDateInput'])[J(0x141)]([J(0xdd),'endTime']))[J(0x115)](J(0x103),J(0xc6),![])[J(0x146)](new commander_1[(J(0xfe))](J(0xed),J(0x10e))[J(0xff)](Object['values'](['format',J(0x10c),J(0xf3)])));if(v)z[J(0x115)](J(0xf7),J(0x150));if(j===J(0x13f))z[J(0x115)](J(0x12c),J(0x12e));if(j==='service')z[J(0x115)]('--deployment\x20--deploymentId\x20[deploymentId]',J(0x138));return z;},this[U(0xc7)]=(j,v)=>{return z=>{const W=a13a,s=Object[W(0x14b)](z)[W(0xfb)](u=>{const l=W,{values:g,metricInfo:w}=z[u],{metricUnit:i,metricResolution:o}=w;return g[l(0xdf)](X=>{const f=l;var T,H;const {metadata:E,data:Y}=X,V=v?(v===null||v===void 0x0?void 0x0:v[f(0x11b)]())>new Date()[f(0x11b)]()?new Date():v:undefined,K=new Date((T=Y===null||Y===void 0x0?void 0x0:Y[0x0])===null||T===void 0x0?void 0x0:T['ts']),L=new Date((H=Y===null||Y===void 0x0?void 0x0:Y[Y['length']-0x1])===null||H===void 0x0?void 0x0:H['ts']),A=this[f(0x144)](j,K,o),Q=this[f(0xe2)](V,L,o),R=[...A,...Y,...Q],M=R[f(0xdf)](q=>[new Date(q['ts'])[f(0x107)](),Number(q[f(0xda)])])['filter'](q=>!Number[f(0xe9)](q[0x0])),x=Math['min'](Math[f(0x100)](process[f(0xcd)][f(0x10a)]-0xa,0xa),0x64),c=Math[f(0x11d)](Math[f(0x100)](process[f(0xcd)][f(0x101)]-0x9,0xa),0xf),N=i===f(0xf9)?0x64:undefined,Z=i===f(0xf9)?'%':i,D=(0x0,terminal_chart_1[f(0x151)])(M,x),e=D['map'](q=>q[0x1]),C={'min':0x0,'height':c,'max':N,'unit':Z,'startTs':j!==null&&j!==void 0x0?j:K,'endTs':V!==null&&V!==void 0x0?V:L};return{'dataSeries':e,'metadata':E,'chartOpts':C,'metricInfo':w};});})[W(0x114)]();if(s[W(0xce)]===0x0)(0x0,utils_1['warning'])(W(0x10b));else s['forEach'](u=>{const I=W,{dataSeries:g,metadata:w,chartOpts:i,metricInfo:o}=u,{containerId:X,volumeId:T}=w,H=T?',\x20volume:\x20'+T:'';console['log'](o[I(0x14a)]+'\x20for\x20container:\x20'+chalk_1[I(0x12a)][I(0xca)](X)+H),console[I(0x131)]((0x0,terminal_chart_1[I(0xd9)])(g,i));});};},this['printMetricsTable']=(j,v,z)=>()=>__awaiter(this,void 0x0,void 0x0,function*(){const r=U;try{const s=yield this['metricsApiClient']['metrics'][r(0xf8)](j,v,z);console['clear']();if(s[r(0x13d)])(0x0,utils_1['error'])(r(0x11c)+s['error']['message']);else this[r(0x132)](s['data']);}catch(u){console[r(0xc8)](),(0x0,utils_1['error'])(r(0x11c)+u['message']);}}),this[U(0xf0)]=j=>{const n=U;if(j[n(0x13d)]){const v=JSON[n(0x147)](j['error'][n(0x152)]);throw new Error('Error\x20while\x20fetching\x20metrics\x20entries:\x20'+j['error'][n(0xee)]+'\x20'+v);}},this[U(0x134)]=(j,v,z,s,u)=>{const k=U;if(u===!![])return;const {metricTypes:g,endTime:w,startTime:i,duration:o,containerId:X}=s,T=i?k(0x10f)+i[k(0x136)]():'',H=w?k(0x139)+w[k(0x136)]():'',E=o?',\x20duration:\x20'+o+k(0x121):'',Y=X?'container\x20'+chalk_1[k(0x12a)][k(0xca)](X):k(0xf1),V=j+'\x20'+chalk_1['default'][k(0xca)](v)+k(0x145)+chalk_1['default'][k(0xca)](z),K=''+T+H+E,L=g?',\x20metric\x20types:\x20'+(g===null||g===void 0x0?void 0x0:g[k(0x13e)](',')):'';console['log'](k(0x148)+Y+'\x20of\x20'+V+L+K);},this[U(0xd4)]=new js_client_1[(U(0x13b))](S,{'throwErrorOnHttpErrorCode':!![],'customUserAgent':utils_1['customUserAgent'],'agent':a}),this[U(0x122)]=this[U(0xd4)],this['inquirerHelper']=new inquirer_helper_1['InquirerHelper'](this[U(0xd4)]);}['getMetricsCommand'](S,a=![]){const S1=a13B,j=(g,w)=>__awaiter(this,void 0x0,void 0x0,function*(){const p=a13a,i=w[p(0x11a)],{apiContext:o,inquirerHelper:X}=this;switch(S){case p(0x120):{const T=i?undefined:o[p(0xd3)]();return w[p(0x105)]||T||(yield X[p(0x12b)](g)());}case p(0x13f):{const H=i?undefined:o[p(0xd3)]();return w[p(0x11e)]||H||(yield X[p(0xe0)](g)());}case p(0x11f):{const E=i?undefined:o[p(0xd3)]();return w[p(0xf2)]||E||(yield X[p(0x117)](g)());}}}),v=(g,w,i)=>__awaiter(this,void 0x0,void 0x0,function*(){const G=a13a;if(a)return i[G(0xc1)]||(yield this['inquirerHelper'][G(0xe8)](g,S===G(0x120)?w:undefined,S===G(0x13f)?w:undefined,!![])());return undefined;}),z=(g,w,i)=>__awaiter(this,void 0x0,void 0x0,function*(){const d=a13a;if(!a&&i[d(0xe5)]!==undefined){if(i[d(0xe5)]!==!![])return i['containerId'];return yield this[d(0x10d)][d(0xcf)](g,S===d(0x120)?w:undefined,S===d(0x13f)?w:undefined,!![])();}return undefined;}),s=(g,w,i)=>__awaiter(this,void 0x0,void 0x0,function*(){const t=a13a;if(S===t(0x13f))return i[t(0xfc)]||(yield this[t(0x10d)][t(0x109)](w,g,!![])());return undefined;}),u=(g,w,i)=>__awaiter(this,void 0x0,void 0x0,function*(){const S0=a13a;if(S===S0(0x120)){if(i[S0(0xf4)]!==!![])return i[S0(0xf4)];return i['deploymentId'];}return undefined;});return this[S1(0xfa)](S,a)['action'](g=>__awaiter(this,void 0x0,void 0x0,function*(){const S2=S1,{noDefaults:w,projectId:i,duration:o,timestamp:X,output:T,startTime:H,endTime:E,metricTypes:Y,quiet:V}=g;(0x0,utils_1[S2(0xe3)])(this[S2(0xd4)]);if(H&&E&&o)throw new Error(S2(0xe7));const {apiContext:K,inquirerHelper:L,metricsApiClient:A}=this,Q=w?undefined:K[S2(0xc9)](),R=i||Q||(yield L[S2(0x14c)]()),M=yield j(R,g),x=yield v(R,M,g),c=yield s(R,M,g),N=yield u(R,M,g),Z=yield z(R,M,g),D={'projectId':R,'entityId':M},e={'containerName':Z,'startTime':H,'endTime':E,'duration':o,'timestamp':X,'metricTypes':Y,'runId':c,'buildId':x,'deploymentId':N,'isBuild':a!==null&&a!==void 0x0?a:![]},C=!(H||E||o);if(!V&&T!=='yaml'&&T!==S2(0x125)&&T!==S2(0x10c))this[S2(0x134)](S,M,R,e,V);if(C){if(T!==undefined){const q=yield A[S2(0xe4)][S2(0xf8)](D,e,S);this[S2(0xf0)](q),(0x0,console_format_helpers_1[S2(0x126)])(T,q['data']);}else[...Array(process[S2(0xcd)]['rows']-0x1)]['forEach']((b,O)=>O===0x0?console[S2(0x131)](S2(0x108)):console[S2(0x131)]()),yield this[S2(0xd1)](D,e,S)(),setInterval(this['printMetricsTable'](D,e,S),this[S2(0xd8)]),yield new Promise(b=>setTimeout(b,this[S2(0xd8)]*0x64));}else{const b=yield A['metrics'][S2(0x14f)](D,e,S);this[S2(0xf0)](b),T!==undefined?(0x0,console_format_helpers_1['printResponse'])(T,b[S2(0x118)]):this[S2(0xc7)](H,E!==null&&E!==void 0x0?E:new Date())(b[S2(0x118)]);}process[S2(0x140)]();}));}[a13B(0x132)](S){const S5=a13B,a=(z,s)=>{const S3=a13a;if(!(s===null||s===void 0x0?void 0x0:s[S3(0xda)]))S3(0x143);const u=z[S3(0xd0)]===S3(0xf9)?'%':z[S3(0xd0)];return''+Number(s===null||s===void 0x0?void 0x0:s[S3(0xda)])['toFixed'](0x3)+u;},j=z=>{const S4=a13a;if(!(z===null||z===void 0x0?void 0x0:z['ts']))S4(0x143);return z['ts'][S4(0xcc)]()[S4(0x13c)]('\x20')[0x0];},v={};Object[S5(0x14b)](S)['forEach'](z=>{const {values:s,metricInfo:u}=S[z];return s['forEach'](g=>{const S6=a13a;var w,i;const o=g['metadata'][S6(0xe5)];Object[S6(0xec)](v,{[o]:Object[S6(0xec)](Object['assign']({},v===null||v===void 0x0?void 0x0:v[o]),{['time']:j((w=g[S6(0x118)])===null||w===void 0x0?void 0x0:w[0x0]),'containerId':o,[u[S6(0x14a)]]:a(u,(i=g[S6(0x118)])===null||i===void 0x0?void 0x0:i[0x0])})});});}),(0x0,console_format_helpers_1['printAsTable'])(Object[S5(0xde)](v),S5(0xd2));}['getPaddingDataStart'](S,a,j){const S7=a13B,v=u=>new Date(u[S7(0x11b)]()-z),z=j*0x3e8;if(!S)return[];if(!a)return[];if(v(a)[S7(0x11b)]()<S[S7(0x11b)]())return[];const s=[{'ts':v(a),'value':0x0}];while(v(s[s[S7(0xce)]-0x1]['ts'])['getTime']()<=S[S7(0x11b)]()){s[S7(0x153)]({'ts':v(s[s[S7(0xce)]-0x1]['ts']),'value':0x0});}return s;}[a13B(0xe2)](S,a,j){const S8=a13B,v=u=>new Date(u[S8(0x11b)]()+z),z=j*0x3e8;if(!S)return[];if(!a)return[];if(v(a)[S8(0x11b)]()>S[S8(0x11b)]())return[];const s=[{'ts':v(a),'value':0x0}];while(v(s[s[S8(0xce)]-0x1]['ts'])[S8(0x11b)]()<=S[S8(0x11b)]()){s[S8(0x106)]({'ts':v(s[s[S8(0xce)]-0x1]['ts']),'value':0x0});}return s;}}function a13a(S,a){const j=a13S();return a13a=function(v,z){v=v-0xc1;let s=j[v];return s;},a13a(S,a);}exports[a13B(0xd6)]=CliMetrics;