@northflank/cli 0.4.5 → 0.6.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.
@@ -0,0 +1,269 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
39
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
40
+ if (ar || !(i in from)) {
41
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
42
+ ar[i] = from[i];
43
+ }
44
+ }
45
+ return to.concat(ar || Array.prototype.slice.call(from));
46
+ };
47
+ var __importDefault = (this && this.__importDefault) || function (mod) {
48
+ return (mod && mod.__esModule) ? mod : { "default": mod };
49
+ };
50
+ Object.defineProperty(exports, "__esModule", { value: true });
51
+ exports.CliPortForward = void 0;
52
+ var js_client_1 = require("@northflank/js-client");
53
+ var chalk_1 = __importDefault(require("chalk"));
54
+ var utils_1 = require("../utils");
55
+ var inquirer_helper_1 = require("../inquirer-helper");
56
+ var CliPortForward = /** @class */ (function () {
57
+ function CliPortForward(apiContext) {
58
+ var _this = this;
59
+ this.apiClient = new js_client_1.ApiClient(apiContext, {
60
+ throwErrorOnHttpErrorCode: true,
61
+ customUserAgent: utils_1.customUserAgent,
62
+ });
63
+ var inquirerHelper = new inquirer_helper_1.InquirerHelper(this.apiClient);
64
+ this.portFwdCmd = (0, utils_1.getCommand)()
65
+ .name('forward')
66
+ .alias('fwd')
67
+ .description('Port-forwarding for Northflank services and addons.');
68
+ var projectPortFwdCmd = (0, utils_1.getCommand)(true)
69
+ .name('all')
70
+ .description('Port-forwarding for all services and addons in the given project')
71
+ .option('--project --projectId [NAME]', 'project for forwarding')
72
+ .option('--noDefaults', 'Always ask for project', false)
73
+ .action(function (_a) {
74
+ var noDefaults = _a.noDefaults, projectId = _a.projectId;
75
+ return __awaiter(_this, void 0, void 0, function () {
76
+ var fwd, projectFromContext, project, _b, _c, services, addons, e_1;
77
+ return __generator(this, function (_d) {
78
+ switch (_d.label) {
79
+ case 0:
80
+ (0, utils_1.assertContextExisting)(this.apiClient);
81
+ fwd = this.getProxyForwarder();
82
+ projectFromContext = noDefaults ? undefined : apiContext.getCurrentProjectName();
83
+ _b = projectId || projectFromContext;
84
+ if (_b) return [3 /*break*/, 2];
85
+ return [4 /*yield*/, inquirerHelper.askForProject()];
86
+ case 1:
87
+ _b = (_d.sent());
88
+ _d.label = 2;
89
+ case 2:
90
+ project = _b;
91
+ _d.label = 3;
92
+ case 3:
93
+ _d.trys.push([3, 8, , 9]);
94
+ return [4 /*yield*/, fwd.forwardProject({ projectId: project }, false)];
95
+ case 4:
96
+ _c = _d.sent(), services = _c.services, addons = _c.addons;
97
+ if (!(services.length + addons.length <= 0)) return [3 /*break*/, 5];
98
+ (0, utils_1.warning)("No services and addons to forward found in project " + chalk_1.default.bold(project));
99
+ return [3 /*break*/, 7];
100
+ case 5:
101
+ console.log("Forwarding " + chalk_1.default.green.bold(services.length + " service ports") + " and " + chalk_1.default.green.bold(addons.length + " addon ports") + " in project " + chalk_1.default.bold(project));
102
+ return [4 /*yield*/, Promise.all(__spreadArray(__spreadArray([], services, true), addons, true))];
103
+ case 6:
104
+ _d.sent();
105
+ _d.label = 7;
106
+ case 7: return [3 /*break*/, 9];
107
+ case 8:
108
+ e_1 = _d.sent();
109
+ (0, utils_1.error)("Failed: " + e_1.message);
110
+ return [3 /*break*/, 9];
111
+ case 9: return [2 /*return*/];
112
+ }
113
+ });
114
+ });
115
+ });
116
+ var servicePortFwdCmd = (0, utils_1.getCommand)(true)
117
+ .name('service')
118
+ .description('Port-forwarding for the specified service')
119
+ .option('--project --projectId [NAME]', 'Project for forwarding')
120
+ .option('--service --serviceId [NAME]', 'Service to forward')
121
+ .option('--noDefaults', 'Always ask for project', false)
122
+ .action(function (_a) {
123
+ var noDefaults = _a.noDefaults, projectId = _a.projectId, serviceId = _a.serviceId;
124
+ return __awaiter(_this, void 0, void 0, function () {
125
+ var fwd, projectFromContext, project, _b, serviceFromContext, service, _c, e_2;
126
+ return __generator(this, function (_d) {
127
+ switch (_d.label) {
128
+ case 0:
129
+ (0, utils_1.assertContextExisting)(this.apiClient);
130
+ fwd = this.getProxyForwarder();
131
+ projectFromContext = noDefaults ? undefined : apiContext.getCurrentProjectName();
132
+ _b = projectId || projectFromContext;
133
+ if (_b) return [3 /*break*/, 2];
134
+ return [4 /*yield*/, inquirerHelper.askForProject()];
135
+ case 1:
136
+ _b = (_d.sent());
137
+ _d.label = 2;
138
+ case 2:
139
+ project = _b;
140
+ serviceFromContext = noDefaults ? undefined : apiContext.getCurrentServiceName();
141
+ _c = serviceId || serviceFromContext;
142
+ if (_c) return [3 /*break*/, 4];
143
+ return [4 /*yield*/, inquirerHelper.askForService(project)()];
144
+ case 3:
145
+ _c = (_d.sent());
146
+ _d.label = 4;
147
+ case 4:
148
+ service = _c;
149
+ console.log("Forwarding service " + chalk_1.default.bold(service) + " in project " + chalk_1.default.bold(project));
150
+ _d.label = 5;
151
+ case 5:
152
+ _d.trys.push([5, 7, , 8]);
153
+ return [4 /*yield*/, fwd.forwardService({ projectId: project, serviceId: service }, false)];
154
+ case 6:
155
+ _d.sent();
156
+ return [3 /*break*/, 8];
157
+ case 7:
158
+ e_2 = _d.sent();
159
+ (0, utils_1.error)("Failed: " + e_2.message);
160
+ return [3 /*break*/, 8];
161
+ case 8: return [2 /*return*/];
162
+ }
163
+ });
164
+ });
165
+ });
166
+ var addonPortFwdCmd = (0, utils_1.getCommand)(true)
167
+ .name('addon')
168
+ .description('Port-forwarding for the specified addon')
169
+ .option('--project --projectId [NAME]', 'project for forwarding')
170
+ .option('--addon --addonId [NAME]', 'Addon to forward')
171
+ .option('--noDefaults', 'Always ask for project', false)
172
+ .action(function (_a) {
173
+ var projectId = _a.projectId, addonId = _a.addonId, noDefaults = _a.noDefaults;
174
+ return __awaiter(_this, void 0, void 0, function () {
175
+ var projectFromContext, project, _b, addon, _c, fwd, e_3;
176
+ return __generator(this, function (_d) {
177
+ switch (_d.label) {
178
+ case 0:
179
+ (0, utils_1.assertContextExisting)(this.apiClient);
180
+ projectFromContext = noDefaults ? undefined : apiContext.getCurrentProjectName();
181
+ _b = projectId || projectFromContext;
182
+ if (_b) return [3 /*break*/, 2];
183
+ return [4 /*yield*/, inquirerHelper.askForProject()];
184
+ case 1:
185
+ _b = (_d.sent());
186
+ _d.label = 2;
187
+ case 2:
188
+ project = _b;
189
+ _c = addonId;
190
+ if (_c) return [3 /*break*/, 4];
191
+ return [4 /*yield*/, inquirerHelper.askForAddon(project)()];
192
+ case 3:
193
+ _c = (_d.sent());
194
+ _d.label = 4;
195
+ case 4:
196
+ addon = _c;
197
+ console.log("Forwarding addon " + chalk_1.default.bold(addon) + " in project " + chalk_1.default.bold(project));
198
+ fwd = this.getProxyForwarder();
199
+ _d.label = 5;
200
+ case 5:
201
+ _d.trys.push([5, 7, , 8]);
202
+ return [4 /*yield*/, fwd.forwardAddon({ projectId: project, addonId: addon }, false)];
203
+ case 6:
204
+ _d.sent();
205
+ return [3 /*break*/, 8];
206
+ case 7:
207
+ e_3 = _d.sent();
208
+ (0, utils_1.error)("Failed: " + e_3.message);
209
+ return [3 /*break*/, 8];
210
+ case 8: return [2 /*return*/];
211
+ }
212
+ });
213
+ });
214
+ });
215
+ this.portFwdCmd.addCommand(projectPortFwdCmd);
216
+ this.portFwdCmd.addCommand(servicePortFwdCmd);
217
+ this.portFwdCmd.addCommand(addonPortFwdCmd);
218
+ }
219
+ CliPortForward.prototype.getProxyForwarder = function () {
220
+ var _this = this;
221
+ var fwd = this.apiClient.forwarding;
222
+ var isAdmin = fwd.canExecuteWithHostnames();
223
+ if (isAdmin.error)
224
+ throw new Error(isAdmin.message);
225
+ fwd.on('tunnel-open', function (_tunnel, data) {
226
+ var identifier = chalk_1.default.greenBright.bold(data.type + " '" + data.id + "'");
227
+ (0, utils_1.success)("Exposing " + identifier + " on " + data.address + ":" + data.port + " (" + data.protocol + ") with these hostnames:");
228
+ data.hostnames.forEach(function (hostname) {
229
+ (0, utils_1.success)(" " + hostname + ":" + data.port);
230
+ });
231
+ (0, utils_1.success)('');
232
+ });
233
+ fwd.on('tunnel-close', function (_tunnel, data) {
234
+ var identifier = chalk_1.default.greenBright.bold(data.type + " '" + data.id + "'");
235
+ (0, utils_1.warning)("Stop forwarding traffic from " + data.address + ":" + data.port + " to " + identifier + " for these hostnames:");
236
+ data.hostnames.forEach(function (hostname) {
237
+ (0, utils_1.warning)(" " + hostname + ":" + data.port);
238
+ });
239
+ (0, utils_1.warning)('');
240
+ });
241
+ fwd.on('connection-error', function (_tunnel, info, err) {
242
+ (0, utils_1.warning)("Connection error occurred when forwarding '" + info.address + ":" + info.address + "': \"" + (err === null || err === void 0 ? void 0 : err.message) + "\"");
243
+ });
244
+ process.on('SIGINT', function () { return __awaiter(_this, void 0, void 0, function () {
245
+ var e_4;
246
+ return __generator(this, function (_a) {
247
+ switch (_a.label) {
248
+ case 0:
249
+ _a.trys.push([0, 2, 3, 4]);
250
+ return [4 /*yield*/, fwd.stop()];
251
+ case 1:
252
+ _a.sent();
253
+ return [3 /*break*/, 4];
254
+ case 2:
255
+ e_4 = _a.sent();
256
+ (0, utils_1.error)("Cleaning up open connections failed: " + e_4.message);
257
+ return [3 /*break*/, 4];
258
+ case 3:
259
+ process.exit();
260
+ return [7 /*endfinally*/];
261
+ case 4: return [2 /*return*/];
262
+ }
263
+ });
264
+ }); });
265
+ return fwd;
266
+ };
267
+ return CliPortForward;
268
+ }());
269
+ exports.CliPortForward = CliPortForward;
package/dist/utils.js CHANGED
@@ -1 +1,201 @@
1
- 'use strict';var a18U=['retry','customUserAgent','default','pop','asyncSequential','yellow','Command','success','494062DgkDyV','sent','1JCjJVz','green','call','\x27\x20**','getDate','commander','34459mQUQXp','No\x20console\x20output','win32','--verbose','getCommand','1lROKom','code','label','184430tsqODN','reduce','../package.json','name','done','storeOptionsAsProperties','\x20Consider\x20updating\x20using\x20\x27npm\x20i\x20','700800AfAgvF','version','https://registry.npmjs.org/','You\x20are\x20not\x20running\x20this\x20command\x20with\x20sufficient\x20privileges\x20(uid=','split','next','return','getuid','Verbose\x20output','--quiet','__generator','child_process','1667063tzUKyA','18gqbffU','push','replace','147391WtlaDJ','chalk',',\x20the\x20latest\x20version\x20of\x20the\x20cli\x20is\x20','function','defineProperty','option','fltmc','checkUpdate','northflank-cli/','__importDefault','allowUnknownOption','log',').\x20Try\x20running\x20with\x20\x27sudo\x27.','length','error','fsutil\x20dirty\x20query\x20%systemdrive%','execSync','1MQxFKW','__awaiter','GET','Generator\x20is\x20already\x20executing.','ops','__esModule','isRunningAsAdmin','warning','then','**\x20You\x27re\x20running\x20on\x20version\x20','isValidJSON','You\x20are\x20not\x20running\x20this\x20command\x20as\x20administrator.\x20Please\x20start\x20command\x20line\x20with\x20admin\x20rights.','701726WWYkjT','trys','value','throw'];var a18v=a18k;(function(U,k){var I=a18k;while(!![]){try{var G=-parseInt(I(0x17d))*-parseInt(I(0x199))+parseInt(I(0x18c))+-parseInt(I(0x19c))*parseInt(I(0x177))+parseInt(I(0x175))+parseInt(I(0x1ad))*-parseInt(I(0x185))+parseInt(I(0x169))+parseInt(I(0x182))*-parseInt(I(0x198));if(G===k)break;else U['push'](U['shift']());}catch(Q){U['push'](U['shift']());}}}(a18U,0x7e74e));function a18k(U,k){U=U-0x164;var G=a18U[U];return G;}var __awaiter=this&&this[a18v(0x1ae)]||function(U,k,G,Q){function f(C){return C instanceof G?C:new G(function(y){y(C);});}return new(G||(G=Promise))(function(C,y){var Z=a18k;function e(i){var R=a18k;try{s(Q[R(0x191)](i));}catch(g){y(g);}}function p(i){var b=a18k;try{s(Q[b(0x16c)](i));}catch(g){y(g);}}function s(i){var d=a18k;i['done']?C(i[d(0x16b)]):f(i[d(0x16b)])['then'](e,p);}s((Q=Q['apply'](U,k||[]))[Z(0x191)]());});},__generator=this&&this[a18v(0x196)]||function(U,k){var n=a18v,G={'label':0x0,'sent':function(){if(e[0x0]&0x1)throw e[0x1];return e[0x1];},'trys':[],'ops':[]},Q,C,e,p;return p={'next':s(0x0),'throw':s(0x1),'return':s(0x2)},typeof Symbol===n(0x19f)&&(p[Symbol['iterator']]=function(){return this;}),p;function s(L){return function(H){return i([L,H]);};}function i(L){var J=n;if(Q)throw new TypeError(J(0x1b0));while(G)try{if(Q=0x1,C&&(e=L[0x0]&0x2?C[J(0x192)]:L[0x0]?C['throw']||((e=C['return'])&&e[J(0x179)](C),0x0):C[J(0x191)])&&!(e=e['call'](C,L[0x1]))[J(0x189)])return e;if(C=0x0,e)L=[L[0x0]&0x2,e['value']];switch(L[0x0]){case 0x0:case 0x1:e=L;break;case 0x4:G['label']++;return{'value':L[0x1],'done':![]};case 0x5:G[J(0x184)]++,C=L[0x1],L=[0x0];continue;case 0x7:L=G[J(0x1b1)]['pop'](),G[J(0x16a)]['pop']();continue;default:if(!(e=G[J(0x16a)],e=e[J(0x1a9)]>0x0&&e[e[J(0x1a9)]-0x1])&&(L[0x0]===0x6||L[0x0]===0x2)){G=0x0;continue;}if(L[0x0]===0x3&&(!e||L[0x1]>e[0x0]&&L[0x1]<e[0x3])){G[J(0x184)]=L[0x1];break;}if(L[0x0]===0x6&&G[J(0x184)]<e[0x1]){G[J(0x184)]=e[0x1],e=L;break;}if(e&&G[J(0x184)]<e[0x2]){G[J(0x184)]=e[0x2],G['ops'][J(0x19a)](L);break;}if(e[0x2])G[J(0x1b1)]['pop']();G[J(0x16a)][J(0x170)]();continue;}L=k[J(0x179)](U,G);}catch(H){L=[0x6,H],C=0x0;}finally{Q=e=0x0;}if(L[0x0]&0x5)throw L[0x1];return{'value':L[0x0]?L[0x1]:void 0x0,'done':!![]};}},__importDefault=this&&this[a18v(0x1a5)]||function(U){var r=a18v;return U&&U[r(0x1b2)]?U:{'default':U};};Object[a18v(0x1a0)](exports,a18v(0x1b2),{'value':!![]}),exports[a18v(0x167)]=exports[a18v(0x171)]=exports[a18v(0x16d)]=exports[a18v(0x181)]=exports['isRunningAsAdmin']=exports[a18v(0x174)]=exports[a18v(0x164)]=exports[a18v(0x1aa)]=exports[a18v(0x1a3)]=exports[a18v(0x16e)]=void 0x0;var node_fetch_1=__importDefault(require('node-fetch')),chalk_1=__importDefault(require(a18v(0x19d))),commander_1=require(a18v(0x17c)),execSync=require(a18v(0x197))[a18v(0x1ac)],pgk=require(a18v(0x187));exports['customUserAgent']=a18v(0x1a4)+(pgk===null||pgk===void 0x0?void 0x0:pgk[a18v(0x18d)]);function checkUpdate(U){return __awaiter(this,void 0x0,void 0x0,function(){function k(p,s){var Y=a18k,i=new Date(Number(p));return i['setDate'](i[Y(0x17b)]()+s),i;}var G,Q,f,C,y,e;return __generator(this,function(p){var z=a18k;switch(p[z(0x184)]){case 0x0:p[z(0x16a)][z(0x19a)]([0x0,0x4,,0x5]);if(k(U['getLastUpdateCheck'](),0x1)>new Date())return[0x2];G=pgk['version'],Q=pgk[z(0x188)];if(!G)return[0x2];f=z(0x18e)+Q+'/latest';return[0x4,node_fetch_1[z(0x16f)](f,{'method':z(0x1af),'timeout':0x1388})];case 0x1:C=p['sent']();return[0x4,C['json']()];case 0x2:y=p[z(0x176)]()[z(0x18d)];needsUpdate(G,y)&&warning(z(0x166)+G+z(0x19e)+y+'.'+(z(0x18b)+Q+'\x20-g\x27\x20or\x20\x27yarn\x20global\x20add\x20'+Q+z(0x17a)));return[0x4,U['setLastUpdateCheck'](new Date())];case 0x3:p[z(0x176)]();return[0x3,0x5];case 0x4:e=p[z(0x176)]();return[0x3,0x5];case 0x5:return[0x2];}});});}exports['checkUpdate']=checkUpdate;function needsUpdate(U,k){var T=a18v,G=/(\.0+)+$/,Q=U[T(0x19b)](G,'')[T(0x190)]('.'),f=k[T(0x19b)](G,'')[T(0x190)]('.');for(var C=0x0;C<Math['min'](Q[T(0x1a9)],f['length']);C+=0x1){var y=parseInt(f[C],0xa)-parseInt(Q[C],0xa);if(y>0x0)return!![];if(y<0x0)return![];}return f['length']>Q['length'];}function error(U){var P=a18v;console[P(0x1a7)](chalk_1['default']['redBright']('Failed:\x20'+U));}exports[a18v(0x1aa)]=error;function warning(U){var a=a18v;console[a(0x1a7)](chalk_1[a(0x16f)][a(0x172)](''+U));}exports['warning']=warning;function success(U){var K=a18v;console['log'](chalk_1[K(0x16f)][K(0x178)](''+U));}exports[a18v(0x174)]=success;function isRunningAsAdmin(){var N=a18v,U=function(){var h=a18k;return!(process[h(0x193)]&&process['getuid']()!==0x0);},k=function(){var V=a18k;try{return execSync(V(0x1ab)),!![];}catch(G){if(G[V(0x183)]==='ENOENT')try{return execSync(V(0x1a2)),!![];}catch(Q){return![];}return![];}};if(process['platform']!==N(0x17f)){if(U())return!![];return error(N(0x18f)+process['getuid']()+N(0x1a8)),![];}if(k())return!![];return error(N(0x168)),![];}exports[a18v(0x1b3)]=isRunningAsAdmin;function getCommand(U){var w=a18v;U===void 0x0&&(U=![]);var k=new commander_1[(w(0x173))]();return k[w(0x18a)](![]),k[w(0x1a6)](![]),k['passCommandToAction'](![]),U&&(k[w(0x1a1)](w(0x180),w(0x194),![]),k[w(0x1a1)](w(0x195),w(0x17e),![])),k;}exports['getCommand']=getCommand;var retry=function(U,k){return k===void 0x0&&(k=0x32),function(G){var Q=U,f=function(){return __awaiter(void 0x0,void 0x0,void 0x0,function(){var C;return __generator(this,function(y){var q=a18k;switch(y[q(0x184)]){case 0x0:y[q(0x16a)][q(0x19a)]([0x0,0x2,,0x4]);return[0x4,G()];case 0x1:return[0x2,y['sent']()];case 0x2:C=y['sent']();if(Q<=0x0)throw C;Q-=0x1;return[0x4,new Promise(function(e){return setTimeout(function(){return e();},k);})];case 0x3:y[q(0x176)]();return[0x2,f()];case 0x4:return[0x2];}});});};return f();};};exports[a18v(0x16d)]=retry;var asyncSequential=function(U,k){return __awaiter(void 0x0,void 0x0,void 0x0,function(){var G;return __generator(this,function(Q){var O=a18k;return G=Promise['resolve']([]),[0x2,U[O(0x186)](function(f,C){var j=O;return f[j(0x165)](function(y){var M=j;return k(C)[M(0x165)](function(e){var F=M;return y[F(0x19a)](e),y;});});},G)];});});};exports[a18v(0x171)]=asyncSequential;function isValidJSON(U){try{return JSON['parse'](U);}catch(k){return![];}}exports[a18v(0x167)]=isValidJSON;
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.assertContextExisting = exports.isValidJSON = exports.asyncSequential = exports.retry = exports.getCommand = exports.success = exports.warning = exports.error = exports.checkUpdate = exports.customUserAgent = void 0;
43
+ var node_fetch_1 = __importDefault(require("node-fetch"));
44
+ var chalk_1 = __importDefault(require("chalk"));
45
+ var commander_1 = require("commander");
46
+ var pgk = require('../package.json');
47
+ exports.customUserAgent = "northflank-cli/" + (pgk === null || pgk === void 0 ? void 0 : pgk.version);
48
+ /**
49
+ * Checks if there is a newer version of the package and prints a notice to the command line if this is the case.
50
+ */
51
+ function checkUpdate(contextProvider) {
52
+ return __awaiter(this, void 0, void 0, function () {
53
+ function addDays(date, days) {
54
+ var copy = new Date(Number(date));
55
+ copy.setDate(copy.getDate() + days);
56
+ return copy;
57
+ }
58
+ var currentVersion, name_1, packageVersionUrl, response, latestVersion, e_1;
59
+ return __generator(this, function (_a) {
60
+ switch (_a.label) {
61
+ case 0:
62
+ _a.trys.push([0, 4, , 5]);
63
+ if (addDays(contextProvider.getLastUpdateCheck(), 1) > new Date()) {
64
+ return [2 /*return*/];
65
+ }
66
+ currentVersion = pgk.version;
67
+ name_1 = pgk.name;
68
+ if (!currentVersion) {
69
+ return [2 /*return*/];
70
+ }
71
+ packageVersionUrl = "https://registry.npmjs.org/" + name_1 + "/latest";
72
+ return [4 /*yield*/, (0, node_fetch_1.default)(packageVersionUrl, { method: 'GET', timeout: 5000 })];
73
+ case 1:
74
+ response = _a.sent();
75
+ return [4 /*yield*/, response.json()];
76
+ case 2:
77
+ latestVersion = (_a.sent()).version;
78
+ if (needsUpdate(currentVersion, latestVersion)) {
79
+ warning("** You're running on version " + currentVersion + ", the latest version of the cli is " + latestVersion + "." +
80
+ (" Consider updating using 'npm i " + name_1 + " -g' or 'yarn global add " + name_1 + "' **"));
81
+ }
82
+ return [4 /*yield*/, contextProvider.setLastUpdateCheck(new Date())];
83
+ case 3:
84
+ _a.sent();
85
+ return [3 /*break*/, 5];
86
+ case 4:
87
+ e_1 = _a.sent();
88
+ return [3 /*break*/, 5];
89
+ case 5: return [2 /*return*/];
90
+ }
91
+ });
92
+ });
93
+ }
94
+ exports.checkUpdate = checkUpdate;
95
+ /** @return true if currentVersion is smaller than latestVersion
96
+ */
97
+ function needsUpdate(currentVersion, latestVersion) {
98
+ var regExStrip0 = /(\.0+)+$/;
99
+ var segmentsCurrent = currentVersion.replace(regExStrip0, '').split('.');
100
+ var segmentsLatest = latestVersion.replace(regExStrip0, '').split('.');
101
+ for (var i = 0; i < Math.min(segmentsCurrent.length, segmentsLatest.length); i += 1) {
102
+ var diff = parseInt(segmentsLatest[i], 10) - parseInt(segmentsCurrent[i], 10);
103
+ if (diff > 0) {
104
+ return true;
105
+ }
106
+ if (diff < 0) {
107
+ return false;
108
+ }
109
+ }
110
+ return segmentsLatest.length > segmentsCurrent.length;
111
+ }
112
+ /** Printer helpers */
113
+ function error(msg) {
114
+ console.log(chalk_1.default.redBright("Failed: " + msg));
115
+ }
116
+ exports.error = error;
117
+ function warning(msg) {
118
+ console.log(chalk_1.default.yellow("" + msg));
119
+ }
120
+ exports.warning = warning;
121
+ function success(msg) {
122
+ console.log(chalk_1.default.green("" + msg));
123
+ }
124
+ exports.success = success;
125
+ function getCommand(withOptions) {
126
+ if (withOptions === void 0) { withOptions = false; }
127
+ var command = new commander_1.Command();
128
+ command.storeOptionsAsProperties(false);
129
+ command.allowUnknownOption(false);
130
+ command.allowExcessArguments(false);
131
+ command.enablePositionalOptions(true); // Avoid properties clash with --name option
132
+ if (withOptions) {
133
+ command.option('--verbose', 'Verbose output', false);
134
+ command.option('--quiet', 'No console output', false);
135
+ }
136
+ return command;
137
+ }
138
+ exports.getCommand = getCommand;
139
+ var retry = function (retries, retryDelay) {
140
+ if (retryDelay === void 0) { retryDelay = 50; }
141
+ return function (action) {
142
+ var retriesCounter = retries;
143
+ var retryRecursive = function () { return __awaiter(void 0, void 0, void 0, function () {
144
+ var e_2;
145
+ return __generator(this, function (_a) {
146
+ switch (_a.label) {
147
+ case 0:
148
+ _a.trys.push([0, 2, , 4]);
149
+ return [4 /*yield*/, action()];
150
+ case 1: return [2 /*return*/, _a.sent()];
151
+ case 2:
152
+ e_2 = _a.sent();
153
+ if (retriesCounter <= 0) {
154
+ throw e_2;
155
+ }
156
+ retriesCounter -= 1;
157
+ return [4 /*yield*/, new Promise(function (r) { return setTimeout(function () { return r(); }, retryDelay); })];
158
+ case 3:
159
+ _a.sent();
160
+ return [2 /*return*/, retryRecursive()];
161
+ case 4: return [2 /*return*/];
162
+ }
163
+ });
164
+ }); };
165
+ return retryRecursive();
166
+ };
167
+ };
168
+ exports.retry = retry;
169
+ var asyncSequential = function (elements, op) { return __awaiter(void 0, void 0, void 0, function () {
170
+ var empty;
171
+ return __generator(this, function (_a) {
172
+ empty = Promise.resolve([]);
173
+ return [2 /*return*/, elements.reduce(function (prevPromise, element) {
174
+ return prevPromise.then(function (result) {
175
+ return op(element).then(function (r) {
176
+ result.push(r);
177
+ return result;
178
+ });
179
+ });
180
+ }, empty)];
181
+ });
182
+ }); };
183
+ exports.asyncSequential = asyncSequential;
184
+ function isValidJSON(str) {
185
+ try {
186
+ return JSON.parse(str);
187
+ }
188
+ catch (e) {
189
+ return false;
190
+ }
191
+ }
192
+ exports.isValidJSON = isValidJSON;
193
+ function assertContextExisting(apiClient) {
194
+ if (apiClient.contextProvider.getCurrentContext() === undefined)
195
+ throw new Error("No CLI context present. Create context with 'northflank login'");
196
+ if (apiClient.contextProvider.getCurrentBaseUrl() === undefined)
197
+ throw new Error("No API URL present in context. Create new context with 'northflank login'");
198
+ if (apiClient.contextProvider.getCurrentToken() === undefined)
199
+ throw new Error("No token in CLI context. Add token with 'northflank set-token'");
200
+ }
201
+ exports.assertContextExisting = assertContextExisting;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@northflank/cli",
3
- "version": "0.4.5",
3
+ "version": "0.6.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",
@@ -24,17 +24,15 @@
24
24
  "LICENSE"
