@northflank/cli 0.11.2 → 0.11.4
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
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
function a14l(o,l){const E=a14o();return a14l=function(y,N){y=y-0x12f;let Z=E[y];return Z;},a14l(o,l);}const a14k=a14l;(function(o,l){const X=a14l,E=o();while(!![]){try{const y=-parseInt(X(0x13e))/0x1+-parseInt(X(0x14c))/0x2*(parseInt(X(0x147))/0x3)+-parseInt(X(0x12f))/0x4*(-parseInt(X(0x136))/0x5)+parseInt(X(0x146))/0x6*(parseInt(X(0x13b))/0x7)+-parseInt(X(0x14a))/0x8*(-parseInt(X(0x140))/0x9)+parseInt(X(0x149))/0xa*(-parseInt(X(0x13c))/0xb)+-parseInt(X(0x14b))/0xc;if(y===l)break;else E['push'](E['shift']());}catch(N){E['push'](E['shift']());}}}(a14o,0x477de));import a14E from'inquirer/lib/prompts/list.js';import a14y from'inquirer/lib/objects/choice.js';import a14N from'chalk';function incrementListIndex(o,l,E){const g=a14l,y=E[g(0x139)]['realLength'],N=g(0x142)in E?Boolean(E[g(0x142)]):!![];if(l==='up'){if(o>0x0)return o-0x1;return N?y-0x1:o;}if(l==='down'){if(o<y-0x1)return o+0x1;return N?0x0:o;}throw new Error(g(0x137));}function a14o(){const b=['..\x20Load\x20more\x20options\x20..','1540RLbXgs','1021624fkRasv','2132808OeBWbs','5524mSBTXy','length','44IdbHBh','selected','render','reloadText','nextPageCursor','loading','down','31740QGfMzJ','dir\x20must\x20be\x20up\x20or\x20down','opt','choices','handleDynamicPageLoad','7xVllmX','29150meUSwp','onUpKey','188691czDSaG','pagOpt','36AiYrbi','catch','loop','italic','push','loadMore','3235158yCUSAN','57zAvRSH'];a14o=function(){return b;};return a14o();}export class DynamicReloadPaginationPrompt extends a14E{[a14k(0x132)]=a14N[a14k(0x143)](a14k(0x148));[a14k(0x13f)];['loading']=![];['nextPageCursor'];constructor(o,l,E){const I=a14k;super(o,l,E),this[I(0x13f)]=this[I(0x138)],this['nextPageCursor']=this[I(0x13f)][I(0x133)],this[I(0x133)]!==undefined&&this[I(0x138)]['choices'][I(0x144)](new a14y(this[I(0x132)],this[I(0x132)]));}[a14k(0x13d)](){const J=a14k;if(this[J(0x134)])return;this[J(0x130)]=incrementListIndex(this['selected'],'up',this[J(0x138)]),this['render']();}async['onDownKey'](){const m=a14k;if(this['loading'])return;this['selected']=incrementListIndex(this[m(0x130)],m(0x135),this['opt']),await this[m(0x13a)](),this['render']();}async[a14k(0x13a)](){const L=a14k;if(this[L(0x130)]>=this[L(0x138)][L(0x139)][L(0x14d)]-0x1){if(this[L(0x133)]===undefined)return;this[L(0x134)]=!![];let o=0x0;const l=setInterval(()=>{const F=L,Z=['⠋','⠙','⠹','⠸','⠼','⠴','⠦','⠧','⠇','⠏'],A=a14N[F(0x143)](Z[o%Z[F(0x14d)]]+'\x20Loading\x20more\x20options');this[F(0x138)][F(0x139)]['choices'][this[F(0x130)]]['name']=''+A,o+=0x1,this[F(0x131)]();},0x50),{elements:E,nextPageCursor:y}=await this['pagOpt'][L(0x145)]({'nextPageCursor':this[L(0x133)]})[L(0x141)](()=>({'elements':[],'nextPageCursor':undefined}));this[L(0x133)]=y;const N=E['map'](Z=>new a14y(Z,Z));this[L(0x138)][L(0x139)][L(0x139)]['splice'](this['selected'],0x1),this[L(0x138)]['choices']['push'](...N),y!==undefined&&this['opt'][L(0x139)][L(0x144)](new a14y(this[L(0x132)],this[L(0x132)])),clearInterval(l),this[L(0x134)]=![];}}}
|
|
@@ -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=a15l;(function(o,l){const T=a15l,E=o();while(!![]){try{const y=parseInt(T(0xa7))/0x1+-parseInt(T(0xaf))/0x2*(-parseInt(T(0x107))/0x3)+-parseInt(T(0xda))/0x4*(parseInt(T(0xaa))/0x5)+parseInt(T(0xf8))/0x6*(parseInt(T(0xd5))/0x7)+-parseInt(T(0xe2))/0x8+-parseInt(T(0xeb))/0x9+-parseInt(T(0x103))/0xa*(-parseInt(T(0xe4))/0xb);if(y===l)break;else E['push'](E['shift']());}catch(N){E['push'](E['shift']());}}}(a15o,0x89bbe));import{ApiClient}from'@northflank/js-client';function a15l(o,l){const E=a15o();return a15l=function(y,N){y=y-0xa3;let Z=E[y];return Z;},a15l(o,l);}import a15E from'chalk';import{assertContextExisting,customUserAgent,error,getCommand,success,warning}from'../utils.js';import{InquirerHelper}from'../inquirer-helper.js';import*as a15y from'os';import{uniqBy,uniq,repeat,groupBy,capitalize}from'lodash-es';function a15o(){const H=['forwardAddon','forwarding','Project\x20for\x20forwarding','Don\x27t\x20use\x20context\x20default\x20values,\x20explicitly\x20use\x20options\x20or\x20ask.','Port-forwarding\x20for\x20all\x20services\x20and\x20addons\x20in\x20the\x20given\x20project','forwardProject','flat','10MoNrnM','skipHostnames','http://','askForService','186CNQHvg','entries','reset','action','type','stop','Connection\x20error\x20occurred\x20when\x20forwarding\x20\x27','C:/Windows/System32/drivers/etc/hosts','green','--skipHostnames','\x20to\x20','forEach','join','protocol','\x20flag\x20or\x20manually\x20append\x20following\x20entry\x20to\x20your\x20hosts\x20file\x20(','data','filter','\x20service\x20ports','contextProvider','ports','\x27\x20of\x20','485983HvAWAl','message','HTTP','155mZOpsh','Forwarding\x20addon\x20','data.id','Stop\x20forwarding\x20traffic\x20from\x20','portFwdCmd','8444lKJvLs','\x20\x20\x20\x20\x20\x20\x20\x20\x20','printForwardingInfo','hostnames','Team\x20for\x20forwarding','\x20with\x20these\x20hostnames:','addCommand','Running\x20on\x20macOS\x20in\x20','\x20\x20-\x20Address:\x20','platform','getBaseCommand','org','Running\x20in\x20','hosts','Port-forwarding\x20for\x20the\x20specified\x20addon','Service\x20to\x20forward','darwin','log','noDefaultsText','greenBright','Port-forwarding\x20for\x20the\x20specified\x20service','\x20and\x20','askForProject','--addon\x20--addonId\x20[NAME]','Error\x20occured\x20while\x20trying\x20to\x20forward\x20','Cleaning\x20up\x20open\x20connections\x20failed:\x20','Forwarding\x20','apiClient','\x20with\x20multiple\x20ports:','getTokenScope','\x20-\x20','--noDefaults','error','forwardService','\x27:\x20\x22','Addon\x20to\x20forward','Services:','--project\x20--projectId\x20[NAME]','441EPCMED','\x20in\x20project\x20','askForProjectContext','getProxyForwarder','bold','135448BvLqNW','description','\x20mode:\x20the\x20locally\x20forwarded\x20port\x20differs\x20from\x20the\x20actual\x20port\x20on\x20the\x20forwarded\x20service/addon.','address','SIGINT','--service\x20--serviceId\x20[NAME]','printHostsFileHint','name','2478208RTQYJI','--team\x20--teamId\x20[TEAMID]','21425118RtnFeP','Forwarding\x20service\x20','service',',\x20hostname:\x20','\x20is\x20running\x20and\x20reachable\x20and\x20that\x20a\x20port\x20is\x20defined\x20on\x20the\x20networking\x20section.','win32','Addons:','8927559flRAou','--instance\x20--instanceId\x20[NAME]','port','\x20\x20If\x20you\x20have\x20added\x20entries\x20to\x20your\x20hosts\x20file,\x20it\x20is\x20recommended\x20to\x20remove\x20them\x20again\x20now.','tunnel-close','\x20addon\x20ports','alias','option','getCurrentProjectName','Port-forwarding\x20for\x20Northflank\x20services\x20and\x20addons.','\x20is\x20exposed\x20on\x20','skipHostnamesText','\x20\x20-\x20port\x20','20964qMPfAz','Failed:\x20','length','addon'];a15o=function(){return H;};return a15o();}import{EOL}from'os';export class CliPortForward{['portFwdCmd'];['apiClient'];[a15M(0xc1)]=a15M(0xff);[a15M(0xf6)]='Only\x20expose\x20on\x20IP\x20address,\x20not\x20on\x20hostnames.\x20With\x20this\x20option,\x20no\x20root\x20permissions\x20are\x20required.';constructor(o,l){const B=a15M;this[B(0xca)]=new ApiClient(o,{'throwErrorOnHttpErrorCode':!![],'customUserAgent':customUserAgent,'agent':l});const E=new InquirerHelper(this[B(0xca)]);this[B(0xae)]=getCommand()[B(0xe1)]('forward')[B(0xf1)]('fwd')[B(0xdb)](B(0xf4));const y=this['getBaseCommand']()['name']('all')[B(0xdb)](B(0x100))[B(0xf2)](B(0xce),this['noDefaultsText'],![])[B(0xf2)](B(0x110),this[B(0xf6)],![])[B(0x10a)](async({noDefaults:A,teamId:X,projectId:g,skipHostnames:k})=>{const G=B;assertContextExisting(this[G(0xca)]);const I=this[G(0xd8)](k),J=A?undefined:o[G(0xf3)](),{projectId:m,teamId:L}=await this[G(0xd7)](o,E,X,g,J);try{const {services:F,addons:b}=await I[G(0x101)]({'teamId':L,'projectId':m},k);if(F['length']+b[G(0xfa)]<=0x0)warning('No\x20services\x20and\x20addons\x20to\x20forward\x20found\x20in\x20project\x20'+a15E[G(0xd9)](m));else{const q=F[G(0x117)](w=>w['length']>0x0)[G(0xfa)],V=b[G(0x117)](w=>w[G(0xfa)]>0x0)['length'],v=G(0xd6)+a15E[G(0xd9)](m);console[G(0xc0)](G(0xc9)+a15E['green'][G(0xd9)](q+G(0xa3))+G(0xc4)+a15E[G(0x10f)]['bold'](V+G(0xf0))+v),console[G(0xc0)](),console[G(0xc0)](a15E['bold'](G(0xd3))),F[G(0x112)](w=>{const K=G;if(w[K(0xfa)]>=0x1&&!w[0x0][K(0xcf)])this['printForwardingInfo'](w,{'type':K(0xe6),'name':w[0x0]['data']['id']},k);}),console['log'](a15E[G(0xd9)](G(0xea))),b[G(0x112)](w=>{const s=G;if(w[s(0xfa)]>=0x1&&!w[0x0][s(0xcf)])this[s(0xb1)](w,{'type':s(0xfb),'name':w[0x0][s(0x116)]['id']},k);}),this['printHostsFileHint']([...F[G(0x102)](),...b['flat']()],k);}}catch(w){error('Failed:\x20'+w[G(0xa8)]);}}),N=this[B(0xb9)]()[B(0xe1)](B(0xe6))[B(0xdb)](B(0xc3))[B(0xf2)](B(0xdf),B(0xbe))['option'](B(0xec),'Instance\x20to\x20forward')['option'](B(0xce),this[B(0xc1)],![])['option']('--skipHostnames',this[B(0xf6)],![])[B(0x10a)](async({noDefaults:A,teamId:X,projectId:g,serviceId:k,instanceId:I,skipHostnames:J})=>{const x=B;assertContextExisting(this[x(0xca)]);const m=this['getProxyForwarder'](J),L=A?undefined:o[x(0xf3)](),{projectId:F,teamId:b}=await this[x(0xd7)](o,E,g,X,L),q=A?undefined:o['getCurrentServiceName'](),V=k||q||await E[x(0x106)](F,b)();console[x(0xc0)](x(0xe5)+a15E[x(0xd9)](V)+x(0xd6)+a15E[x(0xd9)](F));try{const v=await m[x(0xd0)]({'teamId':b,'projectId':F,'serviceId':V,'instanceId':I},J);this[x(0xb1)](v,{'name':V,'type':x(0xe6),'instanceId':I},J),this['printHostsFileHint'](v,J);}catch(w){error(x(0xf9)+w[x(0xa8)]);}}),Z=this['getBaseCommand']()[B(0xe1)](B(0xfb))['description'](B(0xbd))[B(0xf2)](B(0xc6),B(0xd2))[B(0xf2)](B(0x110),this['skipHostnamesText'],![])[B(0x10a)](async({noDefaults:A,teamId:X,projectId:g,addonId:k,skipHostnames:I})=>{const Y=B;assertContextExisting(this[Y(0xca)]);const J=this[Y(0xd8)](I),m=A?undefined:o[Y(0xf3)](),{projectId:L,teamId:F}=await this[Y(0xd7)](o,E,g,X,m),b=k||await E['askForAddon'](L,F)();console[Y(0xc0)](Y(0xab)+a15E['bold'](b)+Y(0xd6)+a15E[Y(0xd9)](L));try{const q={'teamId':F,'projectId':L,'addonId':b},V=await J[Y(0xfc)](q,I);this[Y(0xb1)](V,{'name':b,'type':Y(0xfb)},I),this[Y(0xe0)](V,I);}catch(v){error(Y(0xf9)+v['message']);}});this['portFwdCmd'][B(0xb5)](y),this[B(0xae)][B(0xb5)](N),this[B(0xae)]['addCommand'](Z);}[a15M(0xb9)]=()=>{const p=a15M,o=getCommand(!![])[p(0xf2)](p(0xd4),p(0xfe));return this['apiClient'][p(0xa4)][p(0xcc)]()===p(0xba)&&o['option'](p(0xe3),p(0xb3)),o;};[a15M(0xd8)](o=![]){const r=a15M,l=this[r(0xca)][r(0xfd)];if(!o){const E=l['canExecuteWithHostnames']();if(E[r(0xcf)])throw new Error(E[r(0xa8)]);}return l['on'](r(0xef),(y,N)=>{const e=r,Z=a15E['bold'](N[e(0x10b)]+'\x20\x27'+N['id']+'\x27'),A=N['hostnames'][e(0xfa)]>0x0;warning(e(0xad)+N['address']+':'+N[e(0xed)]+e(0x111)+Z),o&&A&&warning(e(0xee));}),l['on']('connection-error',(y,N,Z)=>{const O=r;warning(O(0x10d)+N[O(0xdd)]+':'+N[O(0xed)]+O(0xd1)+Z?.[O(0xa8)]+'\x22');}),process['on'](r(0xde),async()=>{const U=r;try{await l[U(0x10c)]();}catch(y){error(U(0xc8)+y[U(0xa8)]);}finally{process['exit']();}}),l;}['printForwardingInfo'](o,l,E=![]){const z=a15M,{type:y,name:N,instanceId:Z}=l;if(o['length']<=0x0){const k='Please\x20ensure\x20the\x20'+l[z(0x10b)]+z(0xe8);warning('\x20\x20\x20No\x20running\x20container\x20found\x20for\x20'+y+'\x20'+a15E[z(0xd9)](N)+'.\x20'+k);return;}const A=groupBy(o,z(0xac)),X=I=>'\x20('+(I['portName']?I['portName']+z(0xcd):'')+I[z(0x114)]+')';function g(I,J=0x2){const Q=z;if(!E){const m=I[Q(0x114)]===Q(0xa9)?Q(0x105):'';I[Q(0xb2)][Q(0x112)](L=>{const C=Q;console[C(0xc0)](repeat('\x20',J)+'-\x20'+m+L+':'+I[C(0xed)]);});}}Object[z(0x108)](A)['forEach'](([I,J])=>{const D=z,m=Z?'>\x20Instance\x20\x27'+a15E[D(0xc2)]['bold'](Z)+D(0xa6)+y+'\x20\x27'+a15E[D(0xc2)][D(0xd9)](I)+'\x27':'>\x20'+capitalize(y)+'\x20\x27'+a15E[D(0xc2)][D(0xd9)](I)+'\x27';if(y===D(0xfb)){if(J[D(0xfa)]===0x1){const L=J[0x0];if(L[D(0xcf)]){error(D(0xc7)+I+':\x20'+L['error'][D(0xa8)]);return;}const F=L[D(0x116)],b=!E?'\x20'+a15E[D(0x109)]('with\x20hostname:\x20'+F[D(0xb2)][D(0x113)](',')):'';success(m+D(0xf5)+F[D(0xdd)]+':'+F[D(0xed)]+X(F)+b);}else{const q=uniqBy(J,V=>V?.['data']?.[D(0xb2)]?.['join'](','))[D(0xfa)]>0x1;success(m+'\x20is\x20exposed\x20with\x20multiple\x20'+(q?D(0xbc):D(0xa5))+':'),J['forEach'](V=>{const d=D;if(V[d(0xcf)]){error('Error\x20occured\x20while\x20trying\x20to\x20forward\x20'+I+':\x20'+V[d(0xcf)][d(0xa8)]);return;}const v=V[d(0x116)],w=!E?d(0xe7)+v[d(0xb2)]['join'](','):'';console[d(0xc0)](d(0xb7)+v[d(0xdd)]+':'+v['port']+X(v)+w);});}}if(y===D(0xe6)){if(J[D(0xfa)]===0x1){const V=J[0x0];if(V['error']){error('Error\x20occured\x20while\x20trying\x20to\x20forward\x20'+I+':\x20'+V[D(0xcf)][D(0xa8)]);return;}const v=V[D(0x116)],w=!E?D(0xb4):':',i=v[D(0xdd)]+':'+v['port']+X(v);success(m+'\x20is\x20exposed\x20on\x20'+i+w),g(v);}else success(m+D(0xf5)+J[0x0]?.[D(0x116)]?.[D(0xdd)]+D(0xcb)),J[D(0x112)](f=>{const j=D;if(f[j(0xcf)]){error('Error\x20occured\x20while\x20trying\x20to\x20forward\x20'+I+':\x20'+f[j(0xcf)][j(0xa8)]);return;}const a=f[j(0x116)];success(j(0xf7)+a[j(0xed)]+X(a)),g(a,0x4);});}});}[a15M(0xe0)](o,l=![]){const P=a15M;if(l){const E=o['flatMap'](I=>I[P(0x116)])[P(0x117)](I=>I!==undefined),y=process?.[P(0xb8)]===P(0xe9),N=a15y[P(0xb8)]()===P(0xbf),Z=y?P(0x10e):'/etc/hosts',A=a15E['bold'](P(0x104)),X=N?EOL+P(0xb6)+A+P(0xdc):undefined;let g=P(0xbb)+A+'\x20mode.\x20If\x20hostname\x20forwarding\x20is\x20required,\x20remove\x20'+P(0x110)+P(0x115)+Z+'):';X!==undefined&&warning(X??'');warning(g);const k=E['map'](I=>I[P(0xdd)]+P(0xb0)+I['hostnames'][P(0x113)]('\x20'));console[P(0xc0)](uniq(k)['join'](EOL)),console[P(0xc0)]();}}['askForProjectContext']=async(o,l,E,y,N)=>{const n=a15M,Z=o['getTokenScope']()===n(0xba)?y??await l['askForTeam']()():undefined,A=E||N||await l[n(0xc5)](Z)();return{'teamId':Z,'projectId':A};};}
|
package/dist/ssh/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a16D=a16l;(function(o,l){const r=a16l,E=o();while(!![]){try{const y=-parseInt(r(0xe3))/0x1*(-parseInt(r(0xbd))/0x2)+parseInt(r(0xf2))/0x3*(parseInt(r(0x100))/0x4)+parseInt(r(0xca))/0x5*(parseInt(r(0xbb))/0x6)+-parseInt(r(0xea))/0x7+-parseInt(r(0xdc))/0x8*(-parseInt(r(0x109))/0x9)+-parseInt(r(0xfa))/0xa*(parseInt(r(0xd6))/0xb)+-parseInt(r(0xb9))/0xc;if(y===l)break;else E['push'](E['shift']());}catch(N){E['push'](E['shift']());}}}(a16o,0x68665));import{ApiClient}from'@northflank/js-client';import{assertContextExisting,customUserAgent,error,getCommand,success,warning}from'../utils.js';function a16o(){const h=['Team\x20id','RequestTTY=yes','/usr/bin/ssh','apiClient','\x20\x20>\x20RSYNC:\x20\x20\x09','10GhwfSE','--proxyOnly','kill','addCommand','error','Don\x27t\x20use\x20context\x20default\x20values,\x20explicitly\x20use\x20options\x20or\x20ask.','96532OysZVt','service','execFileAsync','-tt','--useHostnames','\x20file.txt\x20','startSSH',':/remote/path/','unknown\x20error','45VDZSSY','askForProjectContext','SIGINT','Replicate\x20','Must\x20be\x20run\x20in\x20an\x20interactive\x20terminal\x20(TTY\x20required).','\x22\x20./data/\x20','Only\x20startup\x20SSH\x20proxy\x20without\x20opening\x20an\x20SSH\x20terminal\x20session.','SSH\x20killed\x20by\x20signal:\x20','org','C:\x5cWindows\x5cSystem32\x5cOpenSSH\x5cssh.exe','6487608tNcDsN','askForProject','6GcMOlw','ssh','22SublzC','push','blackBright','SSH\x20binary\x20not\x20found.\x20Please\x20install\x20OpenSSH.','exit','SSH\x20exited\x20with\x20code:\x20','getTokenScope','charAt','log','default-ssh','findSSH','Instance\x20to\x20use\x20for\x20SSH\x20(random\x20instance\x20will\x20be\x20chosen\x20if\x20not\x20specified)','root','2153680flnQbZ','name','sshCmd','RemoteCommand=su\x20','inherit','--project\x20--projectId\x20[NAME]','data','Ctrl+C\x20received\x20-\x20Terminating\x20SSH\x20proxy...','askForService','toUpperCase','trim','Project\x20of\x20the\x20','8556647SdvrQD','SSH\x20for\x20Northflank\x20services\x20and\x20jobs.','find',',\x20stop\x20with\x20Ctrl+C','slice','\x20\x20>\x20SFTP:\x20\x20\x09','1185880LzRFAI','StrictHostKeyChecking=no',':/rsync-test/','description','message','Use\x20specific\x20username\x20for\x20SSH\x20connection','Use\x20with\x20any\x20SSH\x20compatible\x20client.\x20Example\x20usages:','58183Zhbble','isTTY','close','getCurrentProjectName','SIGTERM','withServiceForwarding','/usr/local/bin/ssh','2825578NUnVRf','ssh\x20','Unable\x20to\x20initiate\x20SSH\x20tunnel.\x20Ensure\x20your\x20service\x20is\x20running\x20and\x20has\x20SSH\x20enabled','--team\x20--teamId\x20[TEAMID]','\x20to\x20ssh\x20into','uncaughtException','--noDefaults','\x20\x20>\x20SCP:\x20\x20\x09','42McjpWm','option','portName'];a16o=function(){return h;};return a16o();}import{InquirerHelper}from'../inquirer-helper.js';function a16l(o,l){const E=a16o();return a16l=function(y,N){y=y-0xb1;let Z=E[y];return Z;},a16l(o,l);}import{spawn}from'child_process';import{execFile}from'child_process';import{promisify}from'util';import a16E from'chalk';export class CliSsh{['sshCmd'];['apiClient'];constructor(o,l){const e=a16l;this['apiClient']=new ApiClient(o,{'throwErrorOnHttpErrorCode':!![],'customUserAgent':customUserAgent,'agent':l});const E=new InquirerHelper(this['apiClient']);this[e(0xcc)]=getCommand(!![])[e(0xcb)](e(0xbc))['description'](e(0xd7));const y=e(0x101),N=getCommand(!![])[e(0xcb)](y)[e(0xdf)]('Establish\x20SSH\x20connectivity\x20to\x20Northflank\x20'+y+'.\x20Creates\x20an\x20SSH\x20terminal\x20session\x20by\x20default.')[e(0xf3)](e(0xcf),e(0xd5)+y)[e(0xf3)]('--'+y+'\x20--'+y+'Id\x20[NAME]',y[e(0xc4)](0x0)[e(0xd3)]()+y[e(0xda)](0x1)+e(0xee))[e(0xf3)]('--instance\x20--instanceName\x20[NAME]',e(0xc8))[e(0xf3)](e(0xfb),e(0xb5),![])[e(0xf3)](e(0x104),e(0xb2)+y+'\x20hostnames\x20on\x20local\x20machine.\x20Requires\x20sudo\x20permissions',![])[e(0xf3)]('--user\x20[USER]',e(0xe1))[e(0xf3)](e(0xf0),e(0xff),![]);this[e(0xf8)]['contextProvider']['getTokenScope']()===e(0xb7)&&N[e(0xf3)](e(0xed),e(0xf5));const Z=N['action'](async A=>{const O=e,{noDefaults:X,teamId:g,projectId:k,serviceId:I,instanceName:J,proxyOnly:m,useHostnames:L}=A,{user:user=O(0xc9),quiet:F}=A;assertContextExisting(this[O(0xf8)]);try{const b=X?undefined:o[O(0xe6)](),{projectId:q,teamId:V}=await this[O(0x10a)](o,E,k,g,b),v=X?undefined:o['getCurrentServiceName'](),w=I||v||await E[O(0xd2)](q,V)(),i=J||await E['askForContainer'](q,w,undefined,![],V,!![])(),f=process['stdin'][O(0xe4)],a=f&&!m,T={'teamId':V,'projectId':q,'serviceId':w,'instanceId':i,'portsFilter':[0x16]};await this[O(0xf8)]['forwarding'][O(0xe8)](T,async M=>{const U=O,B=M[U(0xd8)](Y=>Y[U(0xd0)]?.[U(0xf4)]===U(0xc6));if(B===undefined)throw new Error(U(0xec));if(B?.[U(0xfe)]!==undefined||B?.[U(0xd0)]===undefined)throw new Error('Error\x20trying\x20to\x20forward:\x20'+(B?.[U(0xfe)]?.[U(0xe0)]??U(0x108)));const {address:G,port:K,hostnames:s}=B[U(0xd0)],x=L?s[0x0]??G:G;a?(!F&&success('SSH\x20proxy\x20started\x20on\x20endpoint:\x20'+(x+':'+K)+',\x20stop\x20with\x20Ctrl+D'),await this[U(0x106)]({'address':x,'port':K,'user':user})):(!F?(success('SSH\x20proxy\x20started\x20on\x20endpoint:\x20'+(x+':'+K)+U(0xd9)),console[U(0xc5)](U(0xe2)),console[U(0xc5)]('\x20\x20>\x20SSH\x20session:'+a16E['blackBright'](U(0xeb)+user+'@'+x+'\x20-p\x20'+K)),console[U(0xc5)](U(0xdb)+a16E[U(0xbf)]('sftp\x20-P\x20'+K+'\x20'+user+'@'+x)),console[U(0xc5)](U(0xf9)+a16E[U(0xbf)]('rsync\x20-avz\x20-e\x20\x22ssh\x20-p\x20'+K+U(0xb4)+user+'@'+x+U(0xde))),console[U(0xc5)](U(0xf1)+a16E[U(0xbf)]('scp\x20-P\x20'+K+U(0x105)+user+'@'+x+U(0x107)))):console[U(0xc5)](user,x,K),await new Promise((Y,p)=>{const Q=U;process['on']('SIGINT',()=>{const z=a16l;if(!F)success(z(0xd1));Y();}),process['on'](Q(0xef),p);}));},!L);}catch(M){error(''+M['message']);}finally{process[O(0xc1)]();}});this[e(0xcc)][e(0xfd)](Z);}['execFileAsync']=promisify(execFile);async['findSSH'](){const C=a16l;try{const {stdout:o}=await this[C(0x102)]('which',['ssh']);return o[C(0xd4)]();}catch{const l=[C(0xbc),C(0xf7),C(0xe9),C(0xb8)];for(const E of l){try{return await this[C(0x102)](E,['-V']),E;}catch{}}return null;}}async[a16D(0x106)](o){const d=a16D,l=await this[d(0xc7)]();if(!l)throw new Error(d(0xc0));if(!process['stdin'][d(0xe4)])throw new Error(d(0xb3));const {address:E,port:port=0x16,user:user=d(0xc9),args:args=[],trusted:trusted=!![]}=o,y=[];trusted&&y['push']('-o',d(0xdd),'-o','UserKnownHostsFile=/dev/null','-o','LogLevel=ERROR');user!==d(0xc9)&&y[d(0xbe)]('-o',d(0xcd)+user+'\x20-l','-o',d(0xf6));const N=spawn(l,[d(0x103),'-p',port['toString'](),'-l','root',...y,...args,E],{'stdio':d(0xce)});await new Promise((Z,A)=>{const j=d;N['on'](j(0xe5),(X,g)=>{const P=j;if(g)warning(P(0xb6)+g);else X!==0x0?warning(P(0xc2)+X):success('SSH\x20session\x20ended.');Z(X);}),N['on'](j(0xfe),X=>{const n=j;A(new Error('Failed\x20to\x20spawn\x20SSH\x20command:\x20'+X[n(0xe0)]));}),process['on'](j(0xb1),()=>N[j(0xfc)](j(0xb1))),process['on']('SIGTERM',()=>N[j(0xfc)](j(0xe7)));});}[a16D(0x10a)]=async(o,l,E,y,N)=>{const H=a16D,Z=o[H(0xc3)]()===H(0xb7)?y??await l['askForTeam']()():undefined,A=E||N||await l[H(0xba)](Z)();return{'teamId':Z,'projectId':A};};}
|
package/dist/utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a17k=a17l;(function(o,l){const g=a17l,E=o();while(!![]){try{const y=-parseInt(g(0xe5))/0x1*(parseInt(g(0xd4))/0x2)+parseInt(g(0xf1))/0x3+parseInt(g(0xcd))/0x4+-parseInt(g(0xf4))/0x5*(parseInt(g(0xd9))/0x6)+-parseInt(g(0xbe))/0x7+-parseInt(g(0xf6))/0x8+parseInt(g(0xd2))/0x9*(parseInt(g(0xcb))/0xa);if(y===l)break;else E['push'](E['shift']());}catch(N){E['push'](E['shift']());}}}(a17o,0x70e19));function a17l(o,l){const E=a17o();return a17l=function(y,N){y=y-0xb3;let Z=E[y];return Z;},a17l(o,l);}import a17E from'chalk';import{Command}from'commander';import{ProxyAgent}from'proxy-agent';import a17y from'node-fetch';import{readFileSync}from'fs';import{fileURLToPath}from'url';import{dirname,join}from'path';const __filename=fileURLToPath(import.meta[a17k(0xf7)]),__dirname=dirname(__filename),pgk=JSON[a17k(0xb9)](readFileSync(join(__dirname,a17k(0xc7)),a17k(0xf2)));export const customUserAgent=a17k(0xbf)+pgk?.[a17k(0xdb)];export const agent=new ProxyAgent();export const proxyEnvsSet=process[a17k(0xee)][a17k(0xc9)]!==undefined||process[a17k(0xee)]['HTTPS_PROXY']!==undefined;export const decodeJwtPayload=o=>{const J=a17k;try{const l=N=>{const I=a17l,Z=N[I(0xbb)](/-/g,'+')[I(0xbb)](/_/g,'/')[I(0xc2)](N[I(0xc0)]+(0x4-N[I(0xc0)]%0x4)%0x4,'=');return JSON[I(0xb9)](Buffer[I(0xb8)](Z,I(0xc1))[I(0xb7)]());},[E,y]=o[J(0xc5)]('.');return l(y);}catch(N){return{};}};export async function checkUpdate(o){const L=a17k;function l(E,y){const m=a17l,N=new Date(Number(E));return N[m(0xbd)](N[m(0xc8)]()+y),N;}try{if(l(o[L(0xb4)](),0x1)>new Date())return;const E=pgk[L(0xdb)],{name:y}=pgk;if(!E)return;const N=L(0xf0)+y+L(0xc6),Z=await a17y(N,{'agent':agent,'method':L(0xcf),'signal':AbortSignal[L(0xed)](0x1388)}),A=(await Z[L(0xe4)]())[L(0xdb)];needsUpdate(E,A)&&warning(L(0xd7)+E+L(0xe8)+A+'.'+(L(0xe7)+y+L(0xdd)+y+L(0xc4))),await o['setLastUpdateCheck'](new Date());}catch(X){}}function needsUpdate(o,l){const F=a17k,E=/(\.0+)+$/,y=o[F(0xbb)](E,'')[F(0xc5)]('.'),N=l['replace'](E,'')['split']('.');for(let Z=0x0;Z<Math[F(0xe9)](y[F(0xc0)],N['length']);Z+=0x1){const A=parseInt(N[Z],0xa)-parseInt(y[Z],0xa);if(A>0x0)return!![];if(A<0x0)return![];}return N[F(0xc0)]>y[F(0xc0)];}export function error(o){const b=a17k;console['error'](a17E[b(0xf3)](b(0xdc)+o));}export function warning(o){console['error'](a17E['yellow'](''+o));}export function success(o){const q=a17k;console[q(0xd3)](a17E[q(0xba)](''+o));}export function getCommand(o=![]){const V=a17k,l=new Command();return l[V(0xe0)](undefined,V(0xb5)),l[V(0xda)](![]),l[V(0xca)](![]),l[V(0xf5)](![]),l[V(0xd8)](![]),l[V(0xd0)](!![]),o&&(l[V(0xe6)](V(0xcc),V(0xd1),![]),l[V(0xe6)]('--quiet',V(0xd5),![]),l['option'](V(0xef),V(0xe2),![])),l;}export const retry=(o,l=0x32)=>E=>{let y=o;const N=async()=>{try{return await E();}catch(Z){if(y<=0x0)throw Z;return y-=0x1,await new Promise(A=>setTimeout(()=>A(),l)),N();}};return N();};export const asyncSequential=async(o,l)=>{const v=a17k,E=Promise[v(0xb6)]([]);return o[v(0xe3)]((y,N)=>y[v(0xb3)](Z=>l(N)[v(0xb3)](A=>{const w=v;return Z[w(0xd6)](A),Z;})),E);};function a17o(){const T=['25iSMhno','allowUnknownOption','6784800IuDxZt','url','then','getLastUpdateCheck','Display\x20help\x20for\x20command','resolve','toString','from','parse','green','replace','getCurrentToken','setDate','24703iFFtEH','northflank-cli/','length','base64','padEnd','setUTCSeconds','\x27\x20**','split','/latest','../package.json','getDate','HTTP_PROXY','storeOptionsAsProperties','190XFKANU','--verbose','2075108bRYKmM','getTime','GET','enablePositionalOptions','Verbose\x20output','244935ORZFid','log','6406byktDD','No\x20console\x20output','push','**\x20You\x27re\x20running\x20on\x20version\x20','allowExcessArguments','668928SgknFz','addHelpCommand','version','Failed:\x20','\x20-g\x27\x20or\x20\x27yarn\x20global\x20add\x20','Invalid\x20date\x20received:\x20',',\x20expected\x20valid\x20date\x20string\x20(example:\x202020-02-02T02:02:02Z)\x20or\x20unix\x20timestamp\x20(example\x201580608922)','helpOption','No\x20API\x20URL\x20present\x20in\x20context.\x20Create\x20new\x20context\x20with\x20\x27northflank\x20login\x27','Do\x20not\x20validate\x20input\x20fields\x20on\x20client\x20side','reduce','json','7GXgpzA','option','\x20Consider\x20updating\x20using\x20\x27npm\x20i\x20',',\x20the\x20latest\x20version\x20of\x20the\x20cli\x20is\x20','min','No\x20CLI\x20context\x20present.\x20Create\x20context\x20with\x20\x27northflank\x20login\x27','No\x20token\x20in\x20CLI\x20context.\x20Add\x20token\x20with\x20\x27northflank\x20set-token\x27','contextProvider','timeout','env','--skipValidation','https://registry.npmjs.org/','2573967VLCPJW','utf-8','redBright'];a17o=function(){return T;};return a17o();}export function isValidJSON(o){const i=a17k;try{return JSON[i(0xb9)](o);}catch(l){return![];}}export function assertContextExisting(o){const f=a17k;if(o['contextProvider']['getCurrentContext']()===undefined)throw new Error(f(0xea));if(o['contextProvider']['getCurrentBaseUrl']()===undefined)throw new Error(f(0xe1));if(o[f(0xec)][f(0xbc)]()===undefined)throw new Error(f(0xeb));}export const parseDateInput=o=>{const a=a17k;try{let l=new Date(o);if(isNaN(l[a(0xce)]())){const E=o['length']===0xd?o/0x3e8:o,y=new Date(0x0);y[a(0xc3)](E);if(isNaN(y['getTime']()))throw new Error();return y;}return l;}catch(N){throw new Error(a(0xde)+o+a(0xdf));}};export const tsHint='example:\x202020-02-02T02:02:02Z\x20(date\x20string)\x20or\x201580608922\x20(unix\x20ts)';
|