@northflank/cli 0.10.10 → 0.10.12

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.
@@ -1 +1 @@
1
- const a14l=a14R;(function(O,R){const p=a14R,M=O();while(!![]){try{const i=-parseInt(p(0x95))/0x1*(-parseInt(p(0x7f))/0x2)+parseInt(p(0x8b))/0x3+-parseInt(p(0x81))/0x4+-parseInt(p(0x91))/0x5*(parseInt(p(0x92))/0x6)+-parseInt(p(0x9b))/0x7*(parseInt(p(0x99))/0x8)+parseInt(p(0x89))/0x9+-parseInt(p(0x8f))/0xa*(-parseInt(p(0x98))/0xb);if(i===R)break;else M['push'](M['shift']());}catch(K){M['push'](M['shift']());}}}(a14O,0xb7ad5));import a14M from'inquirer/lib/prompts/list.js';import a14i from'inquirer/lib/objects/choice.js';import a14K from'chalk';function incrementListIndex(O,R,M){const c=a14R,i=M['choices'][c(0x90)],K=c(0x7d)in M?Boolean(M[c(0x7d)]):!![];if(R==='up'){if(O>0x0)return O-0x1;return K?i-0x1:O;}if(R===c(0x8c)){if(O<i-0x1)return O+0x1;return K?0x0:O;}throw new Error(c(0x8d));}export class DynamicReloadPaginationPrompt extends a14M{[a14l(0x85)]=a14K[a14l(0x97)](a14l(0x88));[a14l(0x8e)];[a14l(0x80)]=![];['nextPageCursor'];constructor(O,R,M){const u=a14l;super(O,R,M),this[u(0x8e)]=this[u(0x93)],this[u(0x7e)]=this['pagOpt']['nextPageCursor'],this['nextPageCursor']!==undefined&&this['opt'][u(0x9a)][u(0x86)](new a14i(this[u(0x85)],this[u(0x85)]));}['onUpKey'](){const r=a14l;if(this[r(0x80)])return;this['selected']=incrementListIndex(this[r(0x82)],'up',this[r(0x93)]),this[r(0x87)]();}async[a14l(0x8a)](){const n=a14l;if(this[n(0x80)])return;this[n(0x82)]=incrementListIndex(this['selected'],n(0x8c),this[n(0x93)]),await this[n(0x96)](),this[n(0x87)]();}async[a14l(0x96)](){const Q=a14l;if(this[Q(0x82)]>=this[Q(0x93)][Q(0x9a)][Q(0x84)]-0x1){if(this[Q(0x7e)]===undefined)return;this['loading']=!![];let O=0x0;const R=setInterval(()=>{const L=Q,x=['⠋','⠙','⠹','⠸','⠼','⠴','⠦','⠧','⠇','⠏'],S=a14K[L(0x97)](x[O%x[L(0x84)]]+'\x20Loading\x20more\x20options');this[L(0x93)][L(0x9a)][L(0x9a)][this[L(0x82)]]['name']=''+S,O+=0x1,this[L(0x87)]();},0x50),{elements:M,nextPageCursor:K}=await this[Q(0x8e)][Q(0x94)]({'nextPageCursor':this[Q(0x7e)]})[Q(0x83)](()=>({'elements':[],'nextPageCursor':undefined}));this[Q(0x7e)]=K;const U=M['map'](x=>new a14i(x,x));this[Q(0x93)]['choices'][Q(0x9a)]['splice'](this[Q(0x82)],0x1),this['opt'][Q(0x9a)][Q(0x86)](...U),K!==undefined&&this[Q(0x93)][Q(0x9a)]['push'](new a14i(this[Q(0x85)],this['reloadText'])),clearInterval(R),this[Q(0x80)]=![];}}}function a14R(O,R){const M=a14O();return a14R=function(i,K){i=i-0x7d;let U=M[i];return U;},a14R(O,R);}function a14O(){const A=['nextPageCursor','446tcAWbW','loading','3389796cqRtrU','selected','catch','length','reloadText','push','render','..\x20Load\x20more\x20options\x20..','1315485VVcckS','onDownKey','1888596IyiymY','down','dir\x20must\x20be\x20up\x20or\x20down','pagOpt','3060tYJHqs','realLength','1813325vbaIRK','24SxeArp','opt','loadMore','3929zUINzl','handleDynamicPageLoad','italic','55792yNKwQJ','584RDTgPp','choices','14714zgmzvi','loop'];a14O=function(){return A;};return a14O();}
1
+ function a14j(X,j){const V=a14X();return a14j=function(H,O){H=H-0x179;let F=V[H];return F;},a14j(X,j);}function a14X(){const l=['selected','762853GjTzYC','reloadText','length','map','2069672IjuYnd','nextPageCursor','down','\x20Loading\x20more\x20options','handleDynamicPageLoad','loading','144zYWzkU','3iQzIuU','choices','569534ElOGlC','10150UOQCRR','pagOpt','resolve','14lsjBzW','onDownKey','..\x20Load\x20more\x20options\x20..','loop','Method\x20not\x20implemented','4183024GRNrBw','9441cWQAES','realLength','1638300dBHGDP','opt','catch','run','onUpKey','push','italic','95kJprIy','render','78012heFOfm','name','splice','loadMore'];a14X=function(){return l;};return a14X();}const a14C=a14j;(function(X,j){const P=a14j,V=X();while(!![]){try{const H=-parseInt(P(0x180))/0x1+-parseInt(P(0x18d))/0x2*(parseInt(P(0x18b))/0x3)+-parseInt(P(0x199))/0x4+-parseInt(P(0x179))/0x5*(parseInt(P(0x17b))/0x6)+-parseInt(P(0x191))/0x7*(parseInt(P(0x196))/0x8)+parseInt(P(0x197))/0x9*(parseInt(P(0x18e))/0xa)+parseInt(P(0x184))/0xb*(parseInt(P(0x18a))/0xc);if(H===j)break;else V['push'](V['shift']());}catch(O){V['push'](V['shift']());}}}(a14X,0x8bc9a));import a14V from'inquirer/lib/prompts/list.js';import a14H from'inquirer/lib/objects/choice.js';import a14O from'chalk';function incrementListIndex(X,j,V){const o=a14j,H=V[o(0x18c)][o(0x198)],O='loop'in V?Boolean(V[o(0x194)]):!![];if(j==='up'){if(X>0x0)return X-0x1;return O?H-0x1:X;}if(j==='down'){if(X<H-0x1)return X+0x1;return O?0x0:X;}throw new Error('dir\x20must\x20be\x20up\x20or\x20down');}export class DynamicReloadPaginationPrompt extends a14V{[a14C(0x181)]=a14O[a14C(0x19f)](a14C(0x193));[a14C(0x18f)];[a14C(0x189)]=![];['nextPageCursor'];constructor(X,j,V){const B=a14C;super(X,j,V),this[B(0x18f)]=this[B(0x19a)],this[B(0x185)]=this[B(0x18f)][B(0x185)],this['nextPageCursor']!==undefined&&this[B(0x19a)][B(0x18c)][B(0x19e)](new a14H(this[B(0x181)],this[B(0x181)]));}[a14C(0x19c)](){const s=a14C;return console['log'](s(0x195)),Promise[s(0x190)]();}[a14C(0x19d)](){const S=a14C;if(this[S(0x189)])return;this[S(0x17f)]=incrementListIndex(this['selected'],'up',this[S(0x19a)]),this['render']();}async[a14C(0x192)](){const y=a14C;if(this[y(0x189)])return;this[y(0x17f)]=incrementListIndex(this['selected'],y(0x186),this[y(0x19a)]),await this['handleDynamicPageLoad'](),this[y(0x17a)]();}async[a14C(0x188)](){const e=a14C;if(this['selected']>=this[e(0x19a)][e(0x18c)]['length']-0x1){if(this[e(0x185)]===undefined)return;this[e(0x189)]=!![];let X=0x0;const j=setInterval(()=>{const A=e,F=['⠋','⠙','⠹','⠸','⠼','⠴','⠦','⠧','⠇','⠏'],h=a14O[A(0x19f)](F[X%F[A(0x182)]]+A(0x187));this[A(0x19a)]['choices'][A(0x18c)][this[A(0x17f)]][A(0x17c)]=''+h,X+=0x1,this[A(0x17a)]();},0x50),{elements:V,nextPageCursor:H}=await this[e(0x18f)][e(0x17e)]({'nextPageCursor':this[e(0x185)]})[e(0x19b)](()=>({'elements':[],'nextPageCursor':undefined}));this[e(0x185)]=H;const O=V[e(0x183)](F=>new a14H(F,F));this[e(0x19a)][e(0x18c)]['choices'][e(0x17d)](this[e(0x17f)],0x1),this[e(0x19a)][e(0x18c)][e(0x19e)](...O),H!==undefined&&this['opt'][e(0x18c)][e(0x19e)](new a14H(this[e(0x181)],this[e(0x181)])),clearInterval(j),this['loading']=![];}}}
@@ -1 +1 @@
1
- const a15H=a15R;(function(O,R){const d=a15R,M=O();while(!![]){try{const i=-parseInt(d(0x207))/0x1+parseInt(d(0x205))/0x2*(-parseInt(d(0x1ec))/0x3)+-parseInt(d(0x1e0))/0x4*(parseInt(d(0x1f0))/0x5)+parseInt(d(0x213))/0x6+-parseInt(d(0x1d7))/0x7*(-parseInt(d(0x232))/0x8)+parseInt(d(0x1f7))/0x9*(-parseInt(d(0x203))/0xa)+-parseInt(d(0x1eb))/0xb*(-parseInt(d(0x1da))/0xc);if(i===R)break;else M['push'](M['shift']());}catch(K){M['push'](M['shift']());}}}(a15O,0xb8028));function a15R(O,R){const M=a15O();return a15R=function(i,K){i=i-0x1cf;let U=M[i];return U;},a15R(O,R);}import{ApiClient}from'@northflank/js-client';import a15M from'chalk';import{assertContextExisting,customUserAgent,error,getCommand,success,warning}from'../utils.js';import{InquirerHelper}from'../inquirer-helper.js';function a15O(){const V=['printForwardingInfo','join','\x27:\x20\x22','Instance\x20to\x20forward','action','reset','platform','printHostsFileHint','21864VoUEAi','port','\x20is\x20exposed\x20on\x20','Services:','description','flat','service','canExecuteWithHostnames','\x20\x20\x20\x20\x20\x20\x20\x20\x20','portFwdCmd','greenBright','forwardProject','entries','Port-forwarding\x20for\x20the\x20specified\x20service','data','\x20mode:\x20the\x20locally\x20forwarded\x20port\x20differs\x20from\x20the\x20actual\x20port\x20on\x20the\x20forwarded\x20service/addon.','Only\x20expose\x20on\x20IP\x20address,\x20not\x20on\x20hostnames.\x20With\x20this\x20option,\x20no\x20root\x20permissions\x20are\x20required.','Port-forwarding\x20for\x20Northflank\x20services\x20and\x20addons.','fwd','973NeRKCd','askForProject','with\x20hostname:\x20','28495092ARCOOY','address','Don\x27t\x20use\x20context\x20default\x20values,\x20explicitly\x20use\x20options\x20or\x20ask.','\x20-\x20','Please\x20ensure\x20the\x20','green','2975944ojEZzE','--instance\x20--instanceId\x20[NAME]','\x20flag\x20or\x20manually\x20append\x20following\x20entry\x20to\x20your\x20hosts\x20file\x20(','skipHostnamesText','addon','--addon\x20--addonId\x20[NAME]','project\x20for\x20forwarding','portName',',\x20hostname:\x20','noDefaultsText','getProxyForwarder','11fzwocm','171idFRhe','log','forEach','SIGINT','5IlnSUX','C:/Windows/System32/drivers/etc/hosts','Addon\x20to\x20forward','forward','option','forwarding','\x20service\x20ports','16866hBMqCT','>\x20Instance\x20\x27','\x20\x20\x20No\x20running\x20container\x20found\x20for\x20','protocol','Project\x20for\x20forwarding','Error\x20occured\x20while\x20trying\x20to\x20forward\x20','No\x20services\x20and\x20addons\x20to\x20forward\x20found\x20in\x20project\x20','\x20and\x20','name','exit','hosts','--project\x20--projectId\x20[NAME]','3070Oocesz','\x20addon\x20ports','7472aLTfGz','Connection\x20error\x20occurred\x20when\x20forwarding\x20\x27','601724iyZWOx','forwardService','alias','apiClient','Forwarding\x20addon\x20','Port-forwarding\x20for\x20all\x20services\x20and\x20addons\x20in\x20the\x20given\x20project','all','filter','data.id','\x20\x20If\x20you\x20have\x20added\x20entries\x20to\x20your\x20hosts\x20file,\x20it\x20is\x20recommended\x20to\x20remove\x20them\x20again\x20now.','--skipHostnames','hostnames','799236yAQfWK','askForAddon','bold','tunnel-close','ports','Forwarding\x20','/etc/hosts','message','length','http://','error','\x20in\x20project\x20','win32','--service\x20--serviceId\x20[NAME]','\x20is\x20exposed\x20with\x20multiple\x20','Failed:\x20','\x20with\x20these\x20hostnames:','addCommand','type','Stop\x20forwarding\x20traffic\x20from\x20','Forwarding\x20service\x20','map','getCurrentProjectName'];a15O=function(){return V;};return a15O();}import*as a15i from'os';import{uniqBy,uniq,repeat,groupBy,capitalize}from'lodash-es';import{EOL}from'os';export class CliPortForward{['portFwdCmd'];['apiClient'];[a15H(0x1e9)]=a15H(0x1dc);['skipHostnamesText']=a15H(0x1d4);constructor(O,R){const b=a15H;this[b(0x20a)]=new ApiClient(O,{'throwErrorOnHttpErrorCode':!![],'customUserAgent':customUserAgent,'agent':R});const M=new InquirerHelper(this[b(0x20a)]);this[b(0x23b)]=getCommand()[b(0x1ff)](b(0x1f3))[b(0x209)](b(0x1d6))[b(0x236)](b(0x1d5));const i=getCommand(!![])[b(0x1ff)](b(0x20d))[b(0x236)](b(0x20c))[b(0x1f4)](b(0x202),b(0x1e6))[b(0x1f4)]('--noDefaults',this[b(0x1e9)],![])[b(0x1f4)](b(0x211),this[b(0x1e3)],![])[b(0x22e)](async({noDefaults:x,projectId:S,skipHostnames:p})=>{const I=b;assertContextExisting(this[I(0x20a)]);const c=this[I(0x1ea)](p),l=x?undefined:O[I(0x229)](),u=S||l||await M[I(0x1d8)]();try{const {services:r,addons:n}=await c[I(0x1cf)]({'projectId':u},p);if(r['length']+n[I(0x21b)]<=0x0)warning(I(0x1fd)+a15M[I(0x215)](u));else{const Q=r['filter'](h=>h[I(0x21b)]>0x0)['length'],L=n[I(0x20e)](h=>h[I(0x21b)]>0x0)[I(0x21b)],A=I(0x21e)+a15M[I(0x215)](u);console[I(0x1ed)](I(0x218)+a15M['green'][I(0x215)](Q+I(0x1f6))+I(0x1fe)+a15M[I(0x1df)][I(0x215)](L+I(0x204))+A),console['log'](),console[I(0x1ed)](a15M[I(0x215)](I(0x235))),r['forEach'](h=>{const k=I;if(h[k(0x21b)]>=0x1&&!h[0x0][k(0x21d)])this[k(0x22a)](h,{'type':k(0x238),'name':h[0x0][k(0x1d2)]['id']},p);}),console[I(0x1ed)](a15M[I(0x215)]('Addons:')),n[I(0x1ee)](h=>{const q=I;if(h[q(0x21b)]>=0x1&&!h[0x0][q(0x21d)])this[q(0x22a)](h,{'type':'addon','name':h[0x0][q(0x1d2)]['id']},p);}),this[I(0x231)]([...r[I(0x237)](),...n[I(0x237)]()],p);}}catch(h){error('Failed:\x20'+h[I(0x21a)]);}}),K=getCommand(!![])[b(0x1ff)]('service')[b(0x236)](b(0x1d1))[b(0x1f4)](b(0x202),b(0x1fb))[b(0x1f4)](b(0x220),'Service\x20to\x20forward')['option'](b(0x1e1),b(0x22d))['option']('--noDefaults',this[b(0x1e9)],![])[b(0x1f4)]('--skipHostnames',this[b(0x1e3)],![])[b(0x22e)](async({noDefaults:x,projectId:S,serviceId:p,instanceId:c,skipHostnames:l})=>{const j=b;assertContextExisting(this[j(0x20a)]);const u=this[j(0x1ea)](l),r=x?undefined:O['getCurrentProjectName'](),n=S||r||await M[j(0x1d8)](),Q=x?undefined:O['getCurrentServiceName'](),L=p||Q||await M['askForService'](n)();console[j(0x1ed)](j(0x227)+a15M[j(0x215)](L)+j(0x21e)+a15M[j(0x215)](n));try{const A=await u[j(0x208)]({'projectId':n,'serviceId':L,'instanceId':c},l);this[j(0x22a)](A,{'name':L,'type':j(0x238),'instanceId':c},l),this['printHostsFileHint'](A,l);}catch(h){error(j(0x222)+h['message']);}}),U=getCommand(!![])[b(0x1ff)](b(0x1e4))[b(0x236)]('Port-forwarding\x20for\x20the\x20specified\x20addon')['option'](b(0x202),b(0x1fb))[b(0x1f4)](b(0x1e5),b(0x1f2))[b(0x1f4)]('--skipHostnames',this[b(0x1e3)],![])[b(0x22e)](async({noDefaults:x,projectId:S,addonId:p,skipHostnames:c})=>{const D=b;assertContextExisting(this[D(0x20a)]);const l=this[D(0x1ea)](c),u=x?undefined:O[D(0x229)](),r=S||u||await M[D(0x1d8)](),n=p||await M[D(0x214)](r)();console[D(0x1ed)](D(0x20b)+a15M[D(0x215)](n)+D(0x21e)+a15M[D(0x215)](r));try{const Q={'projectId':r,'addonId':n},L=await l['forwardAddon'](Q,c);this['printForwardingInfo'](L,{'name':n,'type':D(0x1e4)},c),this[D(0x231)](L,c);}catch(A){error(D(0x222)+A[D(0x21a)]);}});this[b(0x23b)]['addCommand'](i),this[b(0x23b)][b(0x224)](K),this['portFwdCmd'][b(0x224)](U);}[a15H(0x1ea)](O=![]){const Y=a15H,R=this[Y(0x20a)][Y(0x1f5)];if(!O){const M=R[Y(0x239)]();if(M[Y(0x21d)])throw new Error(M[Y(0x21a)]);}return R['on'](Y(0x216),(i,K)=>{const N=Y,U=a15M[N(0x215)](K['type']+'\x20\x27'+K['id']+'\x27'),x=K['hostnames'][N(0x21b)]>0x0;warning(N(0x226)+K['address']+':'+K['port']+'\x20to\x20'+U),O&&x&&warning(N(0x210));}),R['on']('connection-error',(i,K,U)=>{const z=Y;warning(z(0x206)+K[z(0x1db)]+':'+K[z(0x233)]+z(0x22c)+U?.[z(0x21a)]+'\x22');}),process['on'](Y(0x1ef),async()=>{const E=Y;try{await R['stop']();}catch(i){error('Cleaning\x20up\x20open\x20connections\x20failed:\x20'+i[E(0x21a)]);}finally{process[E(0x200)]();}}),R;}[a15H(0x22a)](O,R,M=![]){const T=a15H,{type:i,name:K,instanceId:U}=R;if(O[T(0x21b)]<=0x0){const c=T(0x1de)+R[T(0x225)]+'\x20is\x20running\x20and\x20reachable\x20and\x20that\x20a\x20port\x20is\x20defined\x20on\x20the\x20networking\x20section.';warning(T(0x1f9)+i+'\x20'+a15M[T(0x215)](K)+'.\x20'+c);return;}const x=groupBy(O,T(0x20f)),S=l=>'\x20('+(l[T(0x1e7)]?l[T(0x1e7)]+T(0x1dd):'')+l['protocol']+')';function p(l,u=0x2){const W=T;if(!M){const r=l[W(0x1fa)]==='HTTP'?W(0x21c):'';l[W(0x212)]['forEach'](n=>{const F=W;console[F(0x1ed)](repeat('\x20',u)+'-\x20'+r+n+':'+l[F(0x233)]);});}}Object[T(0x1d0)](x)[T(0x1ee)](([l,u])=>{const m=T,r=U?m(0x1f8)+a15M['greenBright'][m(0x215)](U)+'\x27\x20of\x20'+i+'\x20\x27'+a15M[m(0x23c)][m(0x215)](l)+'\x27':'>\x20'+capitalize(i)+'\x20\x27'+a15M[m(0x23c)][m(0x215)](l)+'\x27';if(i===m(0x1e4)){if(u[m(0x21b)]===0x1){const n=u[0x0];if(n[m(0x21d)]){error(m(0x1fc)+l+':\x20'+n[m(0x21d)][m(0x21a)]);return;}const Q=n[m(0x1d2)],L=!M?'\x20'+a15M[m(0x22f)](m(0x1d9)+Q['hostnames'][m(0x22b)](',')):'';success(r+m(0x234)+Q[m(0x1db)]+':'+Q['port']+S(Q)+L);}else{const A=uniqBy(u,h=>h?.[m(0x1d2)]?.[m(0x212)]?.[m(0x22b)](','))[m(0x21b)]>0x1;success(r+m(0x221)+(A?m(0x201):m(0x217))+':'),u[m(0x1ee)](h=>{const w=m;if(h['error']){error('Error\x20occured\x20while\x20trying\x20to\x20forward\x20'+l+':\x20'+h[w(0x21d)][w(0x21a)]);return;}const t=h[w(0x1d2)],G=!M?w(0x1e8)+t[w(0x212)][w(0x22b)](','):'';console[w(0x1ed)]('\x20\x20-\x20Address:\x20'+t[w(0x1db)]+':'+t[w(0x233)]+S(t)+G);});}}if(i===m(0x238)){if(u['length']===0x1){const h=u[0x0];if(h['error']){error(m(0x1fc)+l+':\x20'+h['error'][m(0x21a)]);return;}const t=h[m(0x1d2)],G=!M?m(0x223):':',s=t[m(0x1db)]+':'+t[m(0x233)]+S(t);success(r+m(0x234)+s+G),p(t);}else success(r+'\x20is\x20exposed\x20on\x20'+u[0x0]?.[m(0x1d2)]?.[m(0x1db)]+'\x20with\x20multiple\x20ports:'),u[m(0x1ee)](y=>{const e=m;if(y[e(0x21d)]){error('Error\x20occured\x20while\x20trying\x20to\x20forward\x20'+l+':\x20'+y[e(0x21d)]['message']);return;}const C=y[e(0x1d2)];success('\x20\x20-\x20port\x20'+C[e(0x233)]+S(C)),p(C,0x4);});}});}['printHostsFileHint'](O,R=![]){const B=a15H;if(R){const M=O['flatMap'](l=>l[B(0x1d2)])[B(0x20e)](l=>l!==undefined),i=process?.[B(0x230)]===B(0x21f),K=a15i['platform']()==='darwin',U=i?B(0x1f1):B(0x219),x=a15M[B(0x215)]('skipHostnames'),S=K?EOL+'Running\x20on\x20macOS\x20in\x20'+x+B(0x1d3):undefined;let p='Running\x20in\x20'+x+'\x20mode.\x20If\x20hostname\x20forwarding\x20is\x20required,\x20remove\x20'+B(0x211)+B(0x1e2)+U+'):';S!==undefined&&warning(S??'');warning(p);const c=M[B(0x228)](l=>l[B(0x1db)]+B(0x23a)+l[B(0x212)][B(0x22b)]('\x20'));console[B(0x1ed)](uniq(c)[B(0x22b)](EOL)),console[B(0x1ed)]();}}}
1
+ const a15g=a15j;(function(X,j){const M=a15j,V=X();while(!![]){try{const H=parseInt(M(0x207))/0x1+parseInt(M(0x20c))/0x2*(-parseInt(M(0x21a))/0x3)+parseInt(M(0x204))/0x4*(-parseInt(M(0x1f8))/0x5)+-parseInt(M(0x1b3))/0x6+parseInt(M(0x1fb))/0x7*(-parseInt(M(0x1b5))/0x8)+parseInt(M(0x1b4))/0x9+parseInt(M(0x211))/0xa;if(H===j)break;else V['push'](V['shift']());}catch(O){V['push'](V['shift']());}}}(a15X,0x8d78c));import{ApiClient}from'@northflank/js-client';import a15V from'chalk';import{assertContextExisting,customUserAgent,error,getCommand,success,warning}from'../utils.js';function a15j(X,j){const V=a15X();return a15j=function(H,O){H=H-0x1b2;let F=V[H];return F;},a15j(X,j);}import{InquirerHelper}from'../inquirer-helper.js';import*as a15H from'os';import{uniqBy,uniq,repeat,groupBy,capitalize}from'lodash-es';function a15X(){const D=['\x20to\x20','\x20service\x20ports','--noDefaults','flat','Port-forwarding\x20for\x20Northflank\x20services\x20and\x20addons.','addCommand','\x20\x20If\x20you\x20have\x20added\x20entries\x20to\x20your\x20hosts\x20file,\x20it\x20is\x20recommended\x20to\x20remove\x20them\x20again\x20now.','platform','Forwarding\x20','getCurrentProjectName','Stop\x20forwarding\x20traffic\x20from\x20','map','/etc/hosts','name','--project\x20--projectId\x20[NAME]','forwardAddon','Port-forwarding\x20for\x20all\x20services\x20and\x20addons\x20in\x20the\x20given\x20project','connection-error','\x27:\x20\x22','Instance\x20to\x20forward','join','\x20with\x20these\x20hostnames:','\x20is\x20exposed\x20with\x20multiple\x20','Don\x27t\x20use\x20context\x20default\x20values,\x20explicitly\x20use\x20options\x20or\x20ask.','skipHostnames','\x20is\x20running\x20and\x20reachable\x20and\x20that\x20a\x20port\x20is\x20defined\x20on\x20the\x20networking\x20section.','type','win32','portName','fwd','protocol','askForService','bold','Failed:\x20','reset','message','description','tunnel-close','\x20in\x20project\x20','filter','\x20\x20\x20\x20\x20\x20\x20\x20\x20','Addons:','alias','service','greenBright','hostnames','option','printForwardingInfo','data.id','\x20flag\x20or\x20manually\x20append\x20following\x20entry\x20to\x20your\x20hosts\x20file\x20(','--instance\x20--instanceId\x20[NAME]','Cleaning\x20up\x20open\x20connections\x20failed:\x20','green','http://','all','5hZpMXm','error','--addon\x20--addonId\x20[NAME]','6153rIbcAm','port','\x20\x20-\x20Address:\x20','\x20\x20-\x20port\x20','length','log','ports','getProxyForwarder','portFwdCmd','3345524bnMxvS','\x20\x20\x20No\x20running\x20container\x20found\x20for\x20','forwardProject','57322KuaEvJ','darwin','getCurrentServiceName','>\x20Instance\x20\x27','Project\x20for\x20forwarding','162170MRBEby','action','forwardService','Services:','project\x20for\x20forwarding','30243860pDqYsV','noDefaultsText','Running\x20on\x20macOS\x20in\x20','Error\x20occured\x20while\x20trying\x20to\x20forward\x20','askForAddon','--skipHostnames','HTTP','skipHostnamesText','\x20mode.\x20If\x20hostname\x20forwarding\x20is\x20required,\x20remove\x20','33MxQzRl','address','Only\x20expose\x20on\x20IP\x20address,\x20not\x20on\x20hostnames.\x20With\x20this\x20option,\x20no\x20root\x20permissions\x20are\x20required.','\x20and\x20','Addon\x20to\x20forward','data','canExecuteWithHostnames','3638202VaXgzQ','4290750oYnZRd','5864gDSxXZ','apiClient','Running\x20in\x20','askForProject','\x20is\x20exposed\x20on\x20','\x27\x20of\x20','printHostsFileHint','forEach',',\x20hostname:\x20','Port-forwarding\x20for\x20the\x20specified\x20addon','addon','flatMap'];a15X=function(){return D;};return a15X();}import{EOL}from'os';export class CliPortForward{[a15g(0x203)];[a15g(0x1b6)];[a15g(0x212)]=a15g(0x1d8);['skipHostnamesText']=a15g(0x21c);constructor(X,j){const J=a15g;this[J(0x1b6)]=new ApiClient(X,{'throwErrorOnHttpErrorCode':!![],'customUserAgent':customUserAgent,'agent':j});const V=new InquirerHelper(this['apiClient']);this[J(0x203)]=getCommand()[J(0x1ce)]('forward')[J(0x1eb)](J(0x1de))[J(0x1e5)](J(0x1c5));const H=getCommand(!![])[J(0x1ce)](J(0x1f7))[J(0x1e5)](J(0x1d1))[J(0x1ef)]('--project\x20--projectId\x20[NAME]',J(0x210))['option'](J(0x1c3),this[J(0x212)],![])[J(0x1ef)](J(0x216),this[J(0x218)],![])[J(0x20d)](async({noDefaults:h,projectId:P,skipHostnames:o})=>{const b=J;assertContextExisting(this[b(0x1b6)]);const C=this[b(0x202)](o),B=h?undefined:X['getCurrentProjectName'](),s=P||B||await V[b(0x1b8)]();try{const {services:S,addons:y}=await C[b(0x206)]({'projectId':s},o);if(S[b(0x1ff)]+y['length']<=0x0)warning('No\x20services\x20and\x20addons\x20to\x20forward\x20found\x20in\x20project\x20'+a15V[b(0x1e1)](s));else{const A=S[b(0x1e8)](W=>W[b(0x1ff)]>0x0)[b(0x1ff)],l=y[b(0x1e8)](W=>W['length']>0x0)[b(0x1ff)],T=b(0x1e7)+a15V[b(0x1e1)](s);console[b(0x200)](b(0x1c9)+a15V['green'][b(0x1e1)](A+b(0x1c2))+b(0x21d)+a15V[b(0x1f5)][b(0x1e1)](l+'\x20addon\x20ports')+T),console['log'](),console[b(0x200)](a15V['bold'](b(0x20f))),S[b(0x1bc)](W=>{const E=b;if(W[E(0x1ff)]>=0x1&&!W[0x0][E(0x1f9)])this['printForwardingInfo'](W,{'type':E(0x1ec),'name':W[0x0]['data']['id']},o);}),console[b(0x200)](a15V[b(0x1e1)](b(0x1ea))),y[b(0x1bc)](W=>{const t=b;if(W['length']>=0x1&&!W[0x0][t(0x1f9)])this['printForwardingInfo'](W,{'type':t(0x1bf),'name':W[0x0][t(0x21f)]['id']},o);}),this[b(0x1bb)]([...S[b(0x1c4)](),...y[b(0x1c4)]()],o);}}catch(W){error('Failed:\x20'+W[b(0x1e4)]);}}),O=getCommand(!![])[J(0x1ce)](J(0x1ec))['description']('Port-forwarding\x20for\x20the\x20specified\x20service')[J(0x1ef)](J(0x1cf),'Project\x20for\x20forwarding')[J(0x1ef)]('--service\x20--serviceId\x20[NAME]','Service\x20to\x20forward')[J(0x1ef)](J(0x1f3),J(0x1d4))['option'](J(0x1c3),this[J(0x212)],![])[J(0x1ef)](J(0x216),this['skipHostnamesText'],![])['action'](async({noDefaults:h,projectId:P,serviceId:o,instanceId:C,skipHostnames:B})=>{const Z=J;assertContextExisting(this[Z(0x1b6)]);const s=this[Z(0x202)](B),S=h?undefined:X[Z(0x1ca)](),y=P||S||await V[Z(0x1b8)](),A=h?undefined:X[Z(0x209)](),l=o||A||await V[Z(0x1e0)](y)();console[Z(0x200)]('Forwarding\x20service\x20'+a15V[Z(0x1e1)](l)+Z(0x1e7)+a15V[Z(0x1e1)](y));try{const T=await s[Z(0x20e)]({'projectId':y,'serviceId':l,'instanceId':C},B);this[Z(0x1f0)](T,{'name':l,'type':Z(0x1ec),'instanceId':C},B),this[Z(0x1bb)](T,B);}catch(W){error(Z(0x1e2)+W[Z(0x1e4)]);}}),F=getCommand(!![])[J(0x1ce)](J(0x1bf))[J(0x1e5)](J(0x1be))[J(0x1ef)](J(0x1cf),J(0x20b))[J(0x1ef)](J(0x1fa),J(0x21e))[J(0x1ef)](J(0x216),this['skipHostnamesText'],![])['action'](async({noDefaults:h,projectId:P,addonId:o,skipHostnames:C})=>{const w=J;assertContextExisting(this[w(0x1b6)]);const B=this['getProxyForwarder'](C),s=h?undefined:X[w(0x1ca)](),S=P||s||await V[w(0x1b8)](),y=o||await V[w(0x215)](S)();console[w(0x200)]('Forwarding\x20addon\x20'+a15V['bold'](y)+w(0x1e7)+a15V[w(0x1e1)](S));try{const A={'projectId':S,'addonId':y},l=await B[w(0x1d0)](A,C);this[w(0x1f0)](l,{'name':y,'type':w(0x1bf)},C),this[w(0x1bb)](l,C);}catch(T){error(w(0x1e2)+T[w(0x1e4)]);}});this[J(0x203)]['addCommand'](H),this[J(0x203)][J(0x1c6)](O),this['portFwdCmd'][J(0x1c6)](F);}['getProxyForwarder'](X=![]){const N=a15g,j=this[N(0x1b6)]['forwarding'];if(!X){const V=j[N(0x1b2)]();if(V[N(0x1f9)])throw new Error(V['message']);}return j['on'](N(0x1e6),(H,O)=>{const p=N,F=a15V[p(0x1e1)](O[p(0x1db)]+'\x20\x27'+O['id']+'\x27'),h=O['hostnames'][p(0x1ff)]>0x0;warning(p(0x1cb)+O[p(0x21b)]+':'+O[p(0x1fc)]+p(0x1c1)+F),X&&h&&warning(p(0x1c7));}),j['on'](N(0x1d2),(H,O,F)=>{const m=N;warning('Connection\x20error\x20occurred\x20when\x20forwarding\x20\x27'+O[m(0x21b)]+':'+O['port']+m(0x1d3)+F?.['message']+'\x22');}),process['on']('SIGINT',async()=>{const k=N;try{await j['stop']();}catch(H){error(k(0x1f4)+H[k(0x1e4)]);}finally{process['exit']();}}),j;}[a15g(0x1f0)](X,j,V=![]){const I=a15g,{type:H,name:O,instanceId:F}=j;if(X[I(0x1ff)]<=0x0){const C='Please\x20ensure\x20the\x20'+j['type']+I(0x1da);warning(I(0x205)+H+'\x20'+a15V[I(0x1e1)](O)+'.\x20'+C);return;}const h=groupBy(X,I(0x1f1)),P=B=>'\x20('+(B['portName']?B[I(0x1dd)]+'\x20-\x20':'')+B[I(0x1df)]+')';function o(B,s=0x2){const K=I;if(!V){const S=B['protocol']===K(0x217)?K(0x1f6):'';B[K(0x1ee)][K(0x1bc)](y=>{const L=K;console[L(0x200)](repeat('\x20',s)+'-\x20'+S+y+':'+B[L(0x1fc)]);});}}Object['entries'](h)[I(0x1bc)](([B,s])=>{const a=I,S=F?a(0x20a)+a15V['greenBright'][a(0x1e1)](F)+a(0x1ba)+H+'\x20\x27'+a15V[a(0x1ed)][a(0x1e1)](B)+'\x27':'>\x20'+capitalize(H)+'\x20\x27'+a15V[a(0x1ed)]['bold'](B)+'\x27';if(H===a(0x1bf)){if(s[a(0x1ff)]===0x1){const y=s[0x0];if(y['error']){error(a(0x214)+B+':\x20'+y[a(0x1f9)][a(0x1e4)]);return;}const e=y[a(0x21f)],A=!V?'\x20'+a15V[a(0x1e3)]('with\x20hostname:\x20'+e['hostnames'][a(0x1d5)](',')):'';success(S+a(0x1b9)+e['address']+':'+e[a(0x1fc)]+P(e)+A);}else{const l=uniqBy(s,T=>T?.[a(0x21f)]?.['hostnames']?.[a(0x1d5)](','))[a(0x1ff)]>0x1;success(S+a(0x1d7)+(l?'hosts':a(0x201))+':'),s[a(0x1bc)](T=>{const r=a;if(T[r(0x1f9)]){error(r(0x214)+B+':\x20'+T[r(0x1f9)][r(0x1e4)]);return;}const W=T[r(0x21f)],v=!V?r(0x1bd)+W[r(0x1ee)][r(0x1d5)](','):'';console['log'](r(0x1fd)+W['address']+':'+W[r(0x1fc)]+P(W)+v);});}}if(H===a(0x1ec)){if(s[a(0x1ff)]===0x1){const T=s[0x0];if(T[a(0x1f9)]){error('Error\x20occured\x20while\x20trying\x20to\x20forward\x20'+B+':\x20'+T[a(0x1f9)]['message']);return;}const W=T['data'],v=!V?a(0x1d6):':',G=W[a(0x21b)]+':'+W[a(0x1fc)]+P(W);success(S+a(0x1b9)+G+v),o(W);}else success(S+a(0x1b9)+s[0x0]?.[a(0x21f)]?.[a(0x21b)]+'\x20with\x20multiple\x20ports:'),s[a(0x1bc)](d=>{const R=a;if(d[R(0x1f9)]){error(R(0x214)+B+':\x20'+d[R(0x1f9)][R(0x1e4)]);return;}const x=d[R(0x21f)];success(R(0x1fe)+x[R(0x1fc)]+P(x)),o(x,0x4);});}});}['printHostsFileHint'](X,j=![]){const n=a15g;if(j){const V=X[n(0x1c0)](B=>B[n(0x21f)])['filter'](B=>B!==undefined),H=process?.[n(0x1c8)]===n(0x1dc),O=a15H[n(0x1c8)]()===n(0x208),F=H?'C:/Windows/System32/drivers/etc/hosts':n(0x1cd),h=a15V['bold'](n(0x1d9)),P=O?EOL+n(0x213)+h+'\x20mode:\x20the\x20locally\x20forwarded\x20port\x20differs\x20from\x20the\x20actual\x20port\x20on\x20the\x20forwarded\x20service/addon.':undefined;let o=n(0x1b7)+h+n(0x219)+n(0x216)+n(0x1f2)+F+'):';P!==undefined&&warning(P??'');warning(o);const C=V[n(0x1cc)](B=>B['address']+n(0x1e9)+B[n(0x1ee)][n(0x1d5)]('\x20'));console[n(0x200)](uniq(C)[n(0x1d5)](EOL)),console[n(0x200)]();}}}
package/dist/utils.js CHANGED
@@ -1 +1 @@
1
- const a16c=a16R;(function(O,R){const p=a16R,M=O();while(!![]){try{const i=-parseInt(p(0xc5))/0x1*(parseInt(p(0xe8))/0x2)+parseInt(p(0xcb))/0x3+-parseInt(p(0xe6))/0x4+parseInt(p(0xe1))/0x5+parseInt(p(0xed))/0x6*(parseInt(p(0xd6))/0x7)+-parseInt(p(0xda))/0x8*(parseInt(p(0xc2))/0x9)+-parseInt(p(0xe4))/0xa*(-parseInt(p(0xf3))/0xb);if(i===R)break;else M['push'](M['shift']());}catch(K){M['push'](M['shift']());}}}(a16O,0x324b9));import a16M from'chalk';import{Command}from'commander';import{ProxyAgent}from'proxy-agent';import a16i from'node-fetch';import{readFileSync}from'fs';import{fileURLToPath}from'url';import{dirname,join}from'path';function a16R(O,R){const M=a16O();return a16R=function(i,K){i=i-0xbc;let U=M[i];return U;},a16R(O,R);}const __filename=fileURLToPath(import.meta[a16c(0xe9)]),__dirname=dirname(__filename),pgk=JSON[a16c(0xdc)](readFileSync(join(__dirname,a16c(0xc9)),a16c(0xeb)));export const customUserAgent=a16c(0xc7)+pgk?.[a16c(0xec)];function a16O(){const s=['10Snrfhg','addHelpCommand','986192VRUfWd','option','2JTAOlW','url','HTTP_PROXY','utf-8','version','36fZjFlw','HTTPS_PROXY','No\x20token\x20in\x20CLI\x20context.\x20Add\x20token\x20with\x20\x27northflank\x20set-token\x27','helpOption','Failed:\x20','error','5203319DdaaoN','min','from','example:\x202020-02-02T02:02:02Z\x20(date\x20string)\x20or\x201580608922\x20(unix\x20ts)','No\x20console\x20output','/latest','setLastUpdateCheck','env',',\x20the\x20latest\x20version\x20of\x20the\x20cli\x20is\x20','**\x20You\x27re\x20running\x20on\x20version\x20','contextProvider','padEnd','35172mbJVro','allowExcessArguments','--verbose','280931KSrPsx','getLastUpdateCheck','northflank-cli/','reduce','../package.json','replace','584553kagMvU','length','\x20Consider\x20updating\x20using\x20\x27npm\x20i\x20','enablePositionalOptions','getCurrentBaseUrl','split','https://registry.npmjs.org/','Do\x20not\x20validate\x20input\x20fields\x20on\x20client\x20side','getTime','then','yellow','6727UAKZhM','--quiet',',\x20expected\x20valid\x20date\x20string\x20(example:\x202020-02-02T02:02:02Z)\x20or\x20unix\x20timestamp\x20(example\x201580608922)','No\x20CLI\x20context\x20present.\x20Create\x20context\x20with\x20\x27northflank\x20login\x27','96ZrEhZI','resolve','parse','json','Verbose\x20output','\x20-g\x27\x20or\x20\x27yarn\x20global\x20add\x20','getCurrentToken','533690OMquWE','Invalid\x20date\x20received:\x20','redBright'];a16O=function(){return s;};return a16O();}export const agent=new ProxyAgent();export const proxyEnvsSet=process[a16c(0xbd)][a16c(0xea)]!==undefined||process[a16c(0xbd)][a16c(0xee)]!==undefined;export const decodeJwtPayload=O=>{try{const R=K=>{const l=a16R,U=K['replace'](/-/g,'+')[l(0xca)](/_/g,'/')[l(0xc1)](K[l(0xcc)]+(0x4-K[l(0xcc)]%0x4)%0x4,'=');return JSON[l(0xdc)](Buffer[l(0xf5)](U,'base64')['toString']());},[M,i]=O['split']('.');return R(i);}catch(K){return{};}};export async function checkUpdate(O){const u=a16c;function R(M,i){const K=new Date(Number(M));return K['setDate'](K['getDate']()+i),K;}try{if(R(O[u(0xc6)](),0x1)>new Date())return;const M=pgk[u(0xec)],{name:i}=pgk;if(!M)return;const K=u(0xd1)+i+u(0xf8),U=await a16i(K,{'agent':agent,'method':'GET','signal':AbortSignal['timeout'](0x1388)}),x=(await U[u(0xdd)]())[u(0xec)];needsUpdate(M,x)&&warning(u(0xbf)+M+u(0xbe)+x+'.'+(u(0xcd)+i+u(0xdf)+i+'\x27\x20**')),await O[u(0xbc)](new Date());}catch(S){}}function needsUpdate(O,R){const r=a16c,M=/(\.0+)+$/,K=O[r(0xca)](M,'')[r(0xd0)]('.'),U=R[r(0xca)](M,'')['split']('.');for(let x=0x0;x<Math[r(0xf4)](K[r(0xcc)],U['length']);x+=0x1){const S=parseInt(U[x],0xa)-parseInt(K[x],0xa);if(S>0x0)return!![];if(S<0x0)return![];}return U[r(0xcc)]>K['length'];}export function error(O){const n=a16c;console[n(0xf2)](a16M[n(0xe3)](n(0xf1)+O));}export function warning(O){const Q=a16c;console[Q(0xf2)](a16M[Q(0xd5)](''+O));}export function success(O){console['log'](a16M['green'](''+O));}export function getCommand(O=![]){const L=a16c,R=new Command();return R[L(0xf0)](undefined,'Display\x20help\x20for\x20command'),R[L(0xe5)](![]),R['storeOptionsAsProperties'](![]),R['allowUnknownOption'](![]),R[L(0xc3)](![]),R[L(0xce)](!![]),O&&(R[L(0xe7)](L(0xc4),L(0xde),![]),R['option'](L(0xd7),L(0xf7),![]),R['option']('--skipValidation',L(0xd2),![])),R;}export const retry=(O,R=0x32)=>M=>{let i=O;const K=async()=>{try{return await M();}catch(U){if(i<=0x0)throw U;return i-=0x1,await new Promise(x=>setTimeout(()=>x(),R)),K();}};return K();};export const asyncSequential=async(O,R)=>{const A=a16c,M=Promise[A(0xdb)]([]);return O[A(0xc8)]((i,K)=>i[A(0xd4)](U=>R(K)[A(0xd4)](x=>{return U['push'](x),U;})),M);};export function isValidJSON(O){const h=a16c;try{return JSON[h(0xdc)](O);}catch(R){return![];}}export function assertContextExisting(O){const t=a16c;if(O[t(0xc0)]['getCurrentContext']()===undefined)throw new Error(t(0xd9));if(O['contextProvider'][t(0xcf)]()===undefined)throw new Error('No\x20API\x20URL\x20present\x20in\x20context.\x20Create\x20new\x20context\x20with\x20\x27northflank\x20login\x27');if(O[t(0xc0)][t(0xe0)]()===undefined)throw new Error(t(0xef));}export const parseDateInput=O=>{const G=a16c;try{let R=new Date(O);if(isNaN(R['getTime']())){const M=O[G(0xcc)]===0xd?O/0x3e8:O,i=new Date(0x0);i['setUTCSeconds'](M);if(isNaN(i[G(0xd3)]()))throw new Error();return i;}return R;}catch(K){throw new Error(G(0xe2)+O+G(0xd8));}};export const tsHint=a16c(0xf6);
1
+ const a16C=a16j;(function(X,j){const o=a16j,V=X();while(!![]){try{const H=parseInt(o(0x187))/0x1*(parseInt(o(0x181))/0x2)+parseInt(o(0x15d))/0x3*(-parseInt(o(0x179))/0x4)+-parseInt(o(0x16d))/0x5+parseInt(o(0x18a))/0x6*(parseInt(o(0x18e))/0x7)+parseInt(o(0x15a))/0x8*(parseInt(o(0x17e))/0x9)+parseInt(o(0x196))/0xa+-parseInt(o(0x15c))/0xb;if(H===j)break;else V['push'](V['shift']());}catch(O){V['push'](V['shift']());}}}(a16X,0x8ed35));import a16V from'chalk';import{Command}from'commander';import{ProxyAgent}from'proxy-agent';import a16H from'node-fetch';import{readFileSync}from'fs';function a16X(){const M=['Failed:\x20','**\x20You\x27re\x20running\x20on\x20version\x20','northflank-cli/','setUTCSeconds','45705Mtxmzv','json','example:\x202020-02-02T02:02:02Z\x20(date\x20string)\x20or\x201580608922\x20(unix\x20ts)','getCurrentToken','GET','HTTPS_PROXY','toString','base64','getCurrentContext','green','allowUnknownOption','version','8eczJzQ','--skipValidation','reduce','redBright','url','181278HlyFBv','getTime','getLastUpdateCheck','638214fuDIRc','setLastUpdateCheck','from',',\x20expected\x20valid\x20date\x20string\x20(example:\x202020-02-02T02:02:02Z)\x20or\x20unix\x20timestamp\x20(example\x201580608922)','--verbose','error','3qVDeLY','split','Do\x20not\x20validate\x20input\x20fields\x20on\x20client\x20side','65862bQNePV','setDate','allowExcessArguments','utf-8','371UkVPvM','log','Verbose\x20output','parse','HTTP_PROXY','getCurrentBaseUrl','https://registry.npmjs.org/','replace','9221530ggwbQr','contextProvider','No\x20CLI\x20context\x20present.\x20Create\x20context\x20with\x20\x27northflank\x20login\x27','option','Display\x20help\x20for\x20command','72kgrpoK','storeOptionsAsProperties','21108065rPwzIM','194196eqiVrz','getDate','No\x20token\x20in\x20CLI\x20context.\x20Add\x20token\x20with\x20\x27northflank\x20set-token\x27','Invalid\x20date\x20received:\x20','yellow','--quiet','env','then','/latest','timeout','padEnd','length'];a16X=function(){return M;};return a16X();}import{fileURLToPath}from'url';import{dirname,join}from'path';const __filename=fileURLToPath(import.meta[a16C(0x17d)]),__dirname=dirname(__filename),pgk=JSON[a16C(0x191)](readFileSync(join(__dirname,'../package.json'),a16C(0x18d)));export const customUserAgent=a16C(0x16b)+pgk?.[a16C(0x178)];export const agent=new ProxyAgent();export const proxyEnvsSet=process[a16C(0x163)][a16C(0x192)]!==undefined||process[a16C(0x163)][a16C(0x172)]!==undefined;export const decodeJwtPayload=X=>{const s=a16C;try{const j=O=>{const B=a16j,F=O[B(0x195)](/-/g,'+')[B(0x195)](/_/g,'/')[B(0x167)](O[B(0x168)]+(0x4-O[B(0x168)]%0x4)%0x4,'=');return JSON[B(0x191)](Buffer[B(0x183)](F,B(0x174))[B(0x173)]());},[V,H]=X[s(0x188)]('.');return j(H);}catch(O){return{};}};export async function checkUpdate(X){const y=a16C;function j(V,H){const S=a16j,O=new Date(Number(V));return O[S(0x18b)](O[S(0x15e)]()+H),O;}try{if(j(X[y(0x180)](),0x1)>new Date())return;const V=pgk[y(0x178)],{name:H}=pgk;if(!V)return;const O=y(0x194)+H+y(0x165),F=await a16H(O,{'agent':agent,'method':y(0x171),'signal':AbortSignal[y(0x166)](0x1388)}),h=(await F[y(0x16e)]())['version'];needsUpdate(V,h)&&warning(y(0x16a)+V+',\x20the\x20latest\x20version\x20of\x20the\x20cli\x20is\x20'+h+'.'+('\x20Consider\x20updating\x20using\x20\x27npm\x20i\x20'+H+'\x20-g\x27\x20or\x20\x27yarn\x20global\x20add\x20'+H+'\x27\x20**')),await X[y(0x182)](new Date());}catch(P){}}function needsUpdate(X,j){const e=a16C,V=/(\.0+)+$/,H=X[e(0x195)](V,'')[e(0x188)]('.'),O=j[e(0x195)](V,'')[e(0x188)]('.');for(let F=0x0;F<Math['min'](H[e(0x168)],O[e(0x168)]);F+=0x1){const h=parseInt(O[F],0xa)-parseInt(H[F],0xa);if(h>0x0)return!![];if(h<0x0)return![];}return O[e(0x168)]>H[e(0x168)];}export function error(X){const A=a16C;console[A(0x186)](a16V[A(0x17c)](A(0x169)+X));}export function warning(X){const l=a16C;console['error'](a16V[l(0x161)](''+X));}export function success(X){const T=a16C;console[T(0x18f)](a16V[T(0x176)](''+X));}export function getCommand(X=![]){const W=a16C,j=new Command();return j['helpOption'](undefined,W(0x159)),j['addHelpCommand'](![]),j[W(0x15b)](![]),j[W(0x177)](![]),j[W(0x18c)](![]),j['enablePositionalOptions'](!![]),X&&(j['option'](W(0x185),W(0x190),![]),j[W(0x158)](W(0x162),'No\x20console\x20output',![]),j[W(0x158)](W(0x17a),W(0x189),![])),j;}export const retry=(X,j=0x32)=>V=>{let H=X;const O=async()=>{try{return await V();}catch(F){if(H<=0x0)throw F;return H-=0x1,await new Promise(h=>setTimeout(()=>h(),j)),O();}};return O();};export const asyncSequential=async(X,j)=>{const v=a16C,V=Promise['resolve']([]);return X[v(0x17b)]((H,O)=>H[v(0x164)](F=>j(O)[v(0x164)](h=>{return F['push'](h),F;})),V);};export function isValidJSON(X){const G=a16C;try{return JSON[G(0x191)](X);}catch(j){return![];}}export function assertContextExisting(X){const d=a16C;if(X[d(0x197)][d(0x175)]()===undefined)throw new Error(d(0x157));if(X['contextProvider'][d(0x193)]()===undefined)throw new Error('No\x20API\x20URL\x20present\x20in\x20context.\x20Create\x20new\x20context\x20with\x20\x27northflank\x20login\x27');if(X['contextProvider'][d(0x170)]()===undefined)throw new Error(d(0x15f));}function a16j(X,j){const V=a16X();return a16j=function(H,O){H=H-0x157;let F=V[H];return F;},a16j(X,j);}export const parseDateInput=X=>{const x=a16C;try{let j=new Date(X);if(isNaN(j[x(0x17f)]())){const V=X[x(0x168)]===0xd?X/0x3e8:X,H=new Date(0x0);H[x(0x16c)](V);if(isNaN(H[x(0x17f)]()))throw new Error();return H;}return j;}catch(O){throw new Error(x(0x160)+X+x(0x184));}};export const tsHint=a16C(0x16f);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@northflank/cli",
3
- "version": "0.10.10",
3
+ "version": "0.10.12",
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,6 +27,7 @@
27
27
  "LICENSE"
28
28
  ],
29
29
  "dependencies": {
30
+ "@northflank/js-client": "0.8.9",
30
31
  "bufferutil": "^4.0.9",
31
32
  "chalk": "~5.6.2",
32
33
  "columnify": "^1.6.0",