@northflank/cli 0.10.11 → 0.10.13
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/utils.js +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a14V=a14C;(function(T,C){const R=a14C,i=T();while(!![]){try{const K=parseInt(R(0x8f))/0x1*(-parseInt(R(0x8d))/0x2)+parseInt(R(0x9c))/0x3*(-parseInt(R(0x8b))/0x4)+parseInt(R(0xa0))/0x5+parseInt(R(0x9a))/0x6*(-parseInt(R(0xa2))/0x7)+-parseInt(R(0x9e))/0x8+parseInt(R(0xa1))/0x9*(-parseInt(R(0x98))/0xa)+parseInt(R(0x99))/0xb;if(K===C)break;else i['push'](i['shift']());}catch(t){i['push'](i['shift']());}}}(a14T,0x83a67));import a14i from'inquirer/lib/prompts/list.js';function a14T(){const v=['onUpKey','nextPageCursor','resolve','choices','reloadText','10NcTChi','17785009SiXJtr','5154IZYjGc','\x20Loading\x20more\x20options','2134245KUABYf','opt','128600GeSjzg','loop','4898785cLwAaT','1812978tMaSMi','3752pAResC','handleDynamicPageLoad','pagOpt','onDownKey','render','push','length','down','map','selected','loading','4RdunxL','run','78586ulfzJi','dir\x20must\x20be\x20up\x20or\x20down','17ZGSqUL','catch','..\x20Load\x20more\x20options\x20..','italic'];a14T=function(){return v;};return a14T();}import a14K from'inquirer/lib/objects/choice.js';import a14t from'chalk';function incrementListIndex(T,C,i){const A=a14C,K=i['choices']['realLength'],t=A(0x9f)in i?Boolean(i['loop']):!![];if(C==='up'){if(T>0x0)return T-0x1;return t?K-0x1:T;}if(C===A(0x87)){if(T<K-0x1)return T+0x1;return t?0x0:T;}throw new Error(A(0x8e));}function a14C(T,C){const i=a14T();return a14C=function(K,t){K=K-0x84;let m=i[K];return m;},a14C(T,C);}export class DynamicReloadPaginationPrompt extends a14i{['reloadText']=a14t[a14V(0x92)](a14V(0x91));[a14V(0xa4)];[a14V(0x8a)]=![];[a14V(0x94)];constructor(T,C,i){const M=a14V;super(T,C,i),this[M(0xa4)]=this[M(0x9d)],this[M(0x94)]=this[M(0xa4)][M(0x94)],this['nextPageCursor']!==undefined&&this[M(0x9d)][M(0x96)]['push'](new a14K(this[M(0x97)],this['reloadText']));}[a14V(0x8c)](){const G=a14V;return console['log']('Method\x20not\x20implemented'),Promise[G(0x95)]();}[a14V(0x93)](){const Y=a14V;if(this['loading'])return;this[Y(0x89)]=incrementListIndex(this[Y(0x89)],'up',this['opt']),this['render']();}async[a14V(0xa5)](){const q=a14V;if(this[q(0x8a)])return;this['selected']=incrementListIndex(this[q(0x89)],q(0x87),this[q(0x9d)]),await this[q(0xa3)](),this[q(0x84)]();}async[a14V(0xa3)](){const N=a14V;if(this[N(0x89)]>=this['opt'][N(0x96)]['length']-0x1){if(this[N(0x94)]===undefined)return;this[N(0x8a)]=!![];let T=0x0;const C=setInterval(()=>{const a=N,k=['⠋','⠙','⠹','⠸','⠼','⠴','⠦','⠧','⠇','⠏'],Q=a14t['italic'](k[T%k[a(0x86)]]+a(0x9b));this[a(0x9d)][a(0x96)]['choices'][this[a(0x89)]]['name']=''+Q,T+=0x1,this[a(0x84)]();},0x50),{elements:K,nextPageCursor:t}=await this[N(0xa4)]['loadMore']({'nextPageCursor':this[N(0x94)]})[N(0x90)](()=>({'elements':[],'nextPageCursor':undefined}));this[N(0x94)]=t;const m=K[N(0x88)](k=>new a14K(k,k));this['opt'][N(0x96)]['choices']['splice'](this[N(0x89)],0x1),this[N(0x9d)]['choices']['push'](...m),t!==undefined&&this[N(0x9d)][N(0x96)][N(0x85)](new a14K(this['reloadText'],this[N(0x97)])),clearInterval(C),this['loading']=![];}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a15Z=a15G;(function(N,G){const W=a15G,S=N();while(!![]){try{const U=-parseInt(W(0x1b5))/0x1*(-parseInt(W(0x1e9))/0x2)+parseInt(W(0x1b8))/0x3*(parseInt(W(0x1bc))/0x4)+-parseInt(W(0x201))/0x5+-parseInt(W(0x1cc))/0x6*(parseInt(W(0x1ac))/0x7)+-parseInt(W(0x1c1))/0x8*(-parseInt(W(0x1fa))/0x9)+parseInt(W(0x1f2))/0xa*(parseInt(W(0x1e6))/0xb)+-parseInt(W(0x20b))/0xc*(parseInt(W(0x1f4))/0xd);if(U===G)break;else S['push'](S['shift']());}catch(K){S['push'](S['shift']());}}}(a15N,0x83089));import{ApiClient}from'@northflank/js-client';import a15S from'chalk';function a15G(N,G){const S=a15N();return a15G=function(U,K){U=U-0x1a3;let r=S[U];return r;},a15G(N,G);}import{assertContextExisting,customUserAgent,error,getCommand,success,warning}from'../utils.js';import{InquirerHelper}from'../inquirer-helper.js';function a15N(){const R=['skipHostnamesText','canExecuteWithHostnames','Addon\x20to\x20forward','\x20mode.\x20If\x20hostname\x20forwarding\x20is\x20required,\x20remove\x20','all','getProxyForwarder','\x20\x20\x20No\x20running\x20container\x20found\x20for\x20','flat','data.id','Addons:','\x20flag\x20or\x20manually\x20append\x20following\x20entry\x20to\x20your\x20hosts\x20file\x20(','addon','portFwdCmd','forward','No\x20services\x20and\x20addons\x20to\x20forward\x20found\x20in\x20project\x20','>\x20Instance\x20\x27','SIGINT','green','\x20with\x20these\x20hostnames:','Instance\x20to\x20forward','Cleaning\x20up\x20open\x20connections\x20failed:\x20','Forwarding\x20addon\x20','121zOKmPJ','\x20\x20If\x20you\x20have\x20added\x20entries\x20to\x20your\x20hosts\x20file,\x20it\x20is\x20recommended\x20to\x20remove\x20them\x20again\x20now.','\x20to\x20','4dLoqyv','description','Services:','Port-forwarding\x20for\x20all\x20services\x20and\x20addons\x20in\x20the\x20given\x20project','hosts','--addon\x20--addonId\x20[NAME]','fwd','data','Project\x20for\x20forwarding','220900RAHBiY','protocol','17433741PNLjKv','noDefaultsText','action','message','forwardProject','greenBright','45McJJLD','\x20and\x20','\x20is\x20exposed\x20with\x20multiple\x20','Forwarding\x20service\x20','log',',\x20hostname:\x20','Service\x20to\x20forward','1483540fydISn','portName','\x20addon\x20ports','skipHostnames','\x20is\x20exposed\x20on\x20','\x27:\x20\x22','error','Failed:\x20','option','C:/Windows/System32/drivers/etc/hosts','12KldnHn','addCommand','--project\x20--projectId\x20[NAME]','platform','getCurrentProjectName','bold','flatMap','\x20\x20-\x20port\x20','Error\x20occured\x20while\x20trying\x20to\x20forward\x20','apiClient','printForwardingInfo','\x20\x20\x20\x20\x20\x20\x20\x20\x20','245693kJGVBd','--skipHostnames','http://','forEach','\x20mode:\x20the\x20locally\x20forwarded\x20port\x20differs\x20from\x20the\x20actual\x20port\x20on\x20the\x20forwarded\x20service/addon.','\x27\x20of\x20','--noDefaults','Port-forwarding\x20for\x20the\x20specified\x20service','type','298133qwDwKF','Stop\x20forwarding\x20traffic\x20from\x20','entries','3vLaEQd','askForProject','\x20in\x20project\x20','service','3276492rdhnlo','name','getCurrentServiceName','join','printHostsFileHint','1050392VrBmqt','darwin','Port-forwarding\x20for\x20the\x20specified\x20addon','Please\x20ensure\x20the\x20','stop','hostnames','Forwarding\x20','with\x20hostname:\x20','port','filter','project\x20for\x20forwarding','24wVGmla','address','length','reset'];a15N=function(){return R;};return a15N();}import*as a15U from'os';import{uniqBy,uniq,repeat,groupBy,capitalize}from'lodash-es';import{EOL}from'os';export class CliPortForward{[a15Z(0x1dc)];['apiClient'];[a15Z(0x1f5)]='Don\x27t\x20use\x20context\x20default\x20values,\x20explicitly\x20use\x20options\x20or\x20ask.';[a15Z(0x1d0)]='Only\x20expose\x20on\x20IP\x20address,\x20not\x20on\x20hostnames.\x20With\x20this\x20option,\x20no\x20root\x20permissions\x20are\x20required.';constructor(N,G){const B=a15Z;this[B(0x1a9)]=new ApiClient(N,{'throwErrorOnHttpErrorCode':!![],'customUserAgent':customUserAgent,'agent':G});const S=new InquirerHelper(this[B(0x1a9)]);this['portFwdCmd']=getCommand()[B(0x1bd)](B(0x1dd))['alias'](B(0x1ef))[B(0x1ea)]('Port-forwarding\x20for\x20Northflank\x20services\x20and\x20addons.');const U=getCommand(!![])[B(0x1bd)](B(0x1d4))[B(0x1ea)](B(0x1ec))[B(0x209)]('--project\x20--projectId\x20[NAME]',B(0x1cb))[B(0x209)](B(0x1b2),this['noDefaultsText'],![])['option']('--skipHostnames',this[B(0x1d0)],![])['action'](async({noDefaults:L,projectId:I,skipHostnames:d})=>{const j=B;assertContextExisting(this[j(0x1a9)]);const Y=this[j(0x1d5)](d),u=L?undefined:N[j(0x1a4)](),V=I||u||await S[j(0x1b9)]();try{const {services:a,addons:x}=await Y[j(0x1f8)]({'projectId':V},d);if(a[j(0x1ce)]+x['length']<=0x0)warning(j(0x1de)+a15S[j(0x1a5)](V));else{const b=a[j(0x1ca)](D=>D[j(0x1ce)]>0x0)[j(0x1ce)],f=x[j(0x1ca)](D=>D[j(0x1ce)]>0x0)[j(0x1ce)],n='\x20in\x20project\x20'+a15S[j(0x1a5)](V);console[j(0x1fe)](j(0x1c7)+a15S[j(0x1e1)][j(0x1a5)](b+'\x20service\x20ports')+j(0x1fb)+a15S[j(0x1e1)]['bold'](f+j(0x203))+n),console['log'](),console[j(0x1fe)](a15S[j(0x1a5)](j(0x1eb))),a[j(0x1af)](D=>{const i=j;if(D['length']>=0x1&&!D[0x0][i(0x207)])this[i(0x1aa)](D,{'type':'service','name':D[0x0]['data']['id']},d);}),console[j(0x1fe)](a15S[j(0x1a5)](j(0x1d9))),x[j(0x1af)](D=>{const l=j;if(D[l(0x1ce)]>=0x1&&!D[0x0]['error'])this['printForwardingInfo'](D,{'type':l(0x1db),'name':D[0x0][l(0x1f0)]['id']},d);}),this['printHostsFileHint']([...a[j(0x1d7)](),...x[j(0x1d7)]()],d);}}catch(D){error(j(0x208)+D[j(0x1f7)]);}}),K=getCommand(!![])[B(0x1bd)](B(0x1bb))[B(0x1ea)](B(0x1b3))[B(0x209)](B(0x20d),B(0x1f1))[B(0x209)]('--service\x20--serviceId\x20[NAME]',B(0x200))[B(0x209)]('--instance\x20--instanceId\x20[NAME]',B(0x1e3))[B(0x209)](B(0x1b2),this[B(0x1f5)],![])[B(0x209)](B(0x1ad),this[B(0x1d0)],![])[B(0x1f6)](async({noDefaults:L,projectId:I,serviceId:d,instanceId:Y,skipHostnames:u})=>{const k=B;assertContextExisting(this['apiClient']);const V=this[k(0x1d5)](u),a=L?undefined:N['getCurrentProjectName'](),x=I||a||await S[k(0x1b9)](),b=L?undefined:N[k(0x1be)](),f=d||b||await S['askForService'](x)();console['log'](k(0x1fd)+a15S[k(0x1a5)](f)+k(0x1ba)+a15S['bold'](x));try{const n=await V['forwardService']({'projectId':x,'serviceId':f,'instanceId':Y},u);this[k(0x1aa)](n,{'name':f,'type':k(0x1bb),'instanceId':Y},u),this[k(0x1c0)](n,u);}catch(D){error(k(0x208)+D[k(0x1f7)]);}}),r=getCommand(!![])[B(0x1bd)](B(0x1db))['description'](B(0x1c3))[B(0x209)]('--project\x20--projectId\x20[NAME]',B(0x1f1))[B(0x209)](B(0x1ee),B(0x1d2))['option'](B(0x1ad),this['skipHostnamesText'],![])[B(0x1f6)](async({noDefaults:L,projectId:I,addonId:d,skipHostnames:Y})=>{const h=B;assertContextExisting(this[h(0x1a9)]);const u=this[h(0x1d5)](Y),V=L?undefined:N[h(0x1a4)](),a=I||V||await S[h(0x1b9)](),x=d||await S['askForAddon'](a)();console[h(0x1fe)](h(0x1e5)+a15S[h(0x1a5)](x)+h(0x1ba)+a15S['bold'](a));try{const b={'projectId':a,'addonId':x},f=await u['forwardAddon'](b,Y);this[h(0x1aa)](f,{'name':x,'type':h(0x1db)},Y),this[h(0x1c0)](f,Y);}catch(n){error(h(0x208)+n['message']);}});this[B(0x1dc)][B(0x20c)](U),this[B(0x1dc)][B(0x20c)](K),this[B(0x1dc)][B(0x20c)](r);}['getProxyForwarder'](N=![]){const O=a15Z,G=this['apiClient']['forwarding'];if(!N){const S=G[O(0x1d1)]();if(S[O(0x207)])throw new Error(S[O(0x1f7)]);}return G['on']('tunnel-close',(U,K)=>{const J=O,r=a15S[J(0x1a5)](K[J(0x1b4)]+'\x20\x27'+K['id']+'\x27'),L=K[J(0x1c6)]['length']>0x0;warning(J(0x1b6)+K[J(0x1cd)]+':'+K[J(0x1c9)]+J(0x1e8)+r),N&&L&&warning(J(0x1e7));}),G['on']('connection-error',(U,K,r)=>{const t=O;warning('Connection\x20error\x20occurred\x20when\x20forwarding\x20\x27'+K[t(0x1cd)]+':'+K[t(0x1c9)]+t(0x206)+r?.[t(0x1f7)]+'\x22');}),process['on'](O(0x1e0),async()=>{const P=O;try{await G[P(0x1c5)]();}catch(U){error(P(0x1e4)+U[P(0x1f7)]);}finally{process['exit']();}}),G;}['printForwardingInfo'](N,G,S=![]){const y=a15Z,{type:U,name:K,instanceId:r}=G;if(N['length']<=0x0){const Y=y(0x1c4)+G[y(0x1b4)]+'\x20is\x20running\x20and\x20reachable\x20and\x20that\x20a\x20port\x20is\x20defined\x20on\x20the\x20networking\x20section.';warning(y(0x1d6)+U+'\x20'+a15S['bold'](K)+'.\x20'+Y);return;}const L=groupBy(N,y(0x1d8)),I=u=>'\x20('+(u[y(0x202)]?u['portName']+'\x20-\x20':'')+u[y(0x1f3)]+')';function d(u,V=0x2){const c=y;if(!S){const a=u[c(0x1f3)]==='HTTP'?c(0x1ae):'';u[c(0x1c6)][c(0x1af)](x=>{const M=c;console[M(0x1fe)](repeat('\x20',V)+'-\x20'+a+x+':'+u[M(0x1c9)]);});}}Object[y(0x1b7)](L)[y(0x1af)](([u,V])=>{const X=y,a=r?X(0x1df)+a15S[X(0x1f9)]['bold'](r)+X(0x1b1)+U+'\x20\x27'+a15S[X(0x1f9)][X(0x1a5)](u)+'\x27':'>\x20'+capitalize(U)+'\x20\x27'+a15S[X(0x1f9)][X(0x1a5)](u)+'\x27';if(U===X(0x1db)){if(V[X(0x1ce)]===0x1){const x=V[0x0];if(x[X(0x207)]){error(X(0x1a8)+u+':\x20'+x[X(0x207)][X(0x1f7)]);return;}const b=x[X(0x1f0)],e=!S?'\x20'+a15S[X(0x1cf)](X(0x1c8)+b[X(0x1c6)][X(0x1bf)](',')):'';success(a+X(0x205)+b[X(0x1cd)]+':'+b[X(0x1c9)]+I(b)+e);}else{const f=uniqBy(V,n=>n?.[X(0x1f0)]?.[X(0x1c6)]?.[X(0x1bf)](','))['length']>0x1;success(a+X(0x1fc)+(f?X(0x1ed):'ports')+':'),V[X(0x1af)](n=>{const o=X;if(n[o(0x207)]){error(o(0x1a8)+u+':\x20'+n[o(0x207)][o(0x1f7)]);return;}const D=n[o(0x1f0)],g=!S?o(0x1ff)+D[o(0x1c6)][o(0x1bf)](','):'';console[o(0x1fe)]('\x20\x20-\x20Address:\x20'+D['address']+':'+D['port']+I(D)+g);});}}if(U==='service'){if(V[X(0x1ce)]===0x1){const n=V[0x0];if(n[X(0x207)]){error('Error\x20occured\x20while\x20trying\x20to\x20forward\x20'+u+':\x20'+n['error']['message']);return;}const D=n[X(0x1f0)],g=!S?X(0x1e2):':',z=D['address']+':'+D[X(0x1c9)]+I(D);success(a+X(0x205)+z+g),d(D);}else success(a+'\x20is\x20exposed\x20on\x20'+V[0x0]?.[X(0x1f0)]?.[X(0x1cd)]+'\x20with\x20multiple\x20ports:'),V[X(0x1af)](v=>{const p=X;if(v[p(0x207)]){error('Error\x20occured\x20while\x20trying\x20to\x20forward\x20'+u+':\x20'+v[p(0x207)][p(0x1f7)]);return;}const E=v[p(0x1f0)];success(p(0x1a7)+E[p(0x1c9)]+I(E)),d(E,0x4);});}});}[a15Z(0x1c0)](N,G=![]){const C=a15Z;if(G){const S=N[C(0x1a6)](u=>u[C(0x1f0)])[C(0x1ca)](u=>u!==undefined),U=process?.[C(0x1a3)]==='win32',K=a15U[C(0x1a3)]()===C(0x1c2),r=U?C(0x20a):'/etc/hosts',L=a15S['bold'](C(0x204)),I=K?EOL+'Running\x20on\x20macOS\x20in\x20'+L+C(0x1b0):undefined;let d='Running\x20in\x20'+L+C(0x1d3)+'--skipHostnames'+C(0x1da)+r+'):';I!==undefined&&warning(I??'');warning(d);const Y=S['map'](u=>u[C(0x1cd)]+C(0x1ab)+u[C(0x1c6)][C(0x1bf)]('\x20'));console['log'](uniq(Y)['join'](EOL)),console[C(0x1fe)]();}}}
|
|
1
|
+
const a15n=a15C;(function(T,C){const I=a15C,i=T();while(!![]){try{const K=parseInt(I(0xec))/0x1+-parseInt(I(0xf5))/0x2*(parseInt(I(0x113))/0x3)+-parseInt(I(0xfd))/0x4+parseInt(I(0x10e))/0x5+-parseInt(I(0x10b))/0x6+parseInt(I(0x12b))/0x7+parseInt(I(0xc9))/0x8;if(K===C)break;else i['push'](i['shift']());}catch(t){i['push'](i['shift']());}}}(a15T,0xd0d6b));function a15C(T,C){const i=a15T();return a15C=function(K,t){K=K-0xba;let m=i[K];return m;},a15C(T,C);}import{ApiClient}from'@northflank/js-client';import a15i from'chalk';import{assertContextExisting,customUserAgent,error,getCommand,success,warning}from'../utils.js';import{InquirerHelper}from'../inquirer-helper.js';import*as a15K from'os';import{uniqBy,uniq,repeat,groupBy,capitalize}from'lodash-es';function a15T(){const B=['printForwardingInfo','1706548OEdCBk','getProxyForwarder','Services:','Forwarding\x20service\x20','stop','Addon\x20to\x20forward','reset','\x20is\x20running\x20and\x20reachable\x20and\x20that\x20a\x20port\x20is\x20defined\x20on\x20the\x20networking\x20section.','\x20\x20-\x20Address:\x20','Forwarding\x20','Addons:','portName','hostnames','connection-error','8725320hxSiZN','with\x20hostname:\x20','green','1578240jYqoNl','\x20and\x20','\x27\x20of\x20','skipHostnamesText','message','33iEnGiN','hosts','--project\x20--projectId\x20[NAME]','Only\x20expose\x20on\x20IP\x20address,\x20not\x20on\x20hostnames.\x20With\x20this\x20option,\x20no\x20root\x20permissions\x20are\x20required.','name','askForAddon','option','description','portFwdCmd','addCommand','Instance\x20to\x20forward','forwardAddon','forEach','port','--instance\x20--instanceId\x20[NAME]','length','forwardProject','noDefaultsText','C:/Windows/System32/drivers/etc/hosts','--addon\x20--addonId\x20[NAME]','type','--service\x20--serviceId\x20[NAME]','\x20is\x20exposed\x20with\x20multiple\x20','win32','1419362MTBBbB','action','--noDefaults','skipHostnames','Project\x20for\x20forwarding','error','address','data.id','Running\x20on\x20macOS\x20in\x20','tunnel-close','addon','Cleaning\x20up\x20open\x20connections\x20failed:\x20','Stop\x20forwarding\x20traffic\x20from\x20','\x20\x20If\x20you\x20have\x20added\x20entries\x20to\x20your\x20hosts\x20file,\x20it\x20is\x20recommended\x20to\x20remove\x20them\x20again\x20now.','alias','\x20flag\x20or\x20manually\x20append\x20following\x20entry\x20to\x20your\x20hosts\x20file\x20(','darwin','Don\x27t\x20use\x20context\x20default\x20values,\x20explicitly\x20use\x20options\x20or\x20ask.','8295768Xczcwt',',\x20hostname:\x20','filter','join','Failed:\x20','printHostsFileHint','entries','>\x20Instance\x20\x27','\x20is\x20exposed\x20on\x20','greenBright','getCurrentProjectName','fwd','Running\x20in\x20','service','apiClient','flat','exit','\x20addon\x20ports','forwarding','/etc/hosts','forwardService','\x20with\x20multiple\x20ports:','askForProject','\x20service\x20ports','Forwarding\x20addon\x20','\x20\x20-\x20port\x20','Please\x20ensure\x20the\x20','http://','\x20in\x20project\x20','getCurrentServiceName','Port-forwarding\x20for\x20all\x20services\x20and\x20addons\x20in\x20the\x20given\x20project','bold','\x20mode:\x20the\x20locally\x20forwarded\x20port\x20differs\x20from\x20the\x20actual\x20port\x20on\x20the\x20forwarded\x20service/addon.','--skipHostnames','data','1223896tlqtMG','\x20with\x20these\x20hostnames:','protocol','all','askForService','Connection\x20error\x20occurred\x20when\x20forwarding\x20\x27','log','HTTP','\x20\x20\x20\x20\x20\x20\x20\x20\x20','7822AlaNsb','platform','SIGINT','Port-forwarding\x20for\x20Northflank\x20services\x20and\x20addons.','Error\x20occured\x20while\x20trying\x20to\x20forward\x20','Port-forwarding\x20for\x20the\x20specified\x20addon','project\x20for\x20forwarding'];a15T=function(){return B;};return a15T();}import{EOL}from'os';export class CliPortForward{[a15n(0x11b)];['apiClient'];[a15n(0x124)]=a15n(0xc8);[a15n(0x111)]=a15n(0x116);constructor(T,C){const H=a15n;this['apiClient']=new ApiClient(T,{'throwErrorOnHttpErrorCode':!![],'customUserAgent':customUserAgent,'agent':C});const i=new InquirerHelper(this[H(0xd7)]);this[H(0x11b)]=getCommand()[H(0x117)]('forward')[H(0xc5)](H(0xd4))[H(0x11a)](H(0xf8));const K=getCommand(!![])['name'](H(0xef))['description'](H(0xe7))[H(0x119)](H(0x115),H(0xfb))['option'](H(0x12d),this[H(0x124)],![])[H(0x119)](H(0xea),this[H(0x111)],![])[H(0x12c)](async({noDefaults:k,projectId:Q,skipHostnames:R})=>{const f=H;assertContextExisting(this[f(0xd7)]);const A=this[f(0xfe)](R),V=k?undefined:T[f(0xd3)](),M=Q||V||await i[f(0xdf)]();try{const {services:G,addons:Y}=await A[f(0x123)]({'projectId':M},R);if(G[f(0x122)]+Y['length']<=0x0)warning('No\x20services\x20and\x20addons\x20to\x20forward\x20found\x20in\x20project\x20'+a15i['bold'](M));else{const q=G[f(0xcb)](v=>v[f(0x122)]>0x0)[f(0x122)],N=Y[f(0xcb)](v=>v[f(0x122)]>0x0)[f(0x122)],a=f(0xe5)+a15i[f(0xe8)](M);console[f(0xf2)](f(0x106)+a15i['green']['bold'](q+f(0xe0))+f(0x10f)+a15i[f(0x10d)][f(0xe8)](N+f(0xda))+a),console[f(0xf2)](),console[f(0xf2)](a15i['bold'](f(0xff))),G[f(0x11f)](v=>{const e=f;if(v[e(0x122)]>=0x1&&!v[0x0][e(0xbc)])this['printForwardingInfo'](v,{'type':e(0xd6),'name':v[0x0]['data']['id']},R);}),console['log'](a15i[f(0xe8)](f(0x107))),Y[f(0x11f)](v=>{const c=f;if(v['length']>=0x1&&!v[0x0][c(0xbc)])this[c(0xfc)](v,{'type':c(0xc1),'name':v[0x0][c(0xeb)]['id']},R);}),this[f(0xce)]([...G['flat'](),...Y[f(0xd8)]()],R);}}catch(v){error(f(0xcd)+v['message']);}}),t=getCommand(!![])[H(0x117)](H(0xd6))[H(0x11a)]('Port-forwarding\x20for\x20the\x20specified\x20service')[H(0x119)](H(0x115),H(0xbb))[H(0x119)](H(0x128),'Service\x20to\x20forward')[H(0x119)](H(0x121),H(0x11d))[H(0x119)]('--noDefaults',this[H(0x124)],![])[H(0x119)]('--skipHostnames',this['skipHostnamesText'],![])[H(0x12c)](async({noDefaults:k,projectId:Q,serviceId:R,instanceId:A,skipHostnames:V})=>{const O=H;assertContextExisting(this[O(0xd7)]);const M=this[O(0xfe)](V),G=k?undefined:T[O(0xd3)](),Y=Q||G||await i[O(0xdf)](),q=k?undefined:T[O(0xe6)](),N=R||q||await i[O(0xf0)](Y)();console[O(0xf2)](O(0x100)+a15i[O(0xe8)](N)+O(0xe5)+a15i[O(0xe8)](Y));try{const a=await M[O(0xdd)]({'projectId':Y,'serviceId':N,'instanceId':A},V);this[O(0xfc)](a,{'name':N,'type':O(0xd6),'instanceId':A},V),this[O(0xce)](a,V);}catch(v){error('Failed:\x20'+v[O(0x112)]);}}),m=getCommand(!![])[H(0x117)]('addon')[H(0x11a)](H(0xfa))[H(0x119)]('--project\x20--projectId\x20[NAME]','Project\x20for\x20forwarding')[H(0x119)](H(0x126),H(0x102))[H(0x119)](H(0xea),this[H(0x111)],![])[H(0x12c)](async({noDefaults:k,projectId:Q,addonId:R,skipHostnames:A})=>{const x=H;assertContextExisting(this[x(0xd7)]);const V=this[x(0xfe)](A),M=k?undefined:T[x(0xd3)](),G=Q||M||await i[x(0xdf)](),Y=R||await i[x(0x118)](G)();console[x(0xf2)](x(0xe1)+a15i[x(0xe8)](Y)+x(0xe5)+a15i[x(0xe8)](G));try{const q={'projectId':G,'addonId':Y},N=await V[x(0x11e)](q,A);this[x(0xfc)](N,{'name':Y,'type':x(0xc1)},A),this[x(0xce)](N,A);}catch(a){error(x(0xcd)+a[x(0x112)]);}});this['portFwdCmd'][H(0x11c)](K),this[H(0x11b)][H(0x11c)](t),this['portFwdCmd'][H(0x11c)](m);}[a15n(0xfe)](T=![]){const z=a15n,C=this[z(0xd7)][z(0xdb)];if(!T){const i=C['canExecuteWithHostnames']();if(i['error'])throw new Error(i[z(0x112)]);}return C['on'](z(0xc0),(K,t)=>{const b=z,m=a15i[b(0xe8)](t[b(0x127)]+'\x20\x27'+t['id']+'\x27'),k=t[b(0x109)][b(0x122)]>0x0;warning(b(0xc3)+t[b(0xbd)]+':'+t[b(0x120)]+'\x20to\x20'+m),T&&k&&warning(b(0xc4));}),C['on'](z(0x10a),(K,t,m)=>{const u=z;warning(u(0xf1)+t[u(0xbd)]+':'+t[u(0x120)]+'\x27:\x20\x22'+m?.[u(0x112)]+'\x22');}),process['on'](z(0xf7),async()=>{const o=z;try{await C[o(0x101)]();}catch(K){error(o(0xc2)+K[o(0x112)]);}finally{process[o(0xd9)]();}}),C;}[a15n(0xfc)](T,C,i=![]){const d=a15n,{type:K,name:t,instanceId:m}=C;if(T[d(0x122)]<=0x0){const A=d(0xe3)+C[d(0x127)]+d(0x104);warning('\x20\x20\x20No\x20running\x20container\x20found\x20for\x20'+K+'\x20'+a15i['bold'](t)+'.\x20'+A);return;}const k=groupBy(T,d(0xbe)),Q=V=>'\x20('+(V[d(0x108)]?V[d(0x108)]+'\x20-\x20':'')+V[d(0xee)]+')';function R(V,M=0x2){const L=d;if(!i){const G=V[L(0xee)]===L(0xf3)?L(0xe4):'';V[L(0x109)]['forEach'](Y=>{const D=L;console[D(0xf2)](repeat('\x20',M)+'-\x20'+G+Y+':'+V[D(0x120)]);});}}Object[d(0xcf)](k)[d(0x11f)](([V,M])=>{const g=d,G=m?g(0xd0)+a15i[g(0xd2)][g(0xe8)](m)+g(0x110)+K+'\x20\x27'+a15i[g(0xd2)][g(0xe8)](V)+'\x27':'>\x20'+capitalize(K)+'\x20\x27'+a15i[g(0xd2)][g(0xe8)](V)+'\x27';if(K===g(0xc1)){if(M[g(0x122)]===0x1){const Y=M[0x0];if(Y[g(0xbc)]){error(g(0xf9)+V+':\x20'+Y[g(0xbc)][g(0x112)]);return;}const q=Y[g(0xeb)],N=!i?'\x20'+a15i[g(0x103)](g(0x10c)+q['hostnames'][g(0xcc)](',')):'';success(G+g(0xd1)+q[g(0xbd)]+':'+q['port']+Q(q)+N);}else{const a=uniqBy(M,v=>v?.[g(0xeb)]?.[g(0x109)]?.[g(0xcc)](','))['length']>0x1;success(G+g(0x129)+(a?g(0x114):'ports')+':'),M['forEach'](v=>{const J=g;if(v[J(0xbc)]){error('Error\x20occured\x20while\x20trying\x20to\x20forward\x20'+V+':\x20'+v['error'][J(0x112)]);return;}const w=v[J(0xeb)],Z=!i?J(0xca)+w['hostnames'][J(0xcc)](','):'';console[J(0xf2)](J(0x105)+w[J(0xbd)]+':'+w[J(0x120)]+Q(w)+Z);});}}if(K===g(0xd6)){if(M['length']===0x1){const v=M[0x0];if(v[g(0xbc)]){error(g(0xf9)+V+':\x20'+v[g(0xbc)][g(0x112)]);return;}const p=v['data'],w=!i?g(0xed):':',Z=p['address']+':'+p[g(0x120)]+Q(p);success(G+g(0xd1)+Z+w),R(p);}else success(G+'\x20is\x20exposed\x20on\x20'+M[0x0]?.[g(0xeb)]?.[g(0xbd)]+g(0xde)),M['forEach'](F=>{const U=g;if(F[U(0xbc)]){error('Error\x20occured\x20while\x20trying\x20to\x20forward\x20'+V+':\x20'+F[U(0xbc)][U(0x112)]);return;}const l=F[U(0xeb)];success(U(0xe2)+l['port']+Q(l)),R(l,0x4);});}});}['printHostsFileHint'](T,C=![]){const S=a15n;if(C){const i=T['flatMap'](V=>V[S(0xeb)])['filter'](V=>V!==undefined),K=process?.[S(0xf6)]===S(0x12a),t=a15K[S(0xf6)]()===S(0xc7),m=K?S(0x125):S(0xdc),k=a15i['bold'](S(0xba)),Q=t?EOL+S(0xbf)+k+S(0xe9):undefined;let R=S(0xd5)+k+'\x20mode.\x20If\x20hostname\x20forwarding\x20is\x20required,\x20remove\x20'+'--skipHostnames'+S(0xc6)+m+'):';Q!==undefined&&warning(Q??'');warning(R);const A=i['map'](V=>V[S(0xbd)]+S(0xf4)+V[S(0x109)][S(0xcc)]('\x20'));console[S(0xf2)](uniq(A)[S(0xcc)](EOL)),console[S(0xf2)]();}}}
|
package/dist/utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a16A=a16C;(function(T,C){const R=a16C,i=T();while(!![]){try{const K=-parseInt(R(0x111))/0x1*(-parseInt(R(0x129))/0x2)+parseInt(R(0x12b))/0x3+parseInt(R(0x115))/0x4*(parseInt(R(0x102))/0x5)+-parseInt(R(0x10c))/0x6*(parseInt(R(0xf2))/0x7)+-parseInt(R(0x11f))/0x8+-parseInt(R(0x106))/0x9*(parseInt(R(0x12c))/0xa)+parseInt(R(0x100))/0xb*(-parseInt(R(0xf5))/0xc);if(K===C)break;else i['push'](i['shift']());}catch(t){i['push'](i['shift']());}}}(a16T,0x30f0c));function a16T(){const n=['HTTP_PROXY','setDate','green','../package.json','version','626152WUgcGB','getCurrentBaseUrl','length','Do\x20not\x20validate\x20input\x20fields\x20on\x20client\x20side','redBright','\x20Consider\x20updating\x20using\x20\x27npm\x20i\x20','yellow','Verbose\x20output','setUTCSeconds','helpOption','2lpyfky','allowUnknownOption','670557pEwZtX','10JSoVVF','Invalid\x20date\x20received:\x20','example:\x202020-02-02T02:02:02Z\x20(date\x20string)\x20or\x201580608922\x20(unix\x20ts)','getCurrentContext','4760xWmUqH','base64','then','12DwYRNi','from','json','push','getDate','addHelpCommand','\x27\x20**','getCurrentToken','timeout','--skipValidation','No\x20CLI\x20context\x20present.\x20Create\x20context\x20with\x20\x27northflank\x20login\x27','344476HabuJs','replace','10rJuGPF','url','No\x20console\x20output','northflank-cli/','1175373bMVMmP','storeOptionsAsProperties','GET','Display\x20help\x20for\x20command','resolve','parse','1164hCVjoU','No\x20token\x20in\x20CLI\x20context.\x20Add\x20token\x20with\x20\x27northflank\x20set-token\x27','option','setLastUpdateCheck','error','246727MjzIIm','https://registry.npmjs.org/','split','utf-8','204632TRIzvi','--quiet','enablePositionalOptions','env',',\x20the\x20latest\x20version\x20of\x20the\x20cli\x20is\x20'];a16T=function(){return n;};return a16T();}import a16i from'chalk';import{Command}from'commander';import{ProxyAgent}from'proxy-agent';import a16K from'node-fetch';import{readFileSync}from'fs';import{fileURLToPath}from'url';import{dirname,join}from'path';const __filename=fileURLToPath(import.meta[a16A(0x103)]),__dirname=dirname(__filename),pgk=JSON['parse'](readFileSync(join(__dirname,a16A(0x11d)),a16A(0x114)));export const customUserAgent=a16A(0x105)+pgk?.['version'];export const agent=new ProxyAgent();export const proxyEnvsSet=process[a16A(0x118)][a16A(0x11a)]!==undefined||process[a16A(0x118)]['HTTPS_PROXY']!==undefined;export const decodeJwtPayload=T=>{const M=a16A;try{const C=t=>{const V=a16C,m=t[V(0x101)](/-/g,'+')['replace'](/_/g,'/')['padEnd'](t[V(0x121)]+(0x4-t['length']%0x4)%0x4,'=');return JSON['parse'](Buffer[V(0xf6)](m,V(0xf3))['toString']());},[i,K]=T[M(0x113)]('.');return C(K);}catch(t){return{};}};function a16C(T,C){const i=a16T();return a16C=function(K,t){K=K-0xef;let m=i[K];return m;},a16C(T,C);}export async function checkUpdate(T){const Y=a16A;function C(i,K){const G=a16C,t=new Date(Number(i));return t[G(0x11b)](t[G(0xf9)]()+K),t;}try{if(C(T['getLastUpdateCheck'](),0x1)>new Date())return;const i=pgk[Y(0x11e)],{name:K}=pgk;if(!i)return;const t=Y(0x112)+K+'/latest',m=await a16K(t,{'agent':agent,'method':Y(0x108),'signal':AbortSignal[Y(0xfd)](0x1388)}),k=(await m[Y(0xf7)]())[Y(0x11e)];needsUpdate(i,k)&&warning('**\x20You\x27re\x20running\x20on\x20version\x20'+i+Y(0x119)+k+'.'+(Y(0x124)+K+'\x20-g\x27\x20or\x20\x27yarn\x20global\x20add\x20'+K+Y(0xfb))),await T[Y(0x10f)](new Date());}catch(Q){}}function needsUpdate(T,C){const q=a16A,K=/(\.0+)+$/,t=T['replace'](K,'')[q(0x113)]('.'),m=C['replace'](K,'')[q(0x113)]('.');for(let k=0x0;k<Math['min'](t[q(0x121)],m[q(0x121)]);k+=0x1){const Q=parseInt(m[k],0xa)-parseInt(t[k],0xa);if(Q>0x0)return!![];if(Q<0x0)return![];}return m['length']>t['length'];}export function error(T){const N=a16A;console[N(0x110)](a16i[N(0x123)]('Failed:\x20'+T));}export function warning(T){const a=a16A;console[a(0x110)](a16i[a(0x125)](''+T));}export function success(T){const v=a16A;console['log'](a16i[v(0x11c)](''+T));}export function getCommand(T=![]){const p=a16A,C=new Command();return C[p(0x128)](undefined,p(0x109)),C[p(0xfa)](![]),C[p(0x107)](![]),C[p(0x12a)](![]),C['allowExcessArguments'](![]),C[p(0x117)](!![]),T&&(C['option']('--verbose',p(0x126),![]),C[p(0x10e)](p(0x116),p(0x104),![]),C[p(0x10e)](p(0xfe),p(0x122),![])),C;}export const retry=(T,C=0x32)=>i=>{let K=T;const t=async()=>{try{return await i();}catch(m){if(K<=0x0)throw m;return K-=0x1,await new Promise(k=>setTimeout(()=>k(),C)),t();}};return t();};export const asyncSequential=async(T,C)=>{const w=a16A,i=Promise[w(0x10a)]([]);return T['reduce']((K,t)=>K[w(0xf4)](m=>C(t)['then'](k=>{const Z=w;return m[Z(0xf8)](k),m;})),i);};export function isValidJSON(T){const F=a16A;try{return JSON[F(0x10b)](T);}catch(C){return![];}}export function assertContextExisting(T){const l=a16A;if(T['contextProvider'][l(0xf1)]()===undefined)throw new Error(l(0xff));if(T['contextProvider'][l(0x120)]()===undefined)throw new Error('No\x20API\x20URL\x20present\x20in\x20context.\x20Create\x20new\x20context\x20with\x20\x27northflank\x20login\x27');if(T['contextProvider'][l(0xfc)]()===undefined)throw new Error(l(0x10d));}export const parseDateInput=T=>{const I=a16A;try{let C=new Date(T);if(isNaN(C['getTime']())){const i=T[I(0x121)]===0xd?T/0x3e8:T,K=new Date(0x0);K[I(0x127)](i);if(isNaN(K['getTime']()))throw new Error();return K;}return C;}catch(t){throw new Error(I(0xef)+T+',\x20expected\x20valid\x20date\x20string\x20(example:\x202020-02-02T02:02:02Z)\x20or\x20unix\x20timestamp\x20(example\x201580608922)');}};export const tsHint=a16A(0xf0);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@northflank/cli",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.13",
|
|
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.8.
|
|
30
|
+
"@northflank/js-client": "0.8.10",
|
|
31
31
|
"bufferutil": "^4.0.9",
|
|
32
32
|
"chalk": "~5.6.2",
|
|
33
33
|
"columnify": "^1.6.0",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"inquirer": "8.2.7",
|
|
36
36
|
"inquirer-search-list": "^1.2.6",
|
|
37
37
|
"js-yaml": "^4.1.1",
|
|
38
|
-
"lodash-es": "^4.17.
|
|
38
|
+
"lodash-es": "^4.17.23",
|
|
39
39
|
"node-fetch": "^3.3.2",
|
|
40
40
|
"open": "^11.0.0",
|
|
41
41
|
"proxy-agent": "^6.5.0",
|