@northflank/cli 0.10.9 → 0.10.11
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 +10 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const a14Y=a14G;function a14N(){const e=['154mwupbi','20688uasbBq','loop','reloadText','splice','push','italic','choices','718010pKRjVF','opt','nextPageCursor','handleDynamicPageLoad','selected','loading','59055nFRRpO','102VajkLt','realLength','onUpKey','map','1909863CdAVEr','catch','down','onDownKey','40ggdSfx','length','2801533nakoSO','render','1240576iuetGw','\x20Loading\x20more\x20options','dir\x20must\x20be\x20up\x20or\x20down','name','8eCqegl','117805BsxcGl','loadMore','pagOpt','..\x20Load\x20more\x20options\x20..'];a14N=function(){return e;};return a14N();}(function(N,G){const I=a14G,S=N();while(!![]){try{const U=parseInt(I(0x208))/0x1+-parseInt(I(0x211))/0x2*(parseInt(I(0x1fb))/0x3)+parseInt(I(0x1f1))/0x4+-parseInt(I(0x1f6))/0x5*(-parseInt(I(0x209))/0x6)+parseInt(I(0x1ef))/0x7+parseInt(I(0x1f5))/0x8*(parseInt(I(0x20d))/0x9)+-parseInt(I(0x202))/0xa*(parseInt(I(0x1fa))/0xb);if(U===G)break;else S['push'](S['shift']());}catch(K){S['push'](S['shift']());}}}(a14N,0x3a5b4));function a14G(N,G){const S=a14N();return a14G=function(U,K){U=U-0x1ef;let r=S[U];return r;},a14G(N,G);}import a14S from'inquirer/lib/prompts/list.js';import a14U from'inquirer/lib/objects/choice.js';import a14K from'chalk';function incrementListIndex(N,G,S){const d=a14G,U=S[d(0x201)][d(0x20a)],K=d(0x1fc)in S?Boolean(S[d(0x1fc)]):!![];if(G==='up'){if(N>0x0)return N-0x1;return K?U-0x1:N;}if(G===d(0x20f)){if(N<U-0x1)return N+0x1;return K?0x0:N;}throw new Error(d(0x1f3));}export class DynamicReloadPaginationPrompt extends a14S{['reloadText']=a14K[a14Y(0x200)](a14Y(0x1f9));['pagOpt'];[a14Y(0x207)]=![];[a14Y(0x204)];constructor(N,G,S){const u=a14Y;super(N,G,S),this[u(0x1f8)]=this['opt'],this[u(0x204)]=this['pagOpt'][u(0x204)],this[u(0x204)]!==undefined&&this[u(0x203)][u(0x201)][u(0x1ff)](new a14U(this['reloadText'],this['reloadText']));}[a14Y(0x20b)](){const V=a14Y;if(this[V(0x207)])return;this[V(0x206)]=incrementListIndex(this[V(0x206)],'up',this[V(0x203)]),this['render']();}async[a14Y(0x210)](){const a=a14Y;if(this[a(0x207)])return;this[a(0x206)]=incrementListIndex(this[a(0x206)],'down',this[a(0x203)]),await this[a(0x205)](),this['render']();}async[a14Y(0x205)](){const x=a14Y;if(this['selected']>=this[x(0x203)][x(0x201)][x(0x212)]-0x1){if(this['nextPageCursor']===undefined)return;this[x(0x207)]=!![];let N=0x0;const G=setInterval(()=>{const b=x,r=['⠋','⠙','⠹','⠸','⠼','⠴','⠦','⠧','⠇','⠏'],L=a14K[b(0x200)](r[N%r[b(0x212)]]+b(0x1f2));this['opt'][b(0x201)][b(0x201)][this['selected']][b(0x1f4)]=''+L,N+=0x1,this[b(0x1f0)]();},0x50),{elements:S,nextPageCursor:U}=await this[x(0x1f8)][x(0x1f7)]({'nextPageCursor':this[x(0x204)]})[x(0x20e)](()=>({'elements':[],'nextPageCursor':undefined}));this['nextPageCursor']=U;const K=S[x(0x20c)](r=>new a14U(r,r));this[x(0x203)]['choices'][x(0x201)][x(0x1fe)](this[x(0x206)],0x1),this[x(0x203)][x(0x201)][x(0x1ff)](...K),U!==undefined&&this[x(0x203)][x(0x201)][x(0x1ff)](new a14U(this[x(0x1fd)],this['reloadText'])),clearInterval(G),this[x(0x207)]=![];}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';function a15B(I,B){const J=a15I();return a15B=function(C,G){C=C-0x17e;let F=J[C];return F;},a15B(I,B);}const a15g=a15B;(function(I,B){const x=a15B,J=I();while(!![]){try{const C=-parseInt(x(0x188))/0x1*(parseInt(x(0x1d6))/0x2)+-parseInt(x(0x1a3))/0x3+parseInt(x(0x1b0))/0x4*(parseInt(x(0x1f0))/0x5)+parseInt(x(0x19c))/0x6+-parseInt(x(0x17f))/0x7*(-parseInt(x(0x1dd))/0x8)+-parseInt(x(0x196))/0x9*(parseInt(x(0x1fb))/0xa)+-parseInt(x(0x1d4))/0xb;if(C===B)break;else J['push'](J['shift']());}catch(G){J['push'](J['shift']());}}}(a15I,0x1c739));function a15I(){const I2=['Connection\x20error\x20occurred\x20when\x20forwarding\x20\x27','getOwnPropertyNames','configurable','Failed:\x20','--skipHostnames','--service\x20--serviceId\x20[NAME]','portName','getCurrentProjectName','forEach','Services:','then','default','__createBinding','Don\x27t\x20use\x20context\x20default\x20values,\x20explicitly\x20use\x20options\x20or\x20ask.','create','hosts','bold','warning','Cleaning\x20up\x20open\x20connections\x20failed:\x20','\x20flag\x20or\x20manually\x20append\x20following\x20entry\x20to\x20your\x20hosts\x20file\x20(','assertContextExisting','getCurrentServiceName','service','groupBy','action','../utils','printHostsFileHint','hostnames','chalk','ApiClient','\x20with\x20these\x20hostnames:','error','Forwarding\x20addon\x20','189123TguOAi','\x20mode:\x20the\x20locally\x20forwarded\x20port\x20differs\x20from\x20the\x20actual\x20port\x20on\x20the\x20forwarded\x20service/addon.','132428dFxfhi','\x20\x20If\x20you\x20have\x20added\x20entries\x20to\x20your\x20hosts\x20file,\x20it\x20is\x20recommended\x20to\x20remove\x20them\x20again\x20now.','apiClient','Please\x20ensure\x20the\x20','length','askForProject','addCommand','152GyYuhq','Only\x20expose\x20on\x20IP\x20address,\x20not\x20on\x20hostnames.\x20With\x20this\x20option,\x20no\x20root\x20permissions\x20are\x20required.','data','forwarding','value','--project\x20--projectId\x20[NAME]','__setModuleDefault','\x20-\x20','@northflank/js-client','skipHostnamesText','Addons:','stop','\x20to\x20','with\x20hostname:\x20','flatMap','uniqBy','Error\x20occured\x20while\x20trying\x20to\x20forward\x20','name','\x20is\x20exposed\x20on\x20','1215bPnGSK','success','Project\x20for\x20forwarding','tunnel-close','__importDefault','get','option','HTTP','data.id','addon','\x20with\x20multiple\x20ports:','30vtHQTx','\x20service\x20ports','forwardService','green','win32','ports','__importStar','forwardProject','SIGINT','log','22267ambKzd','\x20is\x20running\x20and\x20reachable\x20and\x20that\x20a\x20port\x20is\x20defined\x20on\x20the\x20networking\x20section.','Service\x20to\x20forward','greenBright','project\x20for\x20forwarding','InquirerHelper','capitalize','CliPortForward','Forwarding\x20service\x20','2TgifMt','No\x20services\x20and\x20addons\x20to\x20forward\x20found\x20in\x20project\x20','next','port','__esModule','Port-forwarding\x20for\x20all\x20services\x20and\x20addons\x20in\x20the\x20given\x20project','protocol','getProxyForwarder','\x20\x20-\x20port\x20','address','prototype','description','skipHostnames','darwin','273303myLXUh','join','\x20mode.\x20If\x20hostname\x20forwarding\x20is\x20required,\x20remove\x20','\x27:\x20\x22','\x20in\x20project\x20','Running\x20in\x20','1336194PHFaFO','type','map','printForwardingInfo','throw','filter','defineProperty','358650nUpVIf','portFwdCmd','getCommand','hasOwnProperty','noDefaultsText','message','all','Addon\x20to\x20forward','askForService','forwardAddon','fwd','--noDefaults','reset','3188trvhUT','\x20and\x20','C:/Windows/System32/drivers/etc/hosts'];a15I=function(){return I2;};return a15I();}var __createBinding=this&&this[a15g(0x1bf)]||(Object[a15g(0x1c1)]?function(I,B,J,C){const o=a15g;if(C===undefined)C=J;var G=Object['getOwnPropertyDescriptor'](B,J);(!G||(o(0x1f5)in G?!B['__esModule']:G['writable']||G[o(0x1b5)]))&&(G={'enumerable':!![],'get':function(){return B[J];}}),Object['defineProperty'](I,C,G);}:function(I,B,J,C){if(C===undefined)C=J;I[C]=B[J];}),__setModuleDefault=this&&this[a15g(0x1e3)]||(Object[a15g(0x1c1)]?function(I,B){const O=a15g;Object[O(0x1a2)](I,O(0x1be),{'enumerable':!![],'value':B});}:function(I,B){const p=a15g;I[p(0x1be)]=B;}),__importStar=this&&this[a15g(0x201)]||(function(){var I=function(B){const w=a15B;return I=Object[w(0x1b4)]||function(J){const Z=w;var C=[];for(var G in J)if(Object[Z(0x192)][Z(0x1a6)]['call'](J,G))C[C['length']]=G;return C;},I(B);};return function(B){const z=a15B;if(B&&B[z(0x18c)])return B;var J={};if(B!=null){for(var C=I(B),G=0x0;G<C[z(0x1da)];G++)if(C[G]!==z(0x1be))__createBinding(J,B,C[G]);}return __setModuleDefault(J,B),J;};}()),__awaiter=this&&this['__awaiter']||function(I,B,J,C){function G(F){return F instanceof J?F:new J(function(A){A(F);});}return new(J||(J=Promise))(function(F,A){function H(X){const Q=a15B;try{d(C[Q(0x18a)](X));}catch(S){A(S);}}function t(X){const c=a15B;try{d(C[c(0x1a0)](X));}catch(S){A(S);}}function d(X){const l=a15B;X['done']?F(X[l(0x1e1)]):G(X[l(0x1e1)])[l(0x1bd)](H,t);}d((C=C['apply'](I,B||[]))['next']());});},__importDefault=this&&this[a15g(0x1f4)]||function(I){const n=a15g;return I&&I[n(0x18c)]?I:{'default':I};};Object[a15g(0x1a2)](exports,'__esModule',{'value':!![]}),exports[a15g(0x186)]=void 0x0;const js_client_1=require(a15g(0x1e5)),chalk_1=__importDefault(require(a15g(0x1cf))),utils_1=require(a15g(0x1cc)),inquirer_helper_1=require('../inquirer-helper'),os=__importStar(require('os')),lodash_1=require('lodash'),{EOL}=require('os');class CliPortForward{constructor(I,B){const m=a15g;this[m(0x1a7)]=m(0x1c0),this['skipHostnamesText']=m(0x1de),this[m(0x1d8)]=new js_client_1[(m(0x1d0))](I,{'throwErrorOnHttpErrorCode':!![],'customUserAgent':utils_1['customUserAgent'],'agent':B});const J=new inquirer_helper_1[(m(0x184))](this[m(0x1d8)]);this[m(0x1a4)]=(0x0,utils_1['getCommand'])()['name']('forward')['alias'](m(0x1ad))[m(0x193)]('Port-forwarding\x20for\x20Northflank\x20services\x20and\x20addons.');const C=(0x0,utils_1[m(0x1a5)])(!![])[m(0x1ee)](m(0x1a9))[m(0x193)](m(0x18d))[m(0x1f6)](m(0x1e2),m(0x183))[m(0x1f6)](m(0x1ae),this['noDefaultsText'],![])[m(0x1f6)]('--skipHostnames',this[m(0x1e6)],![])['action'](A=>__awaiter(this,[A],void 0x0,function*({noDefaults:H,projectId:t,skipHostnames:d}){const E=m;(0x0,utils_1[E(0x1c7)])(this[E(0x1d8)]);const X=this[E(0x18f)](d),S=H?undefined:I[E(0x1ba)](),f=t||S||(yield J[E(0x1db)]());try{const {services:v,addons:a}=yield X[E(0x202)]({'projectId':f},d);if(v['length']+a[E(0x1da)]<=0x0)(0x0,utils_1[E(0x1c4)])(E(0x189)+chalk_1[E(0x1be)][E(0x1c3)](f));else{const V=v[E(0x1a1)](K=>K['length']>0x0)[E(0x1da)],r=a['filter'](K=>K[E(0x1da)]>0x0)[E(0x1da)],s=E(0x19a)+chalk_1[E(0x1be)][E(0x1c3)](f);console['log']('Forwarding\x20'+chalk_1[E(0x1be)][E(0x1fe)][E(0x1c3)](V+E(0x1fc))+E(0x1b1)+chalk_1[E(0x1be)][E(0x1fe)]['bold'](r+'\x20addon\x20ports')+s),console['log'](),console[E(0x17e)](chalk_1[E(0x1be)][E(0x1c3)](E(0x1bc))),v[E(0x1bb)](K=>{const j=E;if(K[j(0x1da)]>=0x1&&!K[0x0]['error'])this[j(0x19f)](K,{'type':'service','name':K[0x0][j(0x1df)]['id']},d);}),console[E(0x17e)](chalk_1[E(0x1be)]['bold'](E(0x1e7))),a['forEach'](K=>{const U=E;if(K['length']>=0x1&&!K[0x0][U(0x1d2)])this[U(0x19f)](K,{'type':U(0x1f9),'name':K[0x0][U(0x1df)]['id']},d);}),this[E(0x1cd)]([...v['flat'](),...a['flat']()],d);}}catch(K){(0x0,utils_1[E(0x1d2)])(E(0x1b6)+K[E(0x1a8)]);}})),G=(0x0,utils_1[m(0x1a5)])(!![])[m(0x1ee)](m(0x1c9))[m(0x193)]('Port-forwarding\x20for\x20the\x20specified\x20service')[m(0x1f6)]('--project\x20--projectId\x20[NAME]',m(0x1f2))[m(0x1f6)](m(0x1b8),m(0x181))['option'](m(0x1ae),this['noDefaultsText'],![])['option'](m(0x1b7),this['skipHostnamesText'],![])[m(0x1cb)](A=>__awaiter(this,[A],void 0x0,function*({noDefaults:H,projectId:t,serviceId:d,skipHostnames:X}){const D=m;(0x0,utils_1['assertContextExisting'])(this[D(0x1d8)]);const S=this['getProxyForwarder'](X),f=H?undefined:I[D(0x1ba)](),v=t||f||(yield J[D(0x1db)]()),a=H?undefined:I[D(0x1c8)](),V=d||a||(yield J[D(0x1ab)](v)());console[D(0x17e)](D(0x187)+chalk_1[D(0x1be)][D(0x1c3)](V)+'\x20in\x20project\x20'+chalk_1[D(0x1be)][D(0x1c3)](v));try{const r=yield S[D(0x1fd)]({'projectId':v,'serviceId':V},X);this[D(0x19f)](r,{'name':V,'type':'service'},X),this[D(0x1cd)](r,X);}catch(s){(0x0,utils_1[D(0x1d2)])(D(0x1b6)+s[D(0x1a8)]);}})),F=(0x0,utils_1[m(0x1a5)])(!![])[m(0x1ee)]('addon')[m(0x193)]('Port-forwarding\x20for\x20the\x20specified\x20addon')[m(0x1f6)](m(0x1e2),'Project\x20for\x20forwarding')['option']('--addon\x20--addonId\x20[NAME]',m(0x1aa))[m(0x1f6)](m(0x1b7),this[m(0x1e6)],![])[m(0x1cb)](A=>__awaiter(this,[A],void 0x0,function*({noDefaults:H,projectId:t,addonId:d,skipHostnames:X}){const M=m;(0x0,utils_1['assertContextExisting'])(this[M(0x1d8)]);const S=this['getProxyForwarder'](X),f=H?undefined:I[M(0x1ba)](),v=t||f||(yield J['askForProject']()),a=d||(yield J['askForAddon'](v)());console['log'](M(0x1d3)+chalk_1['default'][M(0x1c3)](a)+M(0x19a)+chalk_1[M(0x1be)]['bold'](v));try{const V={'projectId':v,'addonId':a},r=yield S[M(0x1ac)](V,X);this[M(0x19f)](r,{'name':a,'type':'addon'},X),this['printHostsFileHint'](r,X);}catch(s){(0x0,utils_1[M(0x1d2)])(M(0x1b6)+s[M(0x1a8)]);}}));this['portFwdCmd'][m(0x1dc)](C),this[m(0x1a4)][m(0x1dc)](G),this[m(0x1a4)][m(0x1dc)](F);}['getProxyForwarder'](I=![]){const R=a15g,B=this[R(0x1d8)][R(0x1e0)];if(!I){const J=B['canExecuteWithHostnames']();if(J[R(0x1d2)])throw new Error(J[R(0x1a8)]);}return B['on'](R(0x1f3),(C,G)=>{const Y=R,F=chalk_1['default']['bold'](G[Y(0x19d)]+'\x20\x27'+G['id']+'\x27'),A=G['hostnames'][Y(0x1da)]>0x0;(0x0,utils_1['warning'])('Stop\x20forwarding\x20traffic\x20from\x20'+G[Y(0x191)]+':'+G[Y(0x18b)]+Y(0x1e9)+F),I&&A&&(0x0,utils_1[Y(0x1c4)])(Y(0x1d7));}),B['on']('connection-error',(C,G,F)=>{const P=R;(0x0,utils_1[P(0x1c4)])(P(0x1b3)+G[P(0x191)]+':'+G[P(0x18b)]+P(0x199)+(F===null||F===void 0x0?void 0x0:F[P(0x1a8)])+'\x22');}),process['on'](R(0x203),()=>__awaiter(this,void 0x0,void 0x0,function*(){const k=R;try{yield B[k(0x1e8)]();}catch(C){(0x0,utils_1[k(0x1d2)])(k(0x1c5)+C[k(0x1a8)]);}finally{process['exit']();}})),B;}[a15g(0x19f)](I,B,J=![]){const L=a15g,{type:C,name:G}=B;if(I[L(0x1da)]<=0x0){const t=L(0x1d9)+B[L(0x19d)]+L(0x180);(0x0,utils_1[L(0x1c4)])('\x20\x20\x20No\x20running\x20container\x20found\x20for\x20'+C+'\x20'+chalk_1[L(0x1be)][L(0x1c3)](G)+'.\x20'+t);return;}const F=(0x0,lodash_1[L(0x1ca)])(I,L(0x1f8)),A=d=>'\x20('+(d[L(0x1b9)]?d[L(0x1b9)]+L(0x1e4):'')+d[L(0x18e)]+')';function H(d,X=0x2){const N=L;if(!J){const S=d[N(0x18e)]===N(0x1f7)?'http://':'';d[N(0x1ce)]['forEach'](f=>{const T=N;console[T(0x17e)]((0x0,lodash_1['repeat'])('\x20',X)+'-\x20'+S+f+':'+d[T(0x18b)]);});}}Object['entries'](F)[L(0x1bb)](([d,X])=>{const y=L;var S,f;const v='>\x20'+(0x0,lodash_1[y(0x185)])(C)+'\x20\x27'+chalk_1[y(0x1be)][y(0x182)][y(0x1c3)](d)+'\x27';if(C===y(0x1f9)){if(X[y(0x1da)]===0x1){const a=X[0x0];if(a['error']){(0x0,utils_1['error'])(y(0x1ed)+d+':\x20'+a[y(0x1d2)][y(0x1a8)]);return;}const V=a[y(0x1df)],r=!J?'\x20'+chalk_1[y(0x1be)][y(0x1af)](y(0x1ea)+V[y(0x1ce)][y(0x197)](',')):'';(0x0,utils_1[y(0x1f1)])(v+y(0x1ef)+V[y(0x191)]+':'+V[y(0x18b)]+A(V)+r);}else{const s=(0x0,lodash_1[y(0x1ec)])(X,K=>{const e=y;var b,W;return(W=(b=K===null||K===void 0x0?void 0x0:K[e(0x1df)])===null||b===void 0x0?void 0x0:b['hostnames'])===null||W===void 0x0?void 0x0:W[e(0x197)](',');})[y(0x1da)]>0x1;(0x0,utils_1['success'])(v+'\x20is\x20exposed\x20with\x20multiple\x20'+(s?y(0x1c2):y(0x200))+':'),X['forEach'](K=>{const i=y;if(K[i(0x1d2)]){(0x0,utils_1[i(0x1d2)])(i(0x1ed)+d+':\x20'+K[i(0x1d2)][i(0x1a8)]);return;}const b=K['data'],W=!J?',\x20hostname:\x20'+b[i(0x1ce)][i(0x197)](','):'';console[i(0x17e)]('\x20\x20-\x20Address:\x20'+b['address']+':'+b[i(0x18b)]+A(b)+W);});}}if(C===y(0x1c9)){if(X[y(0x1da)]===0x1){const K=X[0x0];if(K[y(0x1d2)]){(0x0,utils_1[y(0x1d2)])(y(0x1ed)+d+':\x20'+K['error'][y(0x1a8)]);return;}const b=K['data'],W=!J?y(0x1d1):':',u=b[y(0x191)]+':'+b[y(0x18b)]+A(b);(0x0,utils_1['success'])(v+y(0x1ef)+u+W),H(b);}else(0x0,utils_1[y(0x1f1)])(v+y(0x1ef)+((f=(S=X[0x0])===null||S===void 0x0?void 0x0:S[y(0x1df)])===null||f===void 0x0?void 0x0:f[y(0x191)])+y(0x1fa)),X[y(0x1bb)](h=>{const I0=y;if(h[I0(0x1d2)]){(0x0,utils_1[I0(0x1d2)])(I0(0x1ed)+d+':\x20'+h['error'][I0(0x1a8)]);return;}const q=h[I0(0x1df)];(0x0,utils_1['success'])(I0(0x190)+q[I0(0x18b)]+A(q)),H(q,0x4);});}});}[a15g(0x1cd)](I,B=![]){const I1=a15g;if(B){const J=I[I1(0x1eb)](X=>X['data'])[I1(0x1a1)](X=>X!==undefined),C=(process===null||process===void 0x0?void 0x0:process['platform'])===I1(0x1ff),G=os['platform']()===I1(0x195),F=C?I1(0x1b2):'/etc/hosts',A=chalk_1[I1(0x1be)][I1(0x1c3)](I1(0x194)),H=G?EOL+'Running\x20on\x20macOS\x20in\x20'+A+I1(0x1d5):undefined;let t=I1(0x19b)+A+I1(0x198)+I1(0x1b7)+I1(0x1c6)+F+'):';H!==undefined&&(0x0,utils_1[I1(0x1c4)])(H!==null&&H!==void 0x0?H:'');(0x0,utils_1[I1(0x1c4)])(t);const d=J[I1(0x19e)](X=>X[I1(0x191)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20'+X[I1(0x1ce)]['join']('\x20'));console['log']((0x0,lodash_1['uniq'])(d)['join'](EOL)),console[I1(0x17e)]();}}}exports[a15g(0x186)]=CliPortForward;
|
|
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)]();}}}
|
package/dist/utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const a16Y=a16G;(function(N,G){const d=a16G,S=N();while(!![]){try{const U=parseInt(d(0xe8))/0x1+-parseInt(d(0xf6))/0x2+-parseInt(d(0xd4))/0x3*(-parseInt(d(0xf7))/0x4)+parseInt(d(0xf0))/0x5*(-parseInt(d(0x10b))/0x6)+-parseInt(d(0xd8))/0x7+parseInt(d(0xe4))/0x8*(parseInt(d(0xe9))/0x9)+-parseInt(d(0x107))/0xa;if(U===G)break;else S['push'](S['shift']());}catch(K){S['push'](S['shift']());}}}(a16N,0x38dc7));import a16S from'chalk';import{Command}from'commander';import{ProxyAgent}from'proxy-agent';import a16U from'node-fetch';import{readFileSync}from'fs';function a16G(N,G){const S=a16N();return a16G=function(U,K){U=U-0xd1;let r=S[U];return r;},a16G(N,G);}import{fileURLToPath}from'url';import{dirname,join}from'path';const __filename=fileURLToPath(import.meta[a16Y(0xd9)]),__dirname=dirname(__filename),pgk=JSON[a16Y(0x102)](readFileSync(join(__dirname,a16Y(0xfe)),a16Y(0xd1)));export const customUserAgent=a16Y(0x10a)+pgk?.['version'];export const agent=new ProxyAgent();export const proxyEnvsSet=process[a16Y(0xd7)][a16Y(0xff)]!==undefined||process[a16Y(0xd7)][a16Y(0xdc)]!==undefined;export const decodeJwtPayload=N=>{const V=a16Y;try{const G=K=>{const u=a16G,r=K[u(0xe5)](/-/g,'+')['replace'](/_/g,'/')['padEnd'](K['length']+(0x4-K[u(0xd3)]%0x4)%0x4,'=');return JSON[u(0x102)](Buffer[u(0xd2)](r,u(0x101))[u(0x10c)]());},[S,U]=N[V(0x109)]('.');return G(U);}catch(K){return{};}};export async function checkUpdate(N){const x=a16Y;function G(S,U){const a=a16G,K=new Date(Number(S));return K[a(0xdf)](K['getDate']()+U),K;}try{if(G(N['getLastUpdateCheck'](),0x1)>new Date())return;const S=pgk[x(0xf9)],{name:U}=pgk;if(!S)return;const K=x(0x104)+U+x(0xea),r=await a16U(K,{'agent':agent,'method':x(0xf5),'signal':AbortSignal['timeout'](0x1388)}),L=(await r[x(0xeb)]())[x(0xf9)];needsUpdate(S,L)&&warning(x(0x100)+S+x(0xfc)+L+'.'+(x(0xf2)+U+x(0xda)+U+x(0xf3))),await N[x(0xe0)](new Date());}catch(I){}}function needsUpdate(N,G){const b=a16Y,S=/(\.0+)+$/,U=N[b(0xe5)](S,'')[b(0x109)]('.'),K=G[b(0xe5)](S,'')[b(0x109)]('.');for(let r=0x0;r<Math[b(0xd6)](U[b(0xd3)],K[b(0xd3)]);r+=0x1){const L=parseInt(K[r],0xa)-parseInt(U[r],0xa);if(L>0x0)return!![];if(L<0x0)return![];}return K[b(0xd3)]>U[b(0xd3)];}export function error(N){const e=a16Y;console['error'](a16S[e(0xfb)](e(0xdd)+N));}function a16N(){const W=['base64','parse','getCurrentContext','https://registry.npmjs.org/','--quiet','log','2976850KqksEB','then','split','northflank-cli/','17346VcLlLX','toString','push','getTime','utf-8','from','length','6KqUpmg','contextProvider','min','env','3066721tsPbmO','url','\x20-g\x27\x20or\x20\x27yarn\x20global\x20add\x20','Invalid\x20date\x20received:\x20','HTTPS_PROXY','Failed:\x20','addHelpCommand','setDate','setLastUpdateCheck','storeOptionsAsProperties','option','enablePositionalOptions','528sDNBIp','replace','No\x20console\x20output','getCurrentBaseUrl','148743XExyCi','61443keGazS','/latest','json','yellow','resolve','--verbose',',\x20expected\x20valid\x20date\x20string\x20(example:\x202020-02-02T02:02:02Z)\x20or\x20unix\x20timestamp\x20(example\x201580608922)','5zqLGOy','No\x20token\x20in\x20CLI\x20context.\x20Add\x20token\x20with\x20\x27northflank\x20set-token\x27','\x20Consider\x20updating\x20using\x20\x27npm\x20i\x20','\x27\x20**','--skipValidation','GET','174802izlDBk','919316VGIpqX','error','version','getCurrentToken','redBright',',\x20the\x20latest\x20version\x20of\x20the\x20cli\x20is\x20','setUTCSeconds','../package.json','HTTP_PROXY','**\x20You\x27re\x20running\x20on\x20version\x20'];a16N=function(){return W;};return a16N();}export function warning(N){const f=a16Y;console[f(0xf8)](a16S[f(0xec)](''+N));}export function success(N){const n=a16Y;console[n(0x106)](a16S['green'](''+N));}export function getCommand(N=![]){const D=a16Y,G=new Command();return G['helpOption'](undefined,'Display\x20help\x20for\x20command'),G[D(0xde)](![]),G[D(0xe1)](![]),G['allowUnknownOption'](![]),G['allowExcessArguments'](![]),G[D(0xe3)](!![]),N&&(G[D(0xe2)](D(0xee),'Verbose\x20output',![]),G[D(0xe2)](D(0x105),D(0xe6),![]),G[D(0xe2)](D(0xf4),'Do\x20not\x20validate\x20input\x20fields\x20on\x20client\x20side',![])),G;}export const retry=(N,G=0x32)=>S=>{let U=N;const K=async()=>{try{return await S();}catch(r){if(U<=0x0)throw r;return U-=0x1,await new Promise(L=>setTimeout(()=>L(),G)),K();}};return K();};export const asyncSequential=async(N,G)=>{const g=a16Y,S=Promise[g(0xed)]([]);return N['reduce']((U,K)=>U[g(0x108)](r=>G(K)[g(0x108)](L=>{const z=g;return r[z(0x10d)](L),r;})),S);};export function isValidJSON(N){try{return JSON['parse'](N);}catch(G){return![];}}export function assertContextExisting(N){const v=a16Y;if(N[v(0xd5)][v(0x103)]()===undefined)throw new Error('No\x20CLI\x20context\x20present.\x20Create\x20context\x20with\x20\x27northflank\x20login\x27');if(N[v(0xd5)][v(0xe7)]()===undefined)throw new Error('No\x20API\x20URL\x20present\x20in\x20context.\x20Create\x20new\x20context\x20with\x20\x27northflank\x20login\x27');if(N['contextProvider'][v(0xfa)]()===undefined)throw new Error(v(0xf1));}export const parseDateInput=N=>{const E=a16Y;try{let G=new Date(N);if(isNaN(G[E(0x10e)]())){const S=N[E(0xd3)]===0xd?N/0x3e8:N,U=new Date(0x0);U[E(0xfd)](S);if(isNaN(U[E(0x10e)]()))throw new Error();return U;}return G;}catch(K){throw new Error(E(0xdb)+N+E(0xef));}};export const tsHint='example:\x202020-02-02T02:02:02Z\x20(date\x20string)\x20or\x201580608922\x20(unix\x20ts)';
|
package/package.json
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@northflank/cli",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.11",
|
|
4
4
|
"author": "Marco Suter",
|
|
5
5
|
"description": "Provides a command-line interface to the Northflank platform.",
|
|
6
6
|
"homepage": "https://www.northflank.com",
|
|
7
7
|
"license": "MIT",
|
|
8
|
-
"
|
|
8
|
+
"type": "module",
|
|
9
9
|
"main": "./dist/cli.js",
|
|
10
10
|
"engines": {
|
|
11
|
-
"node": ">=
|
|
11
|
+
"node": ">=18.0.0"
|
|
12
12
|
},
|
|
13
13
|
"scripts": {
|
|
14
14
|
"build": "tsc",
|
|
15
15
|
"clin": "node --no-deprecation dist/cli.js",
|
|
16
|
-
"cli": "
|
|
16
|
+
"cli": "tsx src/cli.ts",
|
|
17
17
|
"inq-pag": "ts-node src/pagination/_dev/index.ts",
|
|
18
18
|
"gen-fig-spec": "ts-node src/_dev/gen-fig-spec.ts",
|
|
19
19
|
"lint": "eslint ."
|
|
@@ -27,24 +27,24 @@
|
|
|
27
27
|
"LICENSE"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@northflank/js-client": "0.8.
|
|
30
|
+
"@northflank/js-client": "0.8.9",
|
|
31
31
|
"bufferutil": "^4.0.9",
|
|
32
32
|
"chalk": "~5.6.2",
|
|
33
33
|
"columnify": "^1.6.0",
|
|
34
34
|
"commander": "^14.0.2",
|
|
35
|
-
"inquirer": "
|
|
35
|
+
"inquirer": "8.2.7",
|
|
36
36
|
"inquirer-search-list": "^1.2.6",
|
|
37
|
-
"js-yaml": "^4.1.
|
|
38
|
-
"lodash": "^4.17.21",
|
|
37
|
+
"js-yaml": "^4.1.1",
|
|
38
|
+
"lodash-es": "^4.17.21",
|
|
39
39
|
"node-fetch": "^3.3.2",
|
|
40
|
-
"open": "^
|
|
40
|
+
"open": "^11.0.0",
|
|
41
41
|
"proxy-agent": "^6.5.0",
|
|
42
42
|
"utf-8-validate": "^6.0.5",
|
|
43
43
|
"whatwg-url": "14.2.0",
|
|
44
44
|
"ws": "^8.18.3"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"
|
|
47
|
+
"tsx": "^4.21.0",
|
|
48
48
|
"typescript": "^5.9.3"
|
|
49
49
|
},
|
|
50
50
|
"overrides": {
|