25
25
  ],
26
26
  "dependencies": {
27
- "@northflank/js-client": "0.2.3",
27
+ "@northflank/js-client": "0.4.0",
28
28
  "ajv": "^6.12.4",
29
29
  "chalk": "~4.1.0",
30
30
  "columnify": "^1.5.4",
31
- "commander": "^6.1.0",
31
+ "commander": "^8.2.0",
32
32
  "inquirer": "^7.3.3",
33
33
  "js-yaml": "^3.14.0",
34
34
  "lodash": "^4.17.15",
35
- "node-fetch": "^2.6.0",
36
- "pump": "^3.0.0",
37
- "ws": "^7.3.1"
35
+ "node-fetch": "2.6.1"
38
36
  },
39
37
  "devDependencies": {
40
38
  "ts-node": "^8.10.2",
package/postinstall.js CHANGED
@@ -8,18 +8,9 @@ function link(url) {
8
8
  }
9
9
 
10
10
  console.log(chalk.greenBright.bold(`The Northflank CLI has been installed successfully.`));
11
- console.log(
12
- chalk.yellowBright(`WARNING: This package is in beta status and subject to frequent changes.
13
- In case you encounter any bugs, errors or issues,
14
- feel free to contact us here ${link('https://northflank.com/contact')}`)
15
- );
16
11
  console.log(`Run ${cmdFmt('northflank login')} to connect to your Northflank account. `);
17
12
  console.log(`If you don't have a token yet, create it on ${link('https://app.northflank.com')}`);
18
13
  console.log('');
19
14
  console.log(`For more help, run ${cmdFmt('northflank help')}`);
20
- console.log(
21
- `Visit the documentation at ${link(
22
- 'https://northflank.com/docs/v1/api/introduction#about-the-cli'
23
- )}`
24
- );
15
+ console.log(`Visit the documentation at ${link('https://northflank.com/docs/v1/api/use-the-cli')}`);
25
16
  console.log('');
@@ -1 +0,0 @@
1
- 'use strict';var a7U=['522478tYGsbL','__assign','1739grhPgF','node-fetch','push','call','348200qVQyDa','throw','sent','pop','/v1/port-forwarding/info/projects/','prototype','done','return','bind','getCurrentToken','735617itEDgh','length','__esModule','contextProvider','929170xjuKLd','25174MBhoJr','label','fetch','apply','getServiceDetails','1394qlrECX','json','next','629VnIGpk','lodash','PortProxyApiClient','function','stringify','getCurrentBaseUrl','default','ops','69SgDSdE','__importDefault','defineProperty','merge','assign','__awaiter','then','application/json','hasOwnProperty','416MvSkEc','trys','value'];var a7v=a7k;function a7k(U,k){U=U-0x1b4;var G=a7U[U];return G;}(function(U,k){var I=a7k;while(!![]){try{var G=-parseInt(I(0x1c0))*parseInt(I(0x1c3))+parseInt(I(0x1b6))+-parseInt(I(0x1ba))+-parseInt(I(0x1d7))+-parseInt(I(0x1dd))+parseInt(I(0x1d9))*parseInt(I(0x1d4))+-parseInt(I(0x1cb))*-parseInt(I(0x1bb));if(G===k)break;else U['push'](U['shift']());}catch(Q){U['push'](U['shift']());}}}(a7U,0x7eccd));var __assign=this&&this[a7v(0x1d8)]||function(){var R=a7v;return __assign=Object[R(0x1cf)]||function(U){var b=R;for(var k,G=0x1,Q=arguments[b(0x1b7)];G<Q;G++){k=arguments[G];for(var f in k)if(Object[b(0x1e2)][b(0x1d3)][b(0x1dc)](k,f))U[f]=k[f];}return U;},__assign['apply'](this,arguments);},__awaiter=this&&this[a7v(0x1d0)]||function(U,k,G,Q){function f(C){return C instanceof G?C:new G(function(y){y(C);});}return new(G||(G=Promise))(function(C,y){var J=a7k;function e(i){var d=a7k;try{s(Q[d(0x1c2)](i));}catch(g){y(g);}}function p(i){var Z=a7k;try{s(Q[Z(0x1de)](i));}catch(g){y(g);}}function s(i){var n=a7k;i[n(0x1e3)]?C(i[n(0x1d6)]):f(i[n(0x1d6)])[n(0x1d1)](e,p);}s((Q=Q[J(0x1be)](U,k||[]))[J(0x1c2)]());});},__generator=this&&this['__generator']||function(U,k){var r=a7v,G={'label':0x0,'sent':function(){if(e[0x0]&0x1)throw e[0x1];return e[0x1];},'trys':[],'ops':[]},Q,C,e,p;return p={'next':s(0x0),'throw':s(0x1),'return':s(0x2)},typeof Symbol===r(0x1c6)&&(p[Symbol['iterator']]=function(){return this;}),p;function s(L){return function(H){return i([L,H]);};}function i(L){var Y=r;if(Q)throw new TypeError('Generator\x20is\x20already\x20executing.');while(G)try{if(Q=0x1,C&&(e=L[0x0]&0x2?C[Y(0x1e4)]:L[0x0]?C[Y(0x1de)]||((e=C[Y(0x1e4)])&&e[Y(0x1dc)](C),0x0):C[Y(0x1c2)])&&!(e=e[Y(0x1dc)](C,L[0x1]))[Y(0x1e3)])return e;if(C=0x0,e)L=[L[0x0]&0x2,e['value']];switch(L[0x0]){case 0x0:case 0x1:e=L;break;case 0x4:G[Y(0x1bc)]++;return{'value':L[0x1],'done':![]};case 0x5:G['label']++,C=L[0x1],L=[0x0];continue;case 0x7:L=G[Y(0x1ca)][Y(0x1e0)](),G['trys']['pop']();continue;default:if(!(e=G['trys'],e=e[Y(0x1b7)]>0x0&&e[e[Y(0x1b7)]-0x1])&&(L[0x0]===0x6||L[0x0]===0x2)){G=0x0;continue;}if(L[0x0]===0x3&&(!e||L[0x1]>e[0x0]&&L[0x1]<e[0x3])){G[Y(0x1bc)]=L[0x1];break;}if(L[0x0]===0x6&&G[Y(0x1bc)]<e[0x1]){G[Y(0x1bc)]=e[0x1],e=L;break;}if(e&&G[Y(0x1bc)]<e[0x2]){G[Y(0x1bc)]=e[0x2],G[Y(0x1ca)][Y(0x1db)](L);break;}if(e[0x2])G['ops'][Y(0x1e0)]();G[Y(0x1d5)]['pop']();continue;}L=k[Y(0x1dc)](U,G);}catch(H){L=[0x6,H],C=0x0;}finally{Q=e=0x0;}if(L[0x0]&0x5)throw L[0x1];return{'value':L[0x0]?L[0x1]:void 0x0,'done':!![]};}},__importDefault=this&&this[a7v(0x1cc)]||function(U){var z=a7v;return U&&U[z(0x1b8)]?U:{'default':U};};Object[a7v(0x1cd)](exports,a7v(0x1b8),{'value':!![]}),exports[a7v(0x1c5)]=void 0x0;var lodash_1=__importDefault(require(a7v(0x1c4))),node_fetch_1=__importDefault(require(a7v(0x1da))),PortProxyApiClient=function(){var P=a7v;function U(k){var T=a7k;this[T(0x1b9)]=k;}return U[P(0x1e2)][P(0x1bf)]=function(k,G){return __awaiter(this,void 0x0,void 0x0,function(){return __generator(this,function(Q){var a=a7k;return[0x2,this[a(0x1bd)](this['contextProvider'][a(0x1c8)]()+'/v1/port-forwarding/info/projects/'+k+'/services/'+G)];});});},U['prototype']['getAddonDetails']=function(k,G){return __awaiter(this,void 0x0,void 0x0,function(){return __generator(this,function(Q){var K=a7k;return[0x2,this[K(0x1bd)](this[K(0x1b9)][K(0x1c8)]()+K(0x1e1)+k+'/addons/'+G)];});});},U['prototype']['fetch']=function(k,G){return __awaiter(this,void 0x0,void 0x0,function(){var Q,f,C,y,e;return __generator(this,function(p){var h=a7k;switch(p[h(0x1bc)]){case 0x0:Q=lodash_1[h(0x1c9)][h(0x1ce)]({},{'headers':{'Authorization':'Bearer\x20'+this[h(0x1b9)][h(0x1b5)](),'Content-Type':h(0x1d2)}},__assign({},G));return[0x4,node_fetch_1[h(0x1c9)](k,Q)];case 0x1:f=p[h(0x1df)]();if(!!f['ok'])return[0x3,0x3];C=Error[h(0x1b4)],e=(y=JSON)[h(0x1c7)];return[0x4,f[h(0x1c1)]()];case 0x2:throw new(C['apply'](Error,[void 0x0,e[h(0x1be)](y,[p[h(0x1df)]()])]))();case 0x3:return[0x4,f['json']()];case 0x4:return[0x2,p['sent']()];}});});},U;}();exports[a7v(0x1c5)]=PortProxyApiClient;
@@ -1 +0,0 @@
1
- 'use strict';var a8U=['14TYICae','1495696TAJcVb','random','existsSync','__importDefault','throw','return','next','unlink','18060LoNFVR','36byRIZV','1833032sOGMHo','dirname','sent','toString','length','done','writeFile','1aZtWDP','2026661SgzSQw','trys','catch','1195429GlOLHI','__awaiter','promises','label','3316owYSvQ','iterator','value','__spreadArray','__esModule','Generator\x20is\x20already\x20executing.','default','call','rename','defineProperty','floor','basename','ops','function','pop','224929AtAqRl','2wTupuB'];var a8v=a8k;(function(U,k){var I=a8k;while(!![]){try{var G=parseInt(I(0xba))*-parseInt(I(0xcb))+-parseInt(I(0xcf))+-parseInt(I(0xb7))*-parseInt(I(0xb8))+parseInt(I(0xd3))*-parseInt(I(0xb9))+parseInt(I(0xc4))+parseInt(I(0xc2))*-parseInt(I(0xc3))+parseInt(I(0xcc));if(G===k)break;else U['push'](U['shift']());}catch(Q){U['push'](U['shift']());}}}(a8U,0xe10f2));var __awaiter=this&&this[a8v(0xd0)]||function(U,k,G,Q){function f(C){return C instanceof G?C:new G(function(y){y(C);});}return new(G||(G=Promise))(function(C,y){var Z=a8k;function e(i){var R=a8k;try{s(Q[R(0xc0)](i));}catch(g){y(g);}}function p(i){var b=a8k;try{s(Q[b(0xbe)](i));}catch(g){y(g);}}function s(i){var d=a8k;i['done']?C(i[d(0xd5)]):f(i[d(0xd5)])['then'](e,p);}s((Q=Q['apply'](U,k||[]))[Z(0xc0)]());});},__generator=this&&this['__generator']||function(U,k){var n=a8v,G={'label':0x0,'sent':function(){if(e[0x0]&0x1)throw e[0x1];return e[0x1];},'trys':[],'ops':[]},Q,C,e,p;return p={'next':s(0x0),'throw':s(0x1),'return':s(0x2)},typeof Symbol===n(0xb5)&&(p[Symbol[n(0xd4)]]=function(){return this;}),p;function s(L){return function(H){return i([L,H]);};}function i(L){var J=n;if(Q)throw new TypeError(J(0xad));while(G)try{if(Q=0x1,C&&(e=L[0x0]&0x2?C[J(0xbf)]:L[0x0]?C[J(0xbe)]||((e=C[J(0xbf)])&&e[J(0xaf)](C),0x0):C['next'])&&!(e=e['call'](C,L[0x1]))[J(0xc9)])return e;if(C=0x0,e)L=[L[0x0]&0x2,e['value']];switch(L[0x0]){case 0x0:case 0x1:e=L;break;case 0x4:G['label']++;return{'value':L[0x1],'done':![]};case 0x5:G['label']++,C=L[0x1],L=[0x0];continue;case 0x7:L=G[J(0xb4)][J(0xb6)](),G[J(0xcd)][J(0xb6)]();continue;default:if(!(e=G[J(0xcd)],e=e[J(0xc8)]>0x0&&e[e[J(0xc8)]-0x1])&&(L[0x0]===0x6||L[0x0]===0x2)){G=0x0;continue;}if(L[0x0]===0x3&&(!e||L[0x1]>e[0x0]&&L[0x1]<e[0x3])){G[J(0xd2)]=L[0x1];break;}if(L[0x0]===0x6&&G[J(0xd2)]<e[0x1]){G[J(0xd2)]=e[0x1],e=L;break;}if(e&&G[J(0xd2)]<e[0x2]){G[J(0xd2)]=e[0x2],G['ops']['push'](L);break;}if(e[0x2])G['ops'][J(0xb6)]();G[J(0xcd)][J(0xb6)]();continue;}L=k[J(0xaf)](U,G);}catch(H){L=[0x6,H],C=0x0;}finally{Q=e=0x0;}if(L[0x0]&0x5)throw L[0x1];return{'value':L[0x0]?L[0x1]:void 0x0,'done':!![]};}},__spreadArray=this&&this[a8v(0xd6)]||function(U,k){var r=a8v;for(var G=0x0,Q=k[r(0xc8)],f=U[r(0xc8)];G<Q;G++,f++)U[f]=k[G];return U;},__importDefault=this&&this[a8v(0xbd)]||function(U){return U&&U['__esModule']?U:{'default':U};};Object[a8v(0xb1)](exports,a8v(0xac),{'value':!![]}),exports[a8v(0xca)]=void 0x0;var fs_1=__importDefault(require('fs')),path_1=__importDefault(require('path')),writeFile=function(U,k,G){return __awaiter(void 0x0,void 0x0,void 0x0,function(){var Q,f;return __generator(this,function(C){var Y=a8k;switch(C[Y(0xd2)]){case 0x0:Q=getTempFilePath(U,0xa);return[0x4,fs_1[Y(0xae)][Y(0xd1)][Y(0xca)](Q,k,G)];case 0x1:C[Y(0xc6)](),C[Y(0xd2)]=0x2;case 0x2:C[Y(0xcd)]['push']([0x2,0x4,,0x6]);return[0x4,fs_1[Y(0xae)][Y(0xd1)][Y(0xb0)](Q,U)];case 0x3:C[Y(0xc6)]();return[0x3,0x6];case 0x4:f=C[Y(0xc6)]();return[0x4,fs_1[Y(0xae)][Y(0xd1)][Y(0xc1)](Q)[Y(0xce)](function(){})];case 0x5:C[Y(0xc6)]();throw f;case 0x6:return[0x2];}});});};exports[a8v(0xca)]=writeFile;function a8k(U,k){U=U-0xac;var G=a8U[U];return G;}var getTempFilePath=function(U,k){var T=a8v,G,Q=function(g){return __spreadArray([],Array(g))['map'](function(){var z=a8k;return Math[z(0xb2)](Math[z(0xbb)]()*0x10)[z(0xc7)](0x10);})['join']('');},f=path_1[T(0xae)][T(0xc5)](U),C=path_1[T(0xae)][T(0xb3)](U);for(var y=0x0;(G=y<k)!==null&&G!==void 0x0?G:0xa;y+=0x1){var e=Q(0x10),p='.'+e+'.'+C,s=path_1['default']['join'](f,p);if(!fs_1[T(0xae)][T(0xbc)](s))return s;}throw new Error('Could\x20not\x20write\x20file\x20to\x20file\x20\x27'+U+'\x27.');};
@@ -1 +0,0 @@
1
- 'use strict';var a9U=['blank','splice','HostsFileAst','nodes','get','57044rOjZtv','call','44014oCnbIu','303389klBpTA','slice','entries','add','from','3EuonGY','maxBy','ipPrefixWhitespace','eol','length','3045727hqaPmA','parseHostsFile','generateHostsFile','1091060BlndrM','hosts','fromNodes','findEntries','entry','makeEntry','push','match','config','remove','hasOwnProperty','invalid','host','join','comment','default','some','5MZXwDt','55970AZCorh','prototype','defineProperty','filter','line','map','__esModule','__spreadArray','flatMap','19zyKiwY','644911zMjxPy','removeEntry','indent','__importDefault','apply','1yWtDBT','removeHosts','insertAt','__assign','toString','parse','whitespace','set','findOrCreateEntry','forEach','split','type'];var a9R=a9k;(function(U,k){var v=a9k;while(!![]){try{var G=-parseInt(v(0x134))*-parseInt(v(0x12f))+-parseInt(v(0x103))+-parseInt(v(0x12e))*-parseInt(v(0x105))+-parseInt(v(0x124))*-parseInt(v(0x125))+parseInt(v(0x113))+parseInt(v(0x106))*parseInt(v(0x10b))+-parseInt(v(0x110));if(G===k)break;else U['push'](U['shift']());}catch(Q){U['push'](U['shift']());}}}(a9U,0xa101b));function a9k(U,k){U=U-0xf4;var G=a9U[U];return G;}var __assign=this&&this[a9R(0xf5)]||function(){return __assign=Object['assign']||function(U){var b=a9k;for(var k,G=0x1,Q=arguments[b(0x10f)];G<Q;G++){k=arguments[G];for(var f in k)if(Object['prototype'][b(0x11d)][b(0x104)](k,f))U[f]=k[f];}return U;},__assign['apply'](this,arguments);},__spreadArray=this&&this[a9R(0x12c)]||function(U,k){var d=a9R;for(var G=0x0,Q=k[d(0x10f)],f=U[d(0x10f)];G<Q;G++,f++)U[f]=k[G];return U;},__importDefault=this&&this[a9R(0x132)]||function(U){var Z=a9R;return U&&U[Z(0x12b)]?U:{'default':U};};Object[a9R(0x127)](exports,'__esModule',{'value':!![]}),exports[a9R(0x111)]=exports[a9R(0x112)]=exports[a9R(0x100)]=void 0x0;var lodash_1=__importDefault(require('lodash')),isWindows=process['platform']==='win32',DEFAULT_EOL=isWindows?'\x0d\x0a':'\x0a',DEFAULT_INDENT=0x11,HostsFileAst=function(){var J=a9R;function U(k,G){var n=a9k;this[n(0x101)]=k,this['config']=G;}return U['prototype'][J(0x109)]=function(k,G,Q){var r=J,f=this;if(G['length']===0x0)return this;var C=this[r(0xfa)](k,Q);return G[r(0xfb)](function(y){var Y=r;if(C[Y(0x114)]['find'](function(p){var z=Y;return p[z(0x11f)]===y;}))return;var e=0x1;C['hosts'][Y(0x10f)]===0x0&&(e=f['config'][Y(0x131)]-(''+C[Y(0x10d)]+C['ip'])['length']),C[Y(0x114)][Y(0x119)]({'whitespace':'\x20'['repeat'](e<0x1?0x1:e),'host':y});}),this;},U[J(0x126)][J(0x11c)]=function(k,G){var T=J,Q=this;return this['findEntries'](k)[T(0xfb)](function(f){G['forEach'](function(C){var P=a9k,y=f[P(0x114)]['findIndex'](function(p){return p['host']===C;});if(y<0x0)return;y===0x0&&f['hosts'][0x1]!==undefined&&(f['hosts'][0x1][P(0xf8)]=f[P(0x114)][0x0][P(0xf8)]),f[P(0x114)]['splice'](y,0x1),f[P(0x114)][P(0x10f)]===0x0&&Q[P(0x130)](f);});}),this;},U['prototype'][J(0x135)]=function(k){var a=J,G=this;filterNodes(this[a(0x101)],'entry')[a(0xfb)](function(Q){var K=a;G[K(0x11c)](Q['ip'],k);});},U['prototype']['removeIps']=function(k){var h=J,G=this;return k[h(0xfb)](function(Q){var V=h;G['findEntries'](Q)[V(0xfb)](function(f){return G['removeEntry'](f);});}),this;},U['prototype']['resolveHosts']=function(k){var N=J;return lodash_1[N(0x122)][N(0x12d)](this['findEntries'](k),function(G){var w=N;return G[w(0x114)][w(0x12a)](function(Q){var q=w;return Q[q(0x11f)];});});},U[J(0x126)]['resolveIps']=function(k){var O=J;return filterNodes(this['nodes'],O(0x117))[O(0x128)](function(G){var j=O;return G[j(0x114)][j(0x123)](function(Q){var M=j;return Q[M(0x11f)]===k;});})[O(0x12a)](function(G){return G['ip'];});},U[J(0x126)][J(0xf6)]=function(){var F=J;return exports[F(0x112)](this[F(0x101)],this[F(0x11b)]['eol']);},U[J(0x126)][J(0x130)]=function(k){var u=J,G=lodash_1[u(0x122)]['isNumber'](k)?k:this['nodes']['findIndex'](function(Q){return Q===k;});if(G<0x0)return;this[u(0x101)][u(0xff)](G,0x1);},U[J(0x126)][J(0x116)]=function(k){var A=J;return filterNodes(this[A(0x101)],'entry')['filter'](function(G){return G['ip']===k;});},U['prototype']['findOrCreateEntry']=function(k,G){var l=J,Q=this[l(0x116)](k)[0x0];if(Q)return Q;var f=this[l(0x118)](k);if(G){var C=formatHeader(G),y=this[l(0x101)]['findIndex'](function(s){var X=l;return s[X(0xfd)]===X(0x121)&&s[X(0x129)]===C;});if(y>=0x0)this[l(0xf4)](y+0x1,f);else{var e=this[l(0x101)][this[l(0x101)][l(0x10f)]-0x1][l(0xfd)]!==l(0xfe),p=e?[blankNode(),commentNode(C),f]:[commentNode(C),f];this[l(0xf4)][l(0x133)](this,__spreadArray([this['nodes'][l(0x10f)]],p));}}else this[l(0xf4)](this[l(0x101)][l(0x10f)],f);return f;},U[J(0x126)][J(0xf4)]=function(k){var o=J,G,Q=[];for(var f=0x1;f<arguments[o(0x10f)];f++){Q[f-0x1]=arguments[f];}(G=this['nodes'])[o(0xff)][o(0x133)](G,__spreadArray([k,0x0],Q));},U[J(0x126)][J(0x118)]=function(k,G){var S=J,Q=this[S(0x11b)][S(0x10d)];return __assign({'type':S(0x117),'ip':k,'ipPrefixWhitespace':Q,'hosts':[]},G);},U['fromNodes']=function(k,G){var m=J,Q,f,C=function(){var c=a9k,e,p=filterNodes(k,c(0x10e))[c(0x12a)](function(s){return s['line'];});return(e=getMostCommonValue(p))!==null&&e!==void 0x0?e:DEFAULT_EOL;},y=function(){var D=a9k,e,p=lodash_1[D(0x122)][D(0x12d)](filterNodes(k,D(0x117)),function(s){var t=D,i=s[t(0x10d)],g=s['ip'],L=s[t(0x114)],H=L[0x0];if(!H)return[];var I=''+i+g+H[t(0xf8)];return[I['length']];});return(e=getMostCommonValue(p))!==null&&e!==void 0x0?e:DEFAULT_INDENT;};return new U(k['filter'](function(e){var B=a9k;return e[B(0xfd)]!==B(0x10e);}),{'eol':(Q=G===null||G===void 0x0?void 0x0:G['eol'])!==null&&Q!==void 0x0?Q:C(),'indent':(f=G===null||G===void 0x0?void 0x0:G[m(0x131)])!==null&&f!==void 0x0?f:y(),'ipPrefixWhitespace':''});},U[J(0xf7)]=function(k,G){var x=J;return this[x(0x115)](exports[x(0x111)](k),G);},U;}();exports[a9R(0x100)]=HostsFileAst;var blankNode=function(){var E=a9R;return{'type':E(0xfe),'line':''};},commentNode=function(U){var W=a9R;return{'type':W(0x121),'line':formatHeader(U)};},formatHeader=function(U){return U['startsWith']('#')?U:'#\x20'+U;},generateHostsFile=function(U,k){var U0=a9R,G=U[U0(0x12a)](function(Q){var U1=U0;switch(Q[U1(0xfd)]){case U1(0x117):{var f=Q[U1(0x114)][U1(0x12a)](function(C){var U2=U1,y=C[U2(0xf8)],e=C[U2(0x11f)];return''+y+e;})['join']('');return''+Q[U1(0x10d)]+Q['ip']+f;}case U1(0xfe):return Q['line'];case U1(0x121):return Q[U1(0x129)];case'invalid':return Q[U1(0x129)];case'eol':default:return'';}});return G[U0(0x120)](k!==null&&k!==void 0x0?k:DEFAULT_EOL);};exports['generateHostsFile']=generateHostsFile;var parseHostsFile=function(U){var U5=a9R,k=function(C){var U3=a9k;return C[U3(0x11a)](/^\s*#.*$/);},G=function(C){return C['match'](/^\s*$/);},Q=function(C){var U4=a9k;return C[U4(0x11a)](/^(\r?\n)$/);},f=U[U5(0xfc)](/(\r?\n)/);return f[U5(0x12a)](function(C){var U6=U5;if(k(C))return{'type':'comment','line':C};if(Q(C))return{'type':U6(0x10e),'line':C};if(G(C))return{'type':'blank','line':C};return parseHostsEntry(C);});};exports[a9R(0x111)]=parseHostsFile;var parseHostsEntry=function(U){var U7=a9R,k=U[U7(0x11a)](/^(\s*)(\S+)(.+)?$/);if(!k)return{'type':U7(0x11e),'line':U};var G=k[0x1],Q=k[0x2],f=k[U7(0x107)](0x3),C=![],y=f[U7(0x128)](function(p){return p!==undefined;}),e=lodash_1[U7(0x122)]['flatMap'](y,function(p){var U8=U7,s=p['match'](/(\s+)(\S+)/g);if(!s)return C=!![],[];return s[U8(0x12a)](function(i){var g=i['match'](/^(\s+)(\S+)$/);!g&&(C=!![]);var L=g!==null&&g!==void 0x0?g:[],H=L[0x1],I=L[0x2];return{'whitespace':H,'host':I};});});if(C)return{'type':U7(0x11e),'line':U};return{'type':U7(0x117),'ipPrefixWhitespace':G,'ip':Q,'hosts':e};},filterNodes=function(U,k){var U9=a9R;return U[U9(0x128)](function(G){var UU=U9;return G[UU(0xfd)]===k;});},getMostCommonValue=function(U){var UG=a9R,k=new Map();U['forEach'](function(Q){var Uk=a9k,f;k[Uk(0xf9)](Q,((f=k[Uk(0x102)](Q))!==null&&f!==void 0x0?f:0x0)+0x1);});var G=lodash_1[UG(0x122)][UG(0x10c)](Array[UG(0x10a)](k[UG(0x108)]()),function(Q){return Q[0x1];});if(G)return G[0x0];return undefined;};
@@ -1 +0,0 @@
1
- 'use strict';var a10U=['__generator','__importDefault','writeFile','Expected\x20\x27host\x27\x20to\x20be\x20a\x20string,\x20but\x20got\x20','path','removeIps','atomic','C:/Windows/System32/drivers/etc/hosts','__esModule','pop','20ZIwPhj','next','add','1NYWrXw','hasOwnProperty','basename','backup','1262205OAlZMA','527347Kmocvz','value','return','existsSync','create','function','read','done','defineProperty','trys','./host-file-ast','header','HostsFile','3326220trACJf','50IqBPmy','write','standard','push','remove','config','removeHosts','rewrite','isString','promises','hostsFile','sent','throw','HostsFileAst','25151vwBIpe','__setModuleDefault','copyFile','prototype','53282lXNpYU','__importStar','./atomic-write','iterator','forEach','label','call','ops','834597KOruUP','apply','toString','disabled','suffix','dirname','default','Expected\x20\x27ip\x27\x20to\x20be\x20a\x20string,\x20but\x20got\x20','then','length','__assign','__createBinding','ast','lodash','assign','108746VxFzZa','win32','platform','writeMode','readFile','resolve'];var a10v=a10k;(function(U,k){var I=a10k;while(!![]){try{var G=-parseInt(I(0x120))+-parseInt(I(0xfa))*parseInt(I(0x11c))+parseInt(I(0x119))*-parseInt(I(0xf2))+-parseInt(I(0x109))+-parseInt(I(0x121))+parseInt(I(0xe0))*parseInt(I(0xee))+parseInt(I(0xdf));if(G===k)break;else U['push'](U['shift']());}catch(Q){U['push'](U['shift']());}}}(a10U,0xbfb53));var __assign=this&&this[a10v(0x104)]||function(){var R=a10v;return __assign=Object[R(0x108)]||function(U){var b=R;for(var k,G=0x1,Q=arguments[b(0x103)];G<Q;G++){k=arguments[G];for(var f in k)if(Object[b(0xf1)][b(0x11d)][b(0xf8)](k,f))U[f]=k[f];}return U;},__assign[R(0xfb)](this,arguments);},__createBinding=this&&this[a10v(0x105)]||(Object['create']?function(U,G,Q,f){if(f===undefined)f=Q;Object['defineProperty'](U,f,{'enumerable':!![],'get':function(){return G[Q];}});}:function(U,G,Q,f){if(f===undefined)f=Q;U[f]=G[Q];}),__setModuleDefault=this&&this[a10v(0xef)]||(Object[a10v(0x125)]?function(U,k){var d=a10v;Object[d(0xda)](U,d(0x100),{'enumerable':!![],'value':k});}:function(U,k){var Z=a10v;U[Z(0x100)]=k;}),__importStar=this&&this[a10v(0xf3)]||function(U){var n=a10v;if(U&&U['__esModule'])return U;var G={};if(U!=null){for(var Q in U)if(Q!==n(0x100)&&Object['prototype']['hasOwnProperty']['call'](U,Q))__createBinding(G,U,Q);}return __setModuleDefault(G,U),G;},__awaiter=this&&this['__awaiter']||function(U,k,G,Q){function f(C){return C instanceof G?C:new G(function(y){y(C);});}return new(G||(G=Promise))(function(C,y){var Y=a10k;function e(i){var J=a10k;try{s(Q[J(0x11a)](i));}catch(g){y(g);}}function p(i){try{s(Q['throw'](i));}catch(g){y(g);}}function s(i){var r=a10k;i[r(0xd9)]?C(i[r(0x122)]):f(i['value'])[r(0x102)](e,p);}s((Q=Q[Y(0xfb)](U,k||[]))[Y(0x11a)]());});},__generator=this&&this[a10v(0x10f)]||function(U,k){var z=a10v,G={'label':0x0,'sent':function(){if(e[0x0]&0x1)throw e[0x1];return e[0x1];},'trys':[],'ops':[]},Q,C,e,p;return p={'next':s(0x0),'throw':s(0x1),'return':s(0x2)},typeof Symbol===z(0xd7)&&(p[Symbol[z(0xf5)]]=function(){return this;}),p;function s(L){return function(H){return i([L,H]);};}function i(L){var T=z;if(Q)throw new TypeError('Generator\x20is\x20already\x20executing.');while(G)try{if(Q=0x1,C&&(e=L[0x0]&0x2?C[T(0x123)]:L[0x0]?C[T(0xec)]||((e=C['return'])&&e[T(0xf8)](C),0x0):C['next'])&&!(e=e[T(0xf8)](C,L[0x1]))[T(0xd9)])return e;if(C=0x0,e)L=[L[0x0]&0x2,e[T(0x122)]];switch(L[0x0]){case 0x0:case 0x1:e=L;break;case 0x4:G[T(0xf7)]++;return{'value':L[0x1],'done':![]};case 0x5:G[T(0xf7)]++,C=L[0x1],L=[0x0];continue;case 0x7:L=G['ops'][T(0x118)](),G[T(0xdb)][T(0x118)]();continue;default:if(!(e=G[T(0xdb)],e=e[T(0x103)]>0x0&&e[e[T(0x103)]-0x1])&&(L[0x0]===0x6||L[0x0]===0x2)){G=0x0;continue;}if(L[0x0]===0x3&&(!e||L[0x1]>e[0x0]&&L[0x1]<e[0x3])){G[T(0xf7)]=L[0x1];break;}if(L[0x0]===0x6&&G[T(0xf7)]<e[0x1]){G[T(0xf7)]=e[0x1],e=L;break;}if(e&&G['label']<e[0x2]){G[T(0xf7)]=e[0x2],G[T(0xf9)][T(0xe3)](L);break;}if(e[0x2])G[T(0xf9)][T(0x118)]();G['trys'][T(0x118)]();continue;}L=k[T(0xf8)](U,G);}catch(H){L=[0x6,H],C=0x0;}finally{Q=e=0x0;}if(L[0x0]&0x5)throw L[0x1];return{'value':L[0x0]?L[0x1]:void 0x0,'done':!![]};}},__importDefault=this&&this[a10v(0x110)]||function(U){var P=a10v;return U&&U[P(0x117)]?U:{'default':U};};function a10k(U,k){U=U-0xd7;var G=a10U[U];return G;}Object[a10v(0xda)](exports,a10v(0x117),{'value':!![]}),exports[a10v(0xde)]=void 0x0;var lodash_1=__importDefault(require(a10v(0x107))),fs_1=__importDefault(require('fs')),fsAtomic=__importStar(require(a10v(0xf4))),path_1=__importDefault(require(a10v(0x113))),host_file_ast_1=require(a10v(0xdc)),isWindows=process[a10v(0x10b)]===a10v(0x10a),DEFAULT_HOSTS=isWindows?a10v(0x116):'/etc/hosts',HostsFile=function(){var K=a10v;function U(k){var a=a10k;this[a(0x106)]=host_file_ast_1[a(0xed)]['fromNodes']([]);var G={'writeMode':'atomic','hostsFile':DEFAULT_HOSTS};this[a(0xe5)]=__assign(__assign({},G),k);}return U['prototype'][K(0x11b)]=function(k){var h=K,G=[];for(var Q=0x1;Q<arguments[h(0x103)];Q++){G[Q-0x1]=arguments[Q];}if(!lodash_1[h(0x100)]['isString'](k))throw new Error(h(0x101)+typeof k+'.');return G['forEach'](function(f){var V=h;if(!lodash_1[V(0x100)]['isString'](f))throw new Error('Expected\x20\x27host\x27\x20to\x20be\x20a\x20string,\x20but\x20got\x20'+typeof f+'.');}),this['ast']['add'](k,G,this[h(0xe5)][h(0xdd)]),this;},U['prototype'][K(0xe4)]=function(k){var N=K,G=[];for(var Q=0x1;Q<arguments[N(0x103)];Q++){G[Q-0x1]=arguments[Q];}if(!lodash_1[N(0x100)][N(0xe8)](k))throw new Error(N(0x101)+typeof k+'.');return G[N(0xf6)](function(f){var w=N;if(!lodash_1['default'][w(0xe8)](f))throw new Error(w(0x112)+typeof f+'.');}),this['ast'][N(0xe4)](k,G),this;},U[K(0xf1)][K(0xe6)]=function(){var q=K,k=[];for(var G=0x0;G<arguments[q(0x103)];G++){k[G]=arguments[G];}return k['forEach'](function(Q){var O=q;if(!lodash_1['default'][O(0xe8)](Q))throw new Error(O(0x112)+typeof Q+'.');}),this[q(0x106)][q(0xe6)](k),this;},U[K(0xf1)][K(0x114)]=function(){var j=K,k=[];for(var G=0x0;G<arguments[j(0x103)];G++){k[G]=arguments[G];}return k[j(0xf6)](function(Q){var M=j;if(!lodash_1[M(0x100)]['isString'](Q))throw new Error('Expected\x20\x27ip\x27\x20to\x20be\x20a\x20string,\x20but\x20got\x20'+typeof Q+'.');}),this['ast'][j(0x114)](k),this;},U[K(0xf1)][K(0xd8)]=function(){return __awaiter(this,void 0x0,void 0x0,function(){var k;return __generator(this,function(G){var F=a10k;switch(G[F(0xf7)]){case 0x0:return[0x4,fs_1[F(0x100)][F(0xe9)][F(0x10d)](this[F(0xe5)]['hostsFile'])];case 0x1:k=G[F(0xeb)](),this['ast']=host_file_ast_1[F(0xed)]['parse'](k[F(0xfc)](),this[F(0xe5)]);return[0x2,this];}});});},U[K(0xf1)][K(0xe1)]=function(k){return __awaiter(this,void 0x0,void 0x0,function(){var G,Q,f,C,y;return __generator(this,function(e){var u=a10k;switch(e['label']){case 0x0:G=__assign(__assign({},this[u(0xe5)]),k),Q=G[u(0xea)],f=G[u(0x10c)],C=this['ast'][u(0xfc)](),y=f;switch(y){case undefined:return[0x3,0x1];case u(0x115):return[0x3,0x1];case u(0xe2):return[0x3,0x3];case u(0xfd):return[0x3,0x5];}return[0x3,0x5];case 0x1:return[0x4,fsAtomic[u(0x111)](Q,C)];case 0x2:e['sent']();return[0x3,0x6];case 0x3:return[0x4,fs_1[u(0x100)][u(0xe9)]['writeFile'](Q,C)];case 0x4:e[u(0xeb)]();return[0x3,0x6];case 0x5:return[0x3,0x6];case 0x6:return[0x2,this];}});});},U[K(0xf1)][K(0x11f)]=function(k){return __awaiter(this,void 0x0,void 0x0,function(){var G,Q,f,C;return __generator(this,function(y){var A=a10k;switch(y[A(0xf7)]){case 0x0:if(!fs_1[A(0x100)][A(0x124)](this[A(0xe5)][A(0xea)]))return[0x2];G=path_1[A(0x100)][A(0xff)](this['config'][A(0xea)]),Q=path_1['default'][A(0x11e)](this[A(0xe5)]['hostsFile']),f=''+Q+k[A(0xfe)],C=path_1[A(0x100)][A(0x10e)](G,f);if(!(!fs_1[A(0x100)][A(0x124)](C)||k[A(0xe7)]))return[0x3,0x2];return[0x4,fs_1[A(0x100)]['promises'][A(0xf0)](this[A(0xe5)]['hostsFile'],C)];case 0x1:y['sent'](),y[A(0xf7)]=0x2;case 0x2:return[0x2];}});});},U['load']=function(k){return __awaiter(this,void 0x0,void 0x0,function(){return __generator(this,function(G){var l=a10k;switch(G[l(0xf7)]){case 0x0:return[0x4,new U(k)[l(0xd8)]()];case 0x1:return[0x2,G['sent']()];}});});},U;}();exports[a10v(0xde)]=HostsFile;