@northflank/cli 0.10.15 → 0.11.0

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 a14r=a14N;(function(x,N){const O=a14N,w=x();while(!![]){try{const Y=-parseInt(O(0x1c3))/0x1+parseInt(O(0x1b0))/0x2*(parseInt(O(0x1ab))/0x3)+parseInt(O(0x1bf))/0x4+parseInt(O(0x1ba))/0x5*(-parseInt(O(0x1c0))/0x6)+-parseInt(O(0x1ad))/0x7+parseInt(O(0x1bb))/0x8+-parseInt(O(0x1be))/0x9*(parseInt(O(0x1b7))/0xa);if(Y===N)break;else w['push'](w['shift']());}catch(L){w['push'](w['shift']());}}}(a14x,0xe59b4));import a14w from'inquirer/lib/prompts/list.js';import a14Y from'inquirer/lib/objects/choice.js';function a14N(x,N){const w=a14x();return a14N=function(Y,L){Y=Y-0x1ab;let t=w[Y];return t;},a14N(x,N);}import a14L from'chalk';function a14x(){const Q=['11204056OYcSWW','loadMore','choices','11871oRqbIZ','6271848IdHZpT','366SnNcWl','run','length','960377enhVgq','selected','onDownKey','map','render','opt','name','Method\x20not\x20implemented','italic','3bOaahc','loop','4398583lYUqyR','handleDynamicPageLoad','push','3659464qgEQlb','..\x20Load\x20more\x20options\x20..','reloadText','nextPageCursor','splice','down','pagOpt','16430PyAovy','loading','realLength','8350NObJBb'];a14x=function(){return Q;};return a14x();}function incrementListIndex(x,N,w){const v=a14N,Y=w[v(0x1bd)][v(0x1b9)],L=v(0x1ac)in w?Boolean(w[v(0x1ac)]):!![];if(N==='up'){if(x>0x0)return x-0x1;return L?Y-0x1:x;}if(N===v(0x1b5)){if(x<Y-0x1)return x+0x1;return L?0x0:x;}throw new Error('dir\x20must\x20be\x20up\x20or\x20down');}export class DynamicReloadPaginationPrompt extends a14w{[a14r(0x1b2)]=a14L[a14r(0x1cb)](a14r(0x1b1));[a14r(0x1b6)];['loading']=![];[a14r(0x1b3)];constructor(x,N,w){const a=a14r;super(x,N,w),this[a(0x1b6)]=this[a(0x1c8)],this['nextPageCursor']=this[a(0x1b6)][a(0x1b3)],this[a(0x1b3)]!==undefined&&this['opt'][a(0x1bd)][a(0x1af)](new a14Y(this[a(0x1b2)],this[a(0x1b2)]));}[a14r(0x1c1)](){const f=a14r;return console['log'](f(0x1ca)),Promise['resolve']();}['onUpKey'](){const p=a14r;if(this['loading'])return;this[p(0x1c4)]=incrementListIndex(this[p(0x1c4)],'up',this[p(0x1c8)]),this[p(0x1c7)]();}async[a14r(0x1c5)](){const j=a14r;if(this[j(0x1b8)])return;this[j(0x1c4)]=incrementListIndex(this[j(0x1c4)],j(0x1b5),this['opt']),await this[j(0x1ae)](),this[j(0x1c7)]();}async[a14r(0x1ae)](){const K=a14r;if(this[K(0x1c4)]>=this[K(0x1c8)][K(0x1bd)]['length']-0x1){if(this[K(0x1b3)]===undefined)return;this[K(0x1b8)]=!![];let x=0x0;const N=setInterval(()=>{const i=K,t=['⠋','⠙','⠹','⠸','⠼','⠴','⠦','⠧','⠇','⠏'],c=a14L[i(0x1cb)](t[x%t[i(0x1c2)]]+'\x20Loading\x20more\x20options');this[i(0x1c8)][i(0x1bd)][i(0x1bd)][this[i(0x1c4)]][i(0x1c9)]=''+c,x+=0x1,this[i(0x1c7)]();},0x50),{elements:w,nextPageCursor:Y}=await this[K(0x1b6)][K(0x1bc)]({'nextPageCursor':this[K(0x1b3)]})['catch'](()=>({'elements':[],'nextPageCursor':undefined}));this['nextPageCursor']=Y;const L=w[K(0x1c6)](t=>new a14Y(t,t));this[K(0x1c8)][K(0x1bd)]['choices'][K(0x1b4)](this[K(0x1c4)],0x1),this[K(0x1c8)][K(0x1bd)][K(0x1af)](...L),Y!==undefined&&this[K(0x1c8)]['choices'][K(0x1af)](new a14Y(this['reloadText'],this[K(0x1b2)])),clearInterval(N),this[K(0x1b8)]=![];}}}
1
+ function a14l(){const x=['italic','loading','42nCmZqw','4PzpIHQ','length','112912pJYTVP','pagOpt','1766604rMIYQF','handleDynamicPageLoad','onUpKey','push','name','opt','367181MnKohi','render','realLength','onDownKey','map','\x20Loading\x20more\x20options','down','66267VAGUpW','11iBXNha','nextPageCursor','reloadText','selected','5112790LuuPrw','1843375JuOhbU','2tYOnMO','loop','3812148avHJor','choices','splice','..\x20Load\x20more\x20options\x20..','catch'];a14l=function(){return x;};return a14l();}function a14e(l,e){const s=a14l();return a14e=function(f,i){f=f-0x18f;let c=s[f];return c;},a14e(l,e);}const a14b=a14e;(function(l,e){const Y=a14e,s=l();while(!![]){try{const f=-parseInt(Y(0x198))/0x1*(-parseInt(Y(0x1a6))/0x2)+parseInt(Y(0x192))/0x3+-parseInt(Y(0x1b0))/0x4*(parseInt(Y(0x1a5))/0x5)+-parseInt(Y(0x1a8))/0x6+-parseInt(Y(0x1af))/0x7*(parseInt(Y(0x190))/0x8)+-parseInt(Y(0x19f))/0x9+-parseInt(Y(0x1a4))/0xa*(-parseInt(Y(0x1a0))/0xb);if(f===e)break;else s['push'](s['shift']());}catch(i){s['push'](s['shift']());}}}(a14l,0x5aa30));import a14s from'inquirer/lib/prompts/list.js';import a14f from'inquirer/lib/objects/choice.js';import a14i from'chalk';function incrementListIndex(l,e,s){const T=a14e,f=s['choices'][T(0x19a)],i=T(0x1a7)in s?Boolean(s[T(0x1a7)]):!![];if(e==='up'){if(l>0x0)return l-0x1;return i?f-0x1:l;}if(e===T(0x19e)){if(l<f-0x1)return l+0x1;return i?0x0:l;}throw new Error('dir\x20must\x20be\x20up\x20or\x20down');}export class DynamicReloadPaginationPrompt extends a14s{[a14b(0x1a2)]=a14i[a14b(0x1ad)](a14b(0x1ab));[a14b(0x191)];['loading']=![];['nextPageCursor'];constructor(l,e,s){const q=a14b;super(l,e,s),this['pagOpt']=this['opt'],this[q(0x1a1)]=this[q(0x191)][q(0x1a1)],this['nextPageCursor']!==undefined&&this['opt'][q(0x1a9)][q(0x195)](new a14f(this[q(0x1a2)],this[q(0x1a2)]));}[a14b(0x194)](){const t=a14b;if(this[t(0x1ae)])return;this['selected']=incrementListIndex(this[t(0x1a3)],'up',this[t(0x197)]),this[t(0x199)]();}async[a14b(0x19b)](){const J=a14b;if(this['loading'])return;this[J(0x1a3)]=incrementListIndex(this[J(0x1a3)],'down',this[J(0x197)]),await this[J(0x193)](),this[J(0x199)]();}async[a14b(0x193)](){const N=a14b;if(this[N(0x1a3)]>=this[N(0x197)][N(0x1a9)]['length']-0x1){if(this[N(0x1a1)]===undefined)return;this[N(0x1ae)]=!![];let l=0x0;const e=setInterval(()=>{const Z=N,a=['⠋','⠙','⠹','⠸','⠼','⠴','⠦','⠧','⠇','⠏'],D=a14i[Z(0x1ad)](a[l%a[Z(0x18f)]]+Z(0x19d));this['opt'][Z(0x1a9)][Z(0x1a9)][this[Z(0x1a3)]][Z(0x196)]=''+D,l+=0x1,this[Z(0x199)]();},0x50),{elements:s,nextPageCursor:f}=await this[N(0x191)]['loadMore']({'nextPageCursor':this[N(0x1a1)]})[N(0x1ac)](()=>({'elements':[],'nextPageCursor':undefined}));this[N(0x1a1)]=f;const c=s[N(0x19c)](a=>new a14f(a,a));this['opt']['choices'][N(0x1a9)][N(0x1aa)](this[N(0x1a3)],0x1),this[N(0x197)]['choices']['push'](...c),f!==undefined&&this[N(0x197)][N(0x1a9)][N(0x195)](new a14f(this['reloadText'],this[N(0x1a2)])),clearInterval(e),this[N(0x1ae)]=![];}}}
@@ -1 +1 @@
1
- const a15M=a15N;(function(x,N){const C=a15N,w=x();while(!![]){try{const Y=-parseInt(C(0x11c))/0x1+parseInt(C(0x104))/0x2*(parseInt(C(0x12d))/0x3)+parseInt(C(0x10f))/0x4+-parseInt(C(0x12e))/0x5*(parseInt(C(0x137))/0x6)+parseInt(C(0x11d))/0x7+-parseInt(C(0xf9))/0x8*(parseInt(C(0x11f))/0x9)+-parseInt(C(0xef))/0xa;if(Y===N)break;else w['push'](w['shift']());}catch(L){w['push'](w['shift']());}}}(a15x,0x5f665));import{ApiClient}from'@northflank/js-client';import a15w 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 a15x(){const U=['win32','4735784PwHICq','Port-forwarding\x20for\x20Northflank\x20services\x20and\x20addons.','\x27\x20of\x20','with\x20hostname:\x20','C:/Windows/System32/drivers/etc/hosts','fwd','entries','portName','type','Addon\x20to\x20forward','Services:','10GEffAw','forward','action','askForProject','Failed:\x20','hostnames','addon','join','portFwdCmd','Addons:','green','2592808fnMwTp','log','getCurrentProjectName','\x20is\x20running\x20and\x20reachable\x20and\x20that\x20a\x20port\x20is\x20defined\x20on\x20the\x20networking\x20section.','\x20flag\x20or\x20manually\x20append\x20following\x20entry\x20to\x20your\x20hosts\x20file\x20(','platform','Forwarding\x20service\x20','addCommand','filter',',\x20hostname:\x20','darwin','\x20to\x20','--addon\x20--addonId\x20[NAME]','592571SlAzcj','5269684amYVFY','skipHostnamesText','9OZZbVa','>\x20Instance\x20\x27','port','hosts','exit','http://','error','getProxyForwarder','forwardProject','flat','Running\x20on\x20macOS\x20in\x20','\x20is\x20exposed\x20on\x20','bold','canExecuteWithHostnames','290778TnhmjW','5qxNpOp','SIGINT','--project\x20--projectId\x20[NAME]','Connection\x20error\x20occurred\x20when\x20forwarding\x20\x27','flatMap','reset','length','/etc/hosts','message','1358166eHSeNG','protocol','description','data','greenBright','data.id','map','Project\x20for\x20forwarding','Only\x20expose\x20on\x20IP\x20address,\x20not\x20on\x20hostnames.\x20With\x20this\x20option,\x20no\x20root\x20permissions\x20are\x20required.','\x20\x20If\x20you\x20have\x20added\x20entries\x20to\x20your\x20hosts\x20file,\x20it\x20is\x20recommended\x20to\x20remove\x20them\x20again\x20now.','askForAddon','\x20\x20-\x20Address:\x20','\x20with\x20these\x20hostnames:','\x20in\x20project\x20','printHostsFileHint','\x20addon\x20ports','name','\x20\x20\x20\x20\x20\x20\x20\x20\x20','printForwardingInfo','--noDefaults','alias','project\x20for\x20forwarding','forwardAddon','--instance\x20--instanceId\x20[NAME]','Don\x27t\x20use\x20context\x20default\x20values,\x20explicitly\x20use\x20options\x20or\x20ask.','askForService','\x20service\x20ports','\x20\x20\x20No\x20running\x20container\x20found\x20for\x20','getCurrentServiceName','Forwarding\x20','\x20with\x20multiple\x20ports:','apiClient','service','forwardService','Error\x20occured\x20while\x20trying\x20to\x20forward\x20','Cleaning\x20up\x20open\x20connections\x20failed:\x20','noDefaultsText','--service\x20--serviceId\x20[NAME]','option','Port-forwarding\x20for\x20the\x20specified\x20addon','839820QCNwzu','No\x20services\x20and\x20addons\x20to\x20forward\x20found\x20in\x20project\x20','\x20-\x20','address','forEach','forwarding','--skipHostnames','Please\x20ensure\x20the\x20','\x27:\x20\x22'];a15x=function(){return U;};return a15x();}function a15N(x,N){const w=a15x();return a15N=function(Y,L){Y=Y-0xd0;let t=w[Y];return t;},a15N(x,N);}import{EOL}from'os';export class CliPortForward{[a15M(0x10c)];[a15M(0xe6)];[a15M(0xeb)]=a15M(0xdf);['skipHostnamesText']=a15M(0x13f);constructor(x,N){const e=a15M;this[e(0xe6)]=new ApiClient(x,{'throwErrorOnHttpErrorCode':!![],'customUserAgent':customUserAgent,'agent':N});const w=new InquirerHelper(this[e(0xe6)]);this[e(0x10c)]=getCommand()[e(0xd7)](e(0x105))[e(0xdb)](e(0xfe))['description'](e(0xfa));const Y=getCommand(!![])[e(0xd7)]('all')['description']('Port-forwarding\x20for\x20all\x20services\x20and\x20addons\x20in\x20the\x20given\x20project')[e(0xed)](e(0x130),e(0xdc))[e(0xed)](e(0xda),this[e(0xeb)],![])['option'](e(0xf5),this[e(0x11e)],![])[e(0x106)](async({noDefaults:c,projectId:O,skipHostnames:v})=>{const F=e;assertContextExisting(this[F(0xe6)]);const r=this['getProxyForwarder'](v),a=c?undefined:x['getCurrentProjectName'](),f=O||a||await w[F(0x107)]();try{const {services:p,addons:j}=await r[F(0x127)]({'projectId':f},v);if(p['length']+j[F(0x134)]<=0x0)warning(F(0xf0)+a15w['bold'](f));else{const K=p[F(0x117)](k=>k[F(0x134)]>0x0)[F(0x134)],i=j[F(0x117)](k=>k['length']>0x0)[F(0x134)],Q='\x20in\x20project\x20'+a15w[F(0x12b)](f);console[F(0x110)](F(0xe4)+a15w[F(0x10e)][F(0x12b)](K+F(0xe1))+'\x20and\x20'+a15w['green'][F(0x12b)](i+F(0xd6))+Q),console['log'](),console[F(0x110)](a15w[F(0x12b)](F(0x103))),p[F(0xf3)](k=>{const G=F;if(k[G(0x134)]>=0x1&&!k[0x0][G(0x125)])this[G(0xd9)](k,{'type':G(0xe7),'name':k[0x0][G(0x13a)]['id']},v);}),console['log'](a15w[F(0x12b)](F(0x10d))),j['forEach'](k=>{const I=F;if(k[I(0x134)]>=0x1&&!k[0x0][I(0x125)])this['printForwardingInfo'](k,{'type':I(0x10a),'name':k[0x0]['data']['id']},v);}),this[F(0xd5)]([...p[F(0x128)](),...j[F(0x128)]()],v);}}catch(k){error(F(0x108)+k['message']);}}),L=getCommand(!![])[e(0xd7)](e(0xe7))[e(0x139)]('Port-forwarding\x20for\x20the\x20specified\x20service')['option']('--project\x20--projectId\x20[NAME]',e(0x13e))[e(0xed)](e(0xec),'Service\x20to\x20forward')['option'](e(0xde),'Instance\x20to\x20forward')[e(0xed)](e(0xda),this['noDefaultsText'],![])[e(0xed)](e(0xf5),this[e(0x11e)],![])[e(0x106)](async({noDefaults:c,projectId:O,serviceId:v,instanceId:r,skipHostnames:a})=>{const A=e;assertContextExisting(this[A(0xe6)]);const f=this[A(0x126)](a),p=c?undefined:x[A(0x111)](),j=O||p||await w[A(0x107)](),K=c?undefined:x[A(0xe3)](),i=v||K||await w[A(0xe0)](j)();console['log'](A(0x115)+a15w['bold'](i)+A(0xd4)+a15w['bold'](j));try{const Q=await f[A(0xe8)]({'projectId':j,'serviceId':i,'instanceId':r},a);this[A(0xd9)](Q,{'name':i,'type':A(0xe7),'instanceId':r},a),this[A(0xd5)](Q,a);}catch(k){error(A(0x108)+k['message']);}}),t=getCommand(!![])[e(0xd7)](e(0x10a))[e(0x139)](e(0xee))['option']('--project\x20--projectId\x20[NAME]','Project\x20for\x20forwarding')[e(0xed)](e(0x11b),e(0x102))['option'](e(0xf5),this[e(0x11e)],![])[e(0x106)](async({noDefaults:c,projectId:O,addonId:v,skipHostnames:r})=>{const P=e;assertContextExisting(this['apiClient']);const a=this[P(0x126)](r),f=c?undefined:x[P(0x111)](),p=O||f||await w[P(0x107)](),j=v||await w[P(0xd1)](p)();console[P(0x110)]('Forwarding\x20addon\x20'+a15w[P(0x12b)](j)+P(0xd4)+a15w[P(0x12b)](p));try{const K={'projectId':p,'addonId':j},i=await a[P(0xdd)](K,r);this[P(0xd9)](i,{'name':j,'type':'addon'},r),this[P(0xd5)](i,r);}catch(Q){error('Failed:\x20'+Q[P(0x136)]);}});this[e(0x10c)][e(0x116)](Y),this[e(0x10c)][e(0x116)](L),this['portFwdCmd'][e(0x116)](t);}[a15M(0x126)](x=![]){const y=a15M,N=this[y(0xe6)][y(0xf4)];if(!x){const w=N[y(0x12c)]();if(w[y(0x125)])throw new Error(w[y(0x136)]);}return N['on']('tunnel-close',(Y,L)=>{const b=y,t=a15w[b(0x12b)](L[b(0x101)]+'\x20\x27'+L['id']+'\x27'),c=L[b(0x109)][b(0x134)]>0x0;warning('Stop\x20forwarding\x20traffic\x20from\x20'+L[b(0xf2)]+':'+L[b(0x121)]+b(0x11a)+t),x&&c&&warning(b(0xd0));}),N['on']('connection-error',(Y,L,t)=>{const z=y;warning(z(0x131)+L[z(0xf2)]+':'+L[z(0x121)]+z(0xf7)+t?.[z(0x136)]+'\x22');}),process['on'](y(0x12f),async()=>{const Z=y;try{await N['stop']();}catch(Y){error(Z(0xea)+Y[Z(0x136)]);}finally{process[Z(0x123)]();}}),N;}[a15M(0xd9)](x,N,w=![]){const g=a15M,{type:Y,name:L,instanceId:t}=N;if(x['length']<=0x0){const r=g(0xf6)+N[g(0x101)]+g(0x112);warning(g(0xe2)+Y+'\x20'+a15w[g(0x12b)](L)+'.\x20'+r);return;}const c=groupBy(x,g(0x13c)),O=a=>'\x20('+(a['portName']?a[g(0x100)]+g(0xf1):'')+a[g(0x138)]+')';function v(a,f=0x2){const T=g;if(!w){const p=a[T(0x138)]==='HTTP'?T(0x124):'';a['hostnames'][T(0xf3)](j=>{const R=T;console[R(0x110)](repeat('\x20',f)+'-\x20'+p+j+':'+a[R(0x121)]);});}}Object[g(0xff)](c)[g(0xf3)](([a,f])=>{const W=g,p=t?W(0x120)+a15w[W(0x13b)][W(0x12b)](t)+W(0xfb)+Y+'\x20\x27'+a15w[W(0x13b)][W(0x12b)](a)+'\x27':'>\x20'+capitalize(Y)+'\x20\x27'+a15w[W(0x13b)][W(0x12b)](a)+'\x27';if(Y==='addon'){if(f[W(0x134)]===0x1){const j=f[0x0];if(j[W(0x125)]){error(W(0xe9)+a+':\x20'+j[W(0x125)][W(0x136)]);return;}const K=j[W(0x13a)],i=!w?'\x20'+a15w[W(0x133)](W(0xfc)+K[W(0x109)][W(0x10b)](',')):'';success(p+W(0x12a)+K[W(0xf2)]+':'+K['port']+O(K)+i);}else{const Q=uniqBy(f,k=>k?.[W(0x13a)]?.['hostnames']?.[W(0x10b)](','))[W(0x134)]>0x1;success(p+'\x20is\x20exposed\x20with\x20multiple\x20'+(Q?W(0x122):'ports')+':'),f[W(0xf3)](k=>{const o=W;if(k['error']){error(o(0xe9)+a+':\x20'+k[o(0x125)][o(0x136)]);return;}const d=k[o(0x13a)],J=!w?o(0x118)+d['hostnames'][o(0x10b)](','):'';console[o(0x110)](o(0xd2)+d[o(0xf2)]+':'+d[o(0x121)]+O(d)+J);});}}if(Y===W(0xe7)){if(f[W(0x134)]===0x1){const k=f[0x0];if(k[W(0x125)]){error('Error\x20occured\x20while\x20trying\x20to\x20forward\x20'+a+':\x20'+k[W(0x125)][W(0x136)]);return;}const d=k[W(0x13a)],J=!w?W(0xd3):':',X=d[W(0xf2)]+':'+d[W(0x121)]+O(d);success(p+W(0x12a)+X+J),v(d);}else success(p+'\x20is\x20exposed\x20on\x20'+f[0x0]?.['data']?.['address']+W(0xe5)),f[W(0xf3)](H=>{const q=W;if(H[q(0x125)]){error('Error\x20occured\x20while\x20trying\x20to\x20forward\x20'+a+':\x20'+H[q(0x125)][q(0x136)]);return;}const u=H['data'];success('\x20\x20-\x20port\x20'+u[q(0x121)]+O(u)),v(u,0x4);});}});}[a15M(0xd5)](x,N=![]){const D=a15M;if(N){const w=x[D(0x132)](a=>a[D(0x13a)])[D(0x117)](a=>a!==undefined),Y=process?.[D(0x114)]===D(0xf8),L=a15Y[D(0x114)]()===D(0x119),t=Y?D(0xfd):D(0x135),c=a15w[D(0x12b)]('skipHostnames'),O=L?EOL+D(0x129)+c+'\x20mode:\x20the\x20locally\x20forwarded\x20port\x20differs\x20from\x20the\x20actual\x20port\x20on\x20the\x20forwarded\x20service/addon.':undefined;let v='Running\x20in\x20'+c+'\x20mode.\x20If\x20hostname\x20forwarding\x20is\x20required,\x20remove\x20'+D(0xf5)+D(0x113)+t+'):';O!==undefined&&warning(O??'');warning(v);const r=w[D(0x13d)](a=>a[D(0xf2)]+D(0xd8)+a[D(0x109)][D(0x10b)]('\x20'));console['log'](uniq(r)[D(0x10b)](EOL)),console['log']();}}}
1
+ const a15B=a15e;(function(l,e){const F=a15e,s=l();while(!![]){try{const f=parseInt(F(0x11a))/0x1*(parseInt(F(0x168))/0x2)+-parseInt(F(0x166))/0x3+parseInt(F(0x14f))/0x4*(-parseInt(F(0x159))/0x5)+parseInt(F(0x129))/0x6*(parseInt(F(0x154))/0x7)+-parseInt(F(0x17b))/0x8+parseInt(F(0x17d))/0x9*(parseInt(F(0x152))/0xa)+parseInt(F(0x16f))/0xb;if(f===e)break;else s['push'](s['shift']());}catch(i){s['push'](s['shift']());}}}(a15l,0x7bb1a));function a15e(l,e){const s=a15l();return a15e=function(f,i){f=f-0x109;let c=s[f];return c;},a15e(l,e);}import{ApiClient}from'@northflank/js-client';import a15s from'chalk';import{assertContextExisting,customUserAgent,error,getCommand,success,warning}from'../utils.js';import{InquirerHelper}from'../inquirer-helper.js';import*as a15f from'os';function a15l(){const n=['address','service','askForAddon','--addon\x20--addonId\x20[NAME]','Forwarding\x20','forward','>\x20Instance\x20\x27','platform','connection-error','\x20\x20-\x20Address:\x20','askForProjectContext','name','Forwarding\x20service\x20','log','askForProject','--noDefaults','getCurrentServiceName','entries','noDefaultsText','flatMap','Forwarding\x20addon\x20','length','124KoSLfD','\x20is\x20exposed\x20on\x20','stop','890150NCenbc','action','133IUezIQ','askForService','\x20flag\x20or\x20manually\x20append\x20following\x20entry\x20to\x20your\x20hosts\x20file\x20(','forEach','\x27:\x20\x22','21355ZZpZJZ',',\x20hostname:\x20','Stop\x20forwarding\x20traffic\x20from\x20','greenBright','\x20with\x20these\x20hostnames:','option','win32','hosts','Project\x20for\x20forwarding','Failed:\x20','green','No\x20services\x20and\x20addons\x20to\x20forward\x20found\x20in\x20project\x20','--instance\x20--instanceId\x20[NAME]','1471299ljtwLC','skipHostnames','5418iGgFMb','\x20in\x20project\x20','data','Team\x20for\x20forwarding','/etc/hosts','description','\x20and\x20','5211019yvOEhT','\x20mode:\x20the\x20locally\x20forwarded\x20port\x20differs\x20from\x20the\x20actual\x20port\x20on\x20the\x20forwarded\x20service/addon.','tunnel-close','--skipHostnames','protocol','Services:','forwardProject','addCommand','bold','askForTeam','reset','Cleaning\x20up\x20open\x20connections\x20failed:\x20','8079744ZrxGHW','printForwardingInfo','9MkPDbQ','Port-forwarding\x20for\x20the\x20specified\x20service','fwd','alias','\x20addon\x20ports','\x20\x20-\x20port\x20','http://','--team\x20--teamId\x20[TEAMID]','\x20\x20\x20\x20\x20\x20\x20\x20\x20','Addons:','Connection\x20error\x20occurred\x20when\x20forwarding\x20\x27','getProxyForwarder','Service\x20to\x20forward','Addon\x20to\x20forward','forwardService','forwarding','contextProvider','portFwdCmd','skipHostnamesText','darwin','Error\x20occured\x20while\x20trying\x20to\x20forward\x20','331YfAVIa','addon','hostnames','portName','Don\x27t\x20use\x20context\x20default\x20values,\x20explicitly\x20use\x20options\x20or\x20ask.','getBaseCommand','canExecuteWithHostnames','\x20with\x20multiple\x20ports:','\x20-\x20','SIGINT','\x20mode.\x20If\x20hostname\x20forwarding\x20is\x20required,\x20remove\x20','\x20\x20\x20No\x20running\x20container\x20found\x20for\x20','error','flat','Port-forwarding\x20for\x20all\x20services\x20and\x20addons\x20in\x20the\x20given\x20project','214746VhwbDs','getCurrentProjectName','port','apiClient','C:/Windows/System32/drivers/etc/hosts','--project\x20--projectId\x20[NAME]','Running\x20on\x20macOS\x20in\x20','filter','data.id','join','getTokenScope','Please\x20ensure\x20the\x20','message','org','printHostsFileHint','type'];a15l=function(){return n;};return a15l();}import{uniqBy,uniq,repeat,groupBy,capitalize}from'lodash-es';import{EOL}from'os';export class CliPortForward{['portFwdCmd'];[a15B(0x12c)];['noDefaultsText']=a15B(0x11e);[a15B(0x117)]='Only\x20expose\x20on\x20IP\x20address,\x20not\x20on\x20hostnames.\x20With\x20this\x20option,\x20no\x20root\x20permissions\x20are\x20required.';constructor(l,e){const k=a15B;this[k(0x12c)]=new ApiClient(l,{'throwErrorOnHttpErrorCode':!![],'customUserAgent':customUserAgent,'agent':e});const s=new InquirerHelper(this['apiClient']);this[k(0x116)]=getCommand()[k(0x144)](k(0x13e))[k(0x180)](k(0x17f))[k(0x16d)]('Port-forwarding\x20for\x20Northflank\x20services\x20and\x20addons.');const f=this['getBaseCommand']()[k(0x144)]('all')[k(0x16d)](k(0x128))['option'](k(0x148),this[k(0x14b)],![])[k(0x15e)]('--skipHostnames',this[k(0x117)],![])['action'](async({noDefaults:a,teamId:D,projectId:Y,skipHostnames:T})=>{const v=k;assertContextExisting(this['apiClient']);const b=this[v(0x110)](T),q=a?undefined:l[v(0x12a)](),{projectId:t,teamId:J}=await this['askForProjectContext'](l,s,D,Y,q);try{const {services:N,addons:Z}=await b[v(0x175)]({'teamId':J,'projectId':t},T);if(N[v(0x14e)]+Z['length']<=0x0)warning(v(0x164)+a15s[v(0x177)](t));else{const x=N[v(0x130)](o=>o['length']>0x0)[v(0x14e)],g=Z[v(0x130)](o=>o[v(0x14e)]>0x0)[v(0x14e)],S=v(0x169)+a15s[v(0x177)](t);console[v(0x146)](v(0x13d)+a15s[v(0x163)][v(0x177)](x+'\x20service\x20ports')+v(0x16e)+a15s[v(0x163)][v(0x177)](g+v(0x109))+S),console[v(0x146)](),console['log'](a15s[v(0x177)](v(0x174))),N[v(0x157)](o=>{const r=v;if(o[r(0x14e)]>=0x1&&!o[0x0][r(0x126)])this['printForwardingInfo'](o,{'type':r(0x13a),'name':o[0x0]['data']['id']},T);}),console[v(0x146)](a15s['bold'](v(0x10e))),Z[v(0x157)](o=>{const W=v;if(o[W(0x14e)]>=0x1&&!o[0x0][W(0x126)])this['printForwardingInfo'](o,{'type':'addon','name':o[0x0][W(0x16a)]['id']},T);}),this[v(0x137)]([...N[v(0x127)](),...Z[v(0x127)]()],T);}}catch(o){error('Failed:\x20'+o['message']);}}),i=this[k(0x11f)]()['name'](k(0x13a))[k(0x16d)](k(0x17e))[k(0x15e)]('--service\x20--serviceId\x20[NAME]',k(0x111))[k(0x15e)](k(0x165),'Instance\x20to\x20forward')[k(0x15e)](k(0x148),this['noDefaultsText'],![])['option'](k(0x172),this[k(0x117)],![])[k(0x153)](async({noDefaults:a,teamId:D,projectId:Y,serviceId:T,instanceId:b,skipHostnames:q})=>{const u=k;assertContextExisting(this[u(0x12c)]);const t=this[u(0x110)](q),J=a?undefined:l[u(0x12a)](),{projectId:N,teamId:Z}=await this[u(0x143)](l,s,Y,D,J),x=a?undefined:l[u(0x149)](),g=T||x||await s[u(0x155)](N,Z)();console[u(0x146)](u(0x145)+a15s[u(0x177)](g)+u(0x169)+a15s['bold'](N));try{const S=await t[u(0x113)]({'teamId':Z,'projectId':N,'serviceId':g,'instanceId':b},q);this[u(0x17c)](S,{'name':g,'type':'service','instanceId':b},q),this[u(0x137)](S,q);}catch(o){error(u(0x162)+o[u(0x135)]);}}),c=this['getBaseCommand']()[k(0x144)](k(0x11b))[k(0x16d)]('Port-forwarding\x20for\x20the\x20specified\x20addon')[k(0x15e)](k(0x13c),k(0x112))[k(0x15e)](k(0x172),this['skipHostnamesText'],![])[k(0x153)](async({noDefaults:a,teamId:D,projectId:Y,addonId:T,skipHostnames:b})=>{const V=k;assertContextExisting(this['apiClient']);const q=this[V(0x110)](b),t=a?undefined:l[V(0x12a)](),{projectId:J,teamId:N}=await this[V(0x143)](l,s,Y,D,t),Z=T||await s[V(0x13b)](J,N)();console['log'](V(0x14d)+a15s[V(0x177)](Z)+V(0x169)+a15s[V(0x177)](J));try{const x={'teamId':N,'projectId':J,'addonId':Z},g=await q['forwardAddon'](x,b);this[V(0x17c)](g,{'name':Z,'type':'addon'},b),this[V(0x137)](g,b);}catch(S){error(V(0x162)+S['message']);}});this[k(0x116)][k(0x176)](f),this[k(0x116)][k(0x176)](i),this[k(0x116)][k(0x176)](c);}['getBaseCommand']=()=>{const h=a15B,l=getCommand(!![])['option'](h(0x12e),h(0x161));return this[h(0x12c)][h(0x115)][h(0x133)]()===h(0x136)&&l[h(0x15e)](h(0x10c),h(0x16b)),l;};[a15B(0x110)](l=![]){const R=a15B,e=this[R(0x12c)][R(0x114)];if(!l){const s=e[R(0x120)]();if(s[R(0x126)])throw new Error(s[R(0x135)]);}return e['on'](R(0x171),(f,i)=>{const m=R,c=a15s[m(0x177)](i[m(0x138)]+'\x20\x27'+i['id']+'\x27'),a=i[m(0x11c)][m(0x14e)]>0x0;warning(m(0x15b)+i[m(0x139)]+':'+i[m(0x12b)]+'\x20to\x20'+c),l&&a&&warning('\x20\x20If\x20you\x20have\x20added\x20entries\x20to\x20your\x20hosts\x20file,\x20it\x20is\x20recommended\x20to\x20remove\x20them\x20again\x20now.');}),e['on'](R(0x141),(f,i,c)=>{const X=R;warning(X(0x10f)+i[X(0x139)]+':'+i[X(0x12b)]+X(0x158)+c?.['message']+'\x22');}),process['on'](R(0x123),async()=>{const j=R;try{await e[j(0x151)]();}catch(f){error(j(0x17a)+f[j(0x135)]);}finally{process['exit']();}}),e;}[a15B(0x17c)](l,e,s=![]){const d=a15B,{type:f,name:i,instanceId:c}=e;if(l[d(0x14e)]<=0x0){const T=d(0x134)+e['type']+'\x20is\x20running\x20and\x20reachable\x20and\x20that\x20a\x20port\x20is\x20defined\x20on\x20the\x20networking\x20section.';warning(d(0x125)+f+'\x20'+a15s[d(0x177)](i)+'.\x20'+T);return;}const a=groupBy(l,d(0x131)),D=b=>'\x20('+(b['portName']?b[d(0x11d)]+d(0x122):'')+b[d(0x173)]+')';function Y(b,q=0x2){const w=d;if(!s){const t=b[w(0x173)]==='HTTP'?w(0x10b):'';b[w(0x11c)][w(0x157)](J=>{const H=w;console[H(0x146)](repeat('\x20',q)+'-\x20'+t+J+':'+b[H(0x12b)]);});}}Object[d(0x14a)](a)[d(0x157)](([b,q])=>{const M=d,t=c?M(0x13f)+a15s[M(0x15c)]['bold'](c)+'\x27\x20of\x20'+f+'\x20\x27'+a15s[M(0x15c)][M(0x177)](b)+'\x27':'>\x20'+capitalize(f)+'\x20\x27'+a15s[M(0x15c)][M(0x177)](b)+'\x27';if(f===M(0x11b)){if(q[M(0x14e)]===0x1){const J=q[0x0];if(J['error']){error(M(0x119)+b+':\x20'+J['error'][M(0x135)]);return;}const N=J[M(0x16a)],Z=!s?'\x20'+a15s[M(0x179)]('with\x20hostname:\x20'+N[M(0x11c)][M(0x132)](',')):'';success(t+M(0x150)+N[M(0x139)]+':'+N[M(0x12b)]+D(N)+Z);}else{const x=uniqBy(q,g=>g?.['data']?.[M(0x11c)]?.[M(0x132)](','))[M(0x14e)]>0x1;success(t+'\x20is\x20exposed\x20with\x20multiple\x20'+(x?M(0x160):'ports')+':'),q['forEach'](g=>{const A=M;if(g[A(0x126)]){error(A(0x119)+b+':\x20'+g[A(0x126)][A(0x135)]);return;}const S=g[A(0x16a)],o=!s?A(0x15a)+S['hostnames'][A(0x132)](','):'';console[A(0x146)](A(0x142)+S['address']+':'+S['port']+D(S)+o);});}}if(f===M(0x13a)){if(q['length']===0x1){const g=q[0x0];if(g['error']){error(M(0x119)+b+':\x20'+g['error']['message']);return;}const S=g['data'],o=!s?M(0x15d):':',G=S[M(0x139)]+':'+S[M(0x12b)]+D(S);success(t+M(0x150)+G+o),Y(S);}else success(t+M(0x150)+q[0x0]?.[M(0x16a)]?.[M(0x139)]+M(0x121)),q[M(0x157)](I=>{const L=M;if(I[L(0x126)]){error(L(0x119)+b+':\x20'+I['error'][L(0x135)]);return;}const P=I['data'];success(L(0x10a)+P['port']+D(P)),Y(P,0x4);});}});}[a15B(0x137)](l,e=![]){const C=a15B;if(e){const s=l[C(0x14c)](b=>b[C(0x16a)])[C(0x130)](b=>b!==undefined),f=process?.[C(0x140)]===C(0x15f),i=a15f[C(0x140)]()===C(0x118),c=f?C(0x12d):C(0x16c),a=a15s['bold'](C(0x167)),D=i?EOL+C(0x12f)+a+C(0x170):undefined;let Y='Running\x20in\x20'+a+C(0x124)+'--skipHostnames'+C(0x156)+c+'):';D!==undefined&&warning(D??'');warning(Y);const T=s['map'](b=>b[C(0x139)]+C(0x10d)+b[C(0x11c)][C(0x132)]('\x20'));console[C(0x146)](uniq(T)[C(0x132)](EOL)),console[C(0x146)]();}}[a15B(0x143)]=async(l,e,s,f,i)=>{const y=a15B,c=l[y(0x133)]()===y(0x136)?f??await e[y(0x178)]():undefined,a=s||i||await e[y(0x147)](c)();return{'teamId':c,'projectId':a};};}
@@ -0,0 +1 @@
1
+ const a16w=a16e;function a16l(){const n=['Replicate\x20','error','61828JDkjSp','SIGTERM','sshCmd','service','SSH\x20for\x20Northflank\x20services\x20and\x20jobs.','RequestTTY=yes','log','apiClient','\x20\x20>\x20SCP:\x20\x20\x09','2YUHlWD','288XKSlYx','--proxyOnly','Error\x20trying\x20to\x20forward:\x20','scp\x20-P\x20','Team\x20id','39466UaXqra','C:\x5cWindows\x5cSystem32\x5cOpenSSH\x5cssh.exe','findSSH','--instance\x20--instanceName\x20[NAME]','Instance\x20to\x20use\x20for\x20SSH\x20(random\x20instance\x20will\x20be\x20chosen\x20if\x20not\x20specified)','execFileAsync','getCurrentProjectName','charAt','sftp\x20-P\x20','push','Use\x20specific\x20username\x20for\x20SSH\x20connection','--team\x20--teamId\x20[TEAMID]','\x20\x20>\x20RSYNC:\x20\x20\x09','startSSH','\x20hostnames\x20on\x20local\x20machine.\x20Requires\x20sudo\x20permissions','\x20\x20>\x20SSH\x20session:','message','option','Only\x20startup\x20SSH\x20proxy\x20without\x20opening\x20an\x20SSH\x20terminal\x20session.','/usr/local/bin/ssh','1048NqPfpe','stdin','getTokenScope','\x22\x20./data/\x20','root','default-ssh','807264lWjIRg','--noDefaults','34684yhMHbc','15MmPfnf','toString',',\x20stop\x20with\x20Ctrl+C','action','\x20to\x20ssh\x20into','org','portName','name','.\x20Creates\x20an\x20SSH\x20terminal\x20session\x20by\x20default.','getCurrentServiceName','inherit','Establish\x20SSH\x20connectivity\x20to\x20Northflank\x20','1374965xvElJh','Don\x27t\x20use\x20context\x20default\x20values,\x20explicitly\x20use\x20options\x20or\x20ask.','Project\x20of\x20the\x20','blackBright','contextProvider','askForContainer','\x20--','data','exit','7011ZqWILM','isTTY','--project\x20--projectId\x20[NAME]','description','toUpperCase','17510NTuqYa','rsync\x20-avz\x20-e\x20\x22ssh\x20-p\x20','withServiceForwarding','slice','SSH\x20session\x20ended.','SSH\x20proxy\x20started\x20on\x20endpoint:\x20','\x20\x20>\x20SFTP:\x20\x20\x09','find','SSH\x20exited\x20with\x20code:\x20','Must\x20be\x20run\x20in\x20an\x20interactive\x20terminal\x20(TTY\x20required).','517gbVDDI','SIGINT','close','unknown\x20error','\x20-l','Unable\x20to\x20initiate\x20SSH\x20tunnel.\x20Ensure\x20your\x20service\x20is\x20running\x20and\x20has\x20SSH\x20enabled','SSH\x20binary\x20not\x20found.\x20Please\x20install\x20OpenSSH.','\x20file.txt\x20','askForTeam','askForProject','Ctrl+C\x20received\x20-\x20Terminating\x20SSH\x20proxy...'];a16l=function(){return n;};return a16l();}function a16e(l,e){const s=a16l();return a16e=function(f,i){f=f-0xa5;let c=s[f];return c;},a16e(l,e);}(function(l,e){const R=a16e,s=l();while(!![]){try{const f=parseInt(R(0xcf))/0x1*(parseInt(R(0xd8))/0x2)+parseInt(R(0xfb))/0x3*(parseInt(R(0xfa))/0x4)+-parseInt(R(0xaa))/0x5+parseInt(R(0xd9))/0x6*(parseInt(R(0xde))/0x7)+-parseInt(R(0xf2))/0x8*(parseInt(R(0xb3))/0x9)+-parseInt(R(0xb8))/0xa*(-parseInt(R(0xc2))/0xb)+parseInt(R(0xf8))/0xc;if(f===e)break;else s['push'](s['shift']());}catch(i){s['push'](s['shift']());}}}(a16l,0x2436e));import{ApiClient}from'@northflank/js-client';import{assertContextExisting,customUserAgent,error,getCommand,success,warning}from'../utils.js';import{InquirerHelper}from'../inquirer-helper.js';import{spawn}from'child_process';import{execFile}from'child_process';import{promisify}from'util';import a16s from'chalk';export class CliSsh{['sshCmd'];['apiClient'];constructor(l,e){const m=a16e;this[m(0xd6)]=new ApiClient(l,{'throwErrorOnHttpErrorCode':!![],'customUserAgent':customUserAgent,'agent':e});const s=new InquirerHelper(this[m(0xd6)]);this['sshCmd']=getCommand(!![])[m(0xa5)]('ssh')[m(0xb6)](m(0xd3));const f=m(0xd2),i=getCommand(!![])[m(0xa5)](f)[m(0xb6)](m(0xa9)+f+m(0xa6))[m(0xef)](m(0xb5),m(0xac)+f)[m(0xef)]('--'+f+m(0xb0)+f+'Id\x20[NAME]',f[m(0xe5)](0x0)[m(0xb7)]()+f[m(0xbb)](0x1)+m(0xff))[m(0xef)](m(0xe1),m(0xe2))[m(0xef)](m(0xda),m(0xf0),![])[m(0xef)]('--useHostnames',m(0xcd)+f+m(0xec),![])['option']('--user\x20[USER]',m(0xe8))[m(0xef)](m(0xf9),m(0xab),![]);this[m(0xd6)][m(0xae)]['getTokenScope']()===m(0x100)&&i['option'](m(0xe9),m(0xdd));const c=i[m(0xfe)](async a=>{const X=m,{noDefaults:D,teamId:Y,projectId:T,serviceId:b,instanceName:q,proxyOnly:t,useHostnames:J}=a,{user:user='root',quiet:N}=a;assertContextExisting(this[X(0xd6)]);try{const Z=D?undefined:l[X(0xe4)](),{projectId:x,teamId:g}=await this['askForProjectContext'](l,s,T,Y,Z),S=D?undefined:l[X(0xa7)](),o=b||S||await s['askForService'](x,g)(),G=q||await s[X(0xaf)](x,o,undefined,![],g,!![])(),I=process['stdin'][X(0xb4)],P=I&&!t,F={'teamId':g,'projectId':x,'serviceId':o,'instanceId':G,'portsFilter':[0x16]};await this[X(0xd6)]['forwarding'][X(0xba)](F,async B=>{const j=X,k=B[j(0xbf)](V=>V[j(0xb1)]?.[j(0x101)]===j(0xf7));if(k===undefined)throw new Error(j(0xc7));if(k?.[j(0xce)]!==undefined||k?.[j(0xb1)]===undefined)throw new Error(j(0xdb)+(k?.[j(0xce)]?.[j(0xee)]??j(0xc5)));const {address:v,port:r,hostnames:W}=k[j(0xb1)],u=J?W[0x0]??v:v;P?(!N&&success(j(0xbd)+(u+':'+r)+',\x20stop\x20with\x20Ctrl+D'),await this[j(0xeb)]({'address':u,'port':r,'user':user})):(!N?(success(j(0xbd)+(u+':'+r)+j(0xfd)),console['log']('Use\x20with\x20any\x20SSH\x20compatible\x20client.\x20Example\x20usages:'),console['log'](j(0xed)+a16s['blackBright']('ssh\x20'+user+'@'+u+'\x20-p\x20'+r)),console[j(0xd5)](j(0xbe)+a16s[j(0xad)](j(0xe6)+r+'\x20'+user+'@'+u)),console[j(0xd5)](j(0xea)+a16s[j(0xad)](j(0xb9)+r+j(0xf5)+user+'@'+u+':/rsync-test/')),console[j(0xd5)](j(0xd7)+a16s['blackBright'](j(0xdc)+r+j(0xc9)+user+'@'+u+':/remote/path/'))):console[j(0xd5)](user,u,r),await new Promise((V,h)=>{process['on']('SIGINT',()=>{const d=a16e;if(!N)success(d(0xcc));V();}),process['on']('uncaughtException',h);}));},!J);}catch(B){error(''+B['message']);}finally{process[X(0xb2)]();}});this[m(0xd1)]['addCommand'](c);}['execFileAsync']=promisify(execFile);async[a16w(0xe0)](){const H=a16w;try{const {stdout:l}=await this[H(0xe3)]('which',['ssh']);return l['trim']();}catch{const e=['ssh','/usr/bin/ssh',H(0xf1),H(0xdf)];for(const s of e){try{return await this[H(0xe3)](s,['-V']),s;}catch{}}return null;}}async[a16w(0xeb)](l){const M=a16w,e=await this[M(0xe0)]();if(!e)throw new Error(M(0xc8));if(!process[M(0xf3)][M(0xb4)])throw new Error(M(0xc1));const {address:s,port:port=0x16,user:user=M(0xf6),args:args=[],trusted:trusted=!![]}=l,f=[];trusted&&f[M(0xe7)]('-o','StrictHostKeyChecking=no','-o','UserKnownHostsFile=/dev/null','-o','LogLevel=ERROR');user!==M(0xf6)&&f[M(0xe7)]('-o','RemoteCommand=su\x20'+user+M(0xc6),'-o',M(0xd4));const i=spawn(e,['-tt','-p',port[M(0xfc)](),'-l',M(0xf6),...f,...args,s],{'stdio':M(0xa8)});await new Promise((c,a)=>{const A=M;i['on'](A(0xc4),(D,Y)=>{const L=A;if(Y)warning('SSH\x20killed\x20by\x20signal:\x20'+Y);else D!==0x0?warning(L(0xc0)+D):success(L(0xbc));c(D);}),i['on'](A(0xce),D=>{const C=A;a(new Error('Failed\x20to\x20spawn\x20SSH\x20command:\x20'+D[C(0xee)]));}),process['on']('SIGINT',()=>i['kill'](A(0xc3))),process['on'](A(0xd0),()=>i['kill'](A(0xd0)));});}['askForProjectContext']=async(l,e,s,f,i)=>{const y=a16w,c=l[y(0xf4)]()===y(0x100)?f??await e[y(0xca)]():undefined,a=s||i||await e[y(0xcb)](c)();return{'teamId':c,'projectId':a};};}
package/dist/utils.js CHANGED
@@ -1 +1 @@
1
- const a16r=a16N;(function(x,N){const v=a16N,w=x();while(!![]){try{const Y=parseInt(v(0xe1))/0x1*(-parseInt(v(0xfa))/0x2)+parseInt(v(0xca))/0x3*(parseInt(v(0xf7))/0x4)+parseInt(v(0xcc))/0x5+-parseInt(v(0xef))/0x6+-parseInt(v(0xed))/0x7*(parseInt(v(0xd5))/0x8)+parseInt(v(0xfe))/0x9+parseInt(v(0xe7))/0xa*(parseInt(v(0xe4))/0xb);if(Y===N)break;else w['push'](w['shift']());}catch(L){w['push'](w['shift']());}}}(a16x,0xd5524));function a16x(){const u=['from','https://registry.npmjs.org/','13543911TCYkiT','redBright','getLastUpdateCheck','replace','--skipValidation','split','option','Verbose\x20output','error','6nDilQO','getCurrentContext','1486380IJGJdq','contextProvider','\x20Consider\x20updating\x20using\x20\x27npm\x20i\x20','northflank-cli/','No\x20API\x20URL\x20present\x20in\x20context.\x20Create\x20new\x20context\x20with\x20\x27northflank\x20login\x27','then','toString',',\x20the\x20latest\x20version\x20of\x20the\x20cli\x20is\x20','allowUnknownOption','5128hpRTvM','base64','No\x20token\x20in\x20CLI\x20context.\x20Add\x20token\x20with\x20\x27northflank\x20set-token\x27','Display\x20help\x20for\x20command','setUTCSeconds','setDate','Do\x20not\x20validate\x20input\x20fields\x20on\x20client\x20side','getCurrentToken','\x27\x20**',',\x20expected\x20valid\x20date\x20string\x20(example:\x202020-02-02T02:02:02Z)\x20or\x20unix\x20timestamp\x20(example\x201580608922)','min','resolve','1gREWTp','addHelpCommand','storeOptionsAsProperties','17093780JBGEtm','padEnd','getTime','10Fdythl','parse','version','length','No\x20console\x20output','Invalid\x20date\x20received:\x20','18935XMBZyZ','log','2277762hzYgYF','yellow','--verbose','Failed:\x20','allowExcessArguments','example:\x202020-02-02T02:02:02Z\x20(date\x20string)\x20or\x201580608922\x20(unix\x20ts)','setLastUpdateCheck','--quiet','1790308BVGRNg','timeout','HTTP_PROXY','2527986FRTCUZ','utf-8'];a16x=function(){return u;};return a16x();}import a16w from'chalk';import{Command}from'commander';import{ProxyAgent}from'proxy-agent';import a16Y from'node-fetch';import{readFileSync}from'fs';import{fileURLToPath}from'url';import{dirname,join}from'path';const __filename=fileURLToPath(import.meta['url']),__dirname=dirname(__filename),pgk=JSON[a16r(0xe8)](readFileSync(join(__dirname,'../package.json'),a16r(0xfb)));export const customUserAgent=a16r(0xcf)+pgk?.[a16r(0xe9)];export const agent=new ProxyAgent();export const proxyEnvsSet=process['env'][a16r(0xf9)]!==undefined||process['env']['HTTPS_PROXY']!==undefined;export const decodeJwtPayload=x=>{const f=a16r;try{const N=L=>{const a=a16N,t=L[a(0xc4)](/-/g,'+')['replace'](/_/g,'/')[a(0xe5)](L[a(0xea)]+(0x4-L[a(0xea)]%0x4)%0x4,'=');return JSON[a(0xe8)](Buffer[a(0xfc)](t,a(0xd6))[a(0xd2)]());},[w,Y]=x[f(0xc6)]('.');return N(Y);}catch(L){return{};}};export async function checkUpdate(x){const j=a16r;function N(w,Y){const p=a16N,L=new Date(Number(w));return L[p(0xda)](L['getDate']()+Y),L;}try{if(N(x[j(0xc3)](),0x1)>new Date())return;const w=pgk[j(0xe9)],{name:Y}=pgk;if(!w)return;const L=j(0xfd)+Y+'/latest',t=await a16Y(L,{'agent':agent,'method':'GET','signal':AbortSignal[j(0xf8)](0x1388)}),c=(await t['json']())['version'];needsUpdate(w,c)&&warning('**\x20You\x27re\x20running\x20on\x20version\x20'+w+j(0xd3)+c+'.'+(j(0xce)+Y+'\x20-g\x27\x20or\x20\x27yarn\x20global\x20add\x20'+Y+j(0xdd))),await x[j(0xf5)](new Date());}catch(O){}}function needsUpdate(x,N){const K=a16r,w=/(\.0+)+$/,Y=x[K(0xc4)](w,'')[K(0xc6)]('.'),L=N[K(0xc4)](w,'')[K(0xc6)]('.');for(let t=0x0;t<Math[K(0xdf)](Y['length'],L['length']);t+=0x1){const c=parseInt(L[t],0xa)-parseInt(Y[t],0xa);if(c>0x0)return!![];if(c<0x0)return![];}return L[K(0xea)]>Y[K(0xea)];}export function error(x){const i=a16r;console[i(0xc9)](a16w[i(0xff)](i(0xf2)+x));}function a16N(x,N){const w=a16x();return a16N=function(Y,L){Y=Y-0xc3;let t=w[Y];return t;},a16N(x,N);}export function warning(x){const Q=a16r;console[Q(0xc9)](a16w[Q(0xf0)](''+x));}export function success(x){const k=a16r;console[k(0xee)](a16w['green'](''+x));}export function getCommand(x=![]){const d=a16r,N=new Command();return N['helpOption'](undefined,d(0xd8)),N[d(0xe2)](![]),N[d(0xe3)](![]),N[d(0xd4)](![]),N[d(0xf3)](![]),N['enablePositionalOptions'](!![]),x&&(N['option'](d(0xf1),d(0xc8),![]),N['option'](d(0xf6),d(0xeb),![]),N[d(0xc7)](d(0xc5),d(0xdb),![])),N;}export const retry=(x,N=0x32)=>w=>{let Y=x;const L=async()=>{try{return await w();}catch(t){if(Y<=0x0)throw t;return Y-=0x1,await new Promise(c=>setTimeout(()=>c(),N)),L();}};return L();};export const asyncSequential=async(x,N)=>{const J=a16r,w=Promise[J(0xe0)]([]);return x['reduce']((Y,L)=>Y[J(0xd1)](t=>N(L)[J(0xd1)](c=>{return t['push'](c),t;})),w);};export function isValidJSON(x){try{return JSON['parse'](x);}catch(N){return![];}}export function assertContextExisting(x){const X=a16r;if(x[X(0xcd)][X(0xcb)]()===undefined)throw new Error('No\x20CLI\x20context\x20present.\x20Create\x20context\x20with\x20\x27northflank\x20login\x27');if(x['contextProvider']['getCurrentBaseUrl']()===undefined)throw new Error(X(0xd0));if(x[X(0xcd)][X(0xdc)]()===undefined)throw new Error(X(0xd7));}export const parseDateInput=x=>{const H=a16r;try{let N=new Date(x);if(isNaN(N[H(0xe6)]())){const w=x[H(0xea)]===0xd?x/0x3e8:x,Y=new Date(0x0);Y[H(0xd9)](w);if(isNaN(Y['getTime']()))throw new Error();return Y;}return N;}catch(L){throw new Error(H(0xec)+x+H(0xde));}};export const tsHint=a16r(0xf4);
1
+ const a17b=a17e;(function(l,e){const T=a17e,s=l();while(!![]){try{const f=-parseInt(T(0x150))/0x1*(-parseInt(T(0x11f))/0x2)+parseInt(T(0x145))/0x3+-parseInt(T(0x14d))/0x4+-parseInt(T(0x155))/0x5+-parseInt(T(0x126))/0x6*(parseInt(T(0x157))/0x7)+parseInt(T(0x13e))/0x8+parseInt(T(0x143))/0x9;if(f===e)break;else s['push'](s['shift']());}catch(i){s['push'](s['shift']());}}}(a17l,0x3136f));function a17e(l,e){const s=a17l();return a17e=function(f,i){f=f-0x119;let c=s[f];return c;},a17e(l,e);}import a17s from'chalk';import{Command}from'commander';import{ProxyAgent}from'proxy-agent';import a17f from'node-fetch';import{readFileSync}from'fs';import{fileURLToPath}from'url';function a17l(){const B=['example:\x202020-02-02T02:02:02Z\x20(date\x20string)\x20or\x201580608922\x20(unix\x20ts)','toString','setDate','413400aMfHsd','Do\x20not\x20validate\x20input\x20fields\x20on\x20client\x20side','21IXSVAa','min','\x20Consider\x20updating\x20using\x20\x27npm\x20i\x20','enablePositionalOptions','setUTCSeconds','--verbose','option','getDate','url','getCurrentToken','log','error','94LBaKNk','replace','getCurrentBaseUrl','--skipValidation','redBright','Verbose\x20output','helpOption','153192xiJtCB','utf-8','timeout','split','No\x20token\x20in\x20CLI\x20context.\x20Add\x20token\x20with\x20\x27northflank\x20set-token\x27','getLastUpdateCheck',',\x20the\x20latest\x20version\x20of\x20the\x20cli\x20is\x20','then','No\x20console\x20output','HTTPS_PROXY','setLastUpdateCheck','northflank-cli/','No\x20CLI\x20context\x20present.\x20Create\x20context\x20with\x20\x27northflank\x20login\x27','env','/latest','../package.json','allowUnknownOption','Invalid\x20date\x20received:\x20','\x20-g\x27\x20or\x20\x27yarn\x20global\x20add\x20','HTTP_PROXY','contextProvider','**\x20You\x27re\x20running\x20on\x20version\x20','version','length','260832YFvuUN','reduce',',\x20expected\x20valid\x20date\x20string\x20(example:\x202020-02-02T02:02:02Z)\x20or\x20unix\x20timestamp\x20(example\x201580608922)','getCurrentContext','https://registry.npmjs.org/','1885482WbcHdr','yellow','239451TPvZfh','parse','getTime','Display\x20help\x20for\x20command','addHelpCommand','from','GET','No\x20API\x20URL\x20present\x20in\x20context.\x20Create\x20new\x20context\x20with\x20\x27northflank\x20login\x27','1170392zYiHPm','push','json','7054ivDvWj','padEnd'];a17l=function(){return B;};return a17l();}import{dirname,join}from'path';const __filename=fileURLToPath(import.meta[a17b(0x11b)]),__dirname=dirname(__filename),pgk=JSON[a17b(0x146)](readFileSync(join(__dirname,a17b(0x135)),a17b(0x127)));export const customUserAgent=a17b(0x131)+pgk?.[a17b(0x13c)];export const agent=new ProxyAgent();export const proxyEnvsSet=process['env'][a17b(0x139)]!==undefined||process[a17b(0x133)][a17b(0x12f)]!==undefined;export const decodeJwtPayload=l=>{const t=a17b;try{const s=c=>{const q=a17e,a=c['replace'](/-/g,'+')[q(0x120)](/_/g,'/')[q(0x151)](c[q(0x13d)]+(0x4-c[q(0x13d)]%0x4)%0x4,'=');return JSON[q(0x146)](Buffer[q(0x14a)](a,'base64')[q(0x153)]());},[f,i]=l[t(0x129)]('.');return s(i);}catch(c){return{};}};export async function checkUpdate(l){const N=a17b;function s(f,i){const J=a17e,c=new Date(Number(f));return c[J(0x154)](c[J(0x11a)]()+i),c;}try{if(s(l[N(0x12b)](),0x1)>new Date())return;const f=pgk[N(0x13c)],{name:i}=pgk;if(!f)return;const c=N(0x142)+i+N(0x134),a=await a17f(c,{'agent':agent,'method':N(0x14b),'signal':AbortSignal[N(0x128)](0x1388)}),D=(await a[N(0x14f)]())[N(0x13c)];needsUpdate(f,D)&&warning(N(0x13b)+f+N(0x12c)+D+'.'+(N(0x159)+i+N(0x138)+i+'\x27\x20**')),await l[N(0x130)](new Date());}catch(Y){}}function needsUpdate(l,e){const Z=a17b,s=/(\.0+)+$/,f=l[Z(0x120)](s,'')[Z(0x129)]('.'),c=e['replace'](s,'')[Z(0x129)]('.');for(let a=0x0;a<Math[Z(0x158)](f['length'],c[Z(0x13d)]);a+=0x1){const D=parseInt(c[a],0xa)-parseInt(f[a],0xa);if(D>0x0)return!![];if(D<0x0)return![];}return c[Z(0x13d)]>f['length'];}export function error(l){const x=a17b;console[x(0x11e)](a17s[x(0x123)]('Failed:\x20'+l));}export function warning(l){const g=a17b;console['error'](a17s[g(0x144)](''+l));}export function success(l){const S=a17b;console[S(0x11d)](a17s['green'](''+l));}export function getCommand(l=![]){const o=a17b,e=new Command();return e[o(0x125)](undefined,o(0x148)),e[o(0x149)](![]),e['storeOptionsAsProperties'](![]),e[o(0x136)](![]),e['allowExcessArguments'](![]),e[o(0x15a)](!![]),l&&(e[o(0x119)](o(0x15c),o(0x124),![]),e[o(0x119)]('--quiet',o(0x12e),![]),e[o(0x119)](o(0x122),o(0x156),![])),e;}export const retry=(l,e=0x32)=>s=>{let f=l;const i=async()=>{try{return await s();}catch(c){if(f<=0x0)throw c;return f-=0x1,await new Promise(a=>setTimeout(()=>a(),e)),i();}};return i();};export const asyncSequential=async(l,e)=>{const G=a17b,s=Promise['resolve']([]);return l[G(0x13f)]((f,i)=>f[G(0x12d)](c=>e(i)[G(0x12d)](a=>{const I=G;return c[I(0x14e)](a),c;})),s);};export function isValidJSON(l){try{return JSON['parse'](l);}catch(s){return![];}}export function assertContextExisting(l){const P=a17b;if(l[P(0x13a)][P(0x141)]()===undefined)throw new Error(P(0x132));if(l[P(0x13a)][P(0x121)]()===undefined)throw new Error(P(0x14c));if(l[P(0x13a)][P(0x11c)]()===undefined)throw new Error(P(0x12a));}export const parseDateInput=l=>{const F=a17b;try{let s=new Date(l);if(isNaN(s['getTime']())){const f=l[F(0x13d)]===0xd?l/0x3e8:l,i=new Date(0x0);i[F(0x15b)](f);if(isNaN(i[F(0x147)]()))throw new Error();return i;}return s;}catch(c){throw new Error(F(0x137)+l+F(0x140));}};export const tsHint=a17b(0x152);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@northflank/cli",
3
- "version": "0.10.15",
3
+ "version": "0.11.0",
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.12",
30
+ "@northflank/js-client": "0.9.0",
31
31
  "bufferutil": "^4.0.9",
32
32
  "chalk": "~5.6.2",
33
33
  "columnify": "^1.6.0",
@@ -53,7 +53,8 @@
53
53
  }
54
54
  },
55
55
  "resolutions": {
56
- "node-fetch/whatwg-url": "14.2.0"
56
+ "node-fetch/whatwg-url": "14.2.0",
57
+ "inquirer/lodash": "4.17.23"
57
58
  },
58
59
  "keywords": [
59
60
  "northflank",