@northflank/js-client 0.4.1 → 0.5.0-beta.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.
Files changed (257) hide show
  1. package/dist/cjs/api-client.d.ts +6013 -0
  2. package/dist/cjs/api-client.js +1 -0
  3. package/dist/cjs/package.json +3 -0
  4. package/dist/esm/api-client.d.ts +6013 -0
  5. package/dist/esm/api-client.js +15 -0
  6. package/dist/esm/package.json +3 -0
  7. package/package.json +12 -19
  8. package/dist/api-client.d.ts +0 -481
  9. package/dist/api-client.js +0 -748
  10. package/dist/api-endpoint.d.ts +0 -63
  11. package/dist/api-endpoint.js +0 -216
  12. package/dist/context/api-client-context-provider.d.ts +0 -47
  13. package/dist/context/api-client-context-provider.js +0 -332
  14. package/dist/context/api-client-file-context-provider.d.ts +0 -11
  15. package/dist/context/api-client-file-context-provider.js +0 -138
  16. package/dist/context/api-client-in-memory-context-provider.d.ts +0 -6
  17. package/dist/context/api-client-in-memory-context-provider.js +0 -82
  18. package/dist/context/index.d.ts +0 -3
  19. package/dist/context/index.js +0 -15
  20. package/dist/endpoints/abort/addon/backup.d.ts +0 -21
  21. package/dist/endpoints/abort/addon/backup.js +0 -36
  22. package/dist/endpoints/abort/addon/restore.d.ts +0 -26
  23. package/dist/endpoints/abort/addon/restore.js +0 -36
  24. package/dist/endpoints/abort/job/build.d.ts +0 -21
  25. package/dist/endpoints/abort/job/build.js +0 -36
  26. package/dist/endpoints/abort/job/run.d.ts +0 -21
  27. package/dist/endpoints/abort/job/run.js +0 -36
  28. package/dist/endpoints/abort/service/build.d.ts +0 -21
  29. package/dist/endpoints/abort/service/build.js +0 -36
  30. package/dist/endpoints/add/domain/subdomain.d.ts +0 -33
  31. package/dist/endpoints/add/domain/subdomain.js +0 -36
  32. package/dist/endpoints/add/registryCredentials.d.ts +0 -47
  33. package/dist/endpoints/add/registryCredentials.js +0 -36
  34. package/dist/endpoints/assign/subdomain/service.d.ts +0 -28
  35. package/dist/endpoints/assign/subdomain/service.js +0 -36
  36. package/dist/endpoints/backup/addon.d.ts +0 -51
  37. package/dist/endpoints/backup/addon.js +0 -36
  38. package/dist/endpoints/create/addon.d.ts +0 -90
  39. package/dist/endpoints/create/addon.js +0 -36
  40. package/dist/endpoints/create/domain.d.ts +0 -27
  41. package/dist/endpoints/create/domain.js +0 -36
  42. package/dist/endpoints/create/job/cron.d.ts +0 -157
  43. package/dist/endpoints/create/job/cron.js +0 -36
  44. package/dist/endpoints/create/job/manual.d.ts +0 -147
  45. package/dist/endpoints/create/job/manual.js +0 -36
  46. package/dist/endpoints/create/project.d.ts +0 -29
  47. package/dist/endpoints/create/project.js +0 -36
  48. package/dist/endpoints/create/secret.d.ts +0 -79
  49. package/dist/endpoints/create/secret.js +0 -36
  50. package/dist/endpoints/create/service/build.d.ts +0 -116
  51. package/dist/endpoints/create/service/build.js +0 -36
  52. package/dist/endpoints/create/service/combined.d.ts +0 -166
  53. package/dist/endpoints/create/service/combined.js +0 -36
  54. package/dist/endpoints/create/service/deployment.d.ts +0 -137
  55. package/dist/endpoints/create/service/deployment.js +0 -36
  56. package/dist/endpoints/delete/addon.d.ts +0 -19
  57. package/dist/endpoints/delete/addon.js +0 -36
  58. package/dist/endpoints/delete/backup.d.ts +0 -21
  59. package/dist/endpoints/delete/backup.js +0 -36
  60. package/dist/endpoints/delete/domain.d.ts +0 -17
  61. package/dist/endpoints/delete/domain.js +0 -36
  62. package/dist/endpoints/delete/job.d.ts +0 -19
  63. package/dist/endpoints/delete/job.js +0 -36
  64. package/dist/endpoints/delete/project.d.ts +0 -17
  65. package/dist/endpoints/delete/project.js +0 -36
  66. package/dist/endpoints/delete/registryCredentials.d.ts +0 -17
  67. package/dist/endpoints/delete/registryCredentials.js +0 -36
  68. package/dist/endpoints/delete/secret.d.ts +0 -19
  69. package/dist/endpoints/delete/secret.js +0 -36
  70. package/dist/endpoints/delete/secretLink.d.ts +0 -21
  71. package/dist/endpoints/delete/secretLink.js +0 -36
  72. package/dist/endpoints/delete/service.d.ts +0 -19
  73. package/dist/endpoints/delete/service.js +0 -36
  74. package/dist/endpoints/delete/subdomain.d.ts +0 -19
  75. package/dist/endpoints/delete/subdomain.js +0 -36
  76. package/dist/endpoints/get/addon/backup/download.d.ts +0 -24
  77. package/dist/endpoints/get/addon/backup/download.js +0 -36
  78. package/dist/endpoints/get/addon/backup.d.ts +0 -46
  79. package/dist/endpoints/get/addon/backup.js +0 -36
  80. package/dist/endpoints/get/addon/backups.d.ts +0 -54
  81. package/dist/endpoints/get/addon/backups.js +0 -40
  82. package/dist/endpoints/get/addon/containers.d.ts +0 -40
  83. package/dist/endpoints/get/addon/containers.js +0 -40
  84. package/dist/endpoints/get/addon/credentials.d.ts +0 -24
  85. package/dist/endpoints/get/addon/credentials.js +0 -36
  86. package/dist/endpoints/get/addon/types.d.ts +0 -48
  87. package/dist/endpoints/get/addon/types.js +0 -36
  88. package/dist/endpoints/get/addon/version.d.ts +0 -53
  89. package/dist/endpoints/get/addon/version.js +0 -36
  90. package/dist/endpoints/get/addon.d.ts +0 -69
  91. package/dist/endpoints/get/addon.js +0 -36
  92. package/dist/endpoints/get/dnsId.d.ts +0 -15
  93. package/dist/endpoints/get/dnsId.js +0 -36
  94. package/dist/endpoints/get/domain.d.ts +0 -33
  95. package/dist/endpoints/get/domain.js +0 -36
  96. package/dist/endpoints/get/job/buildArguments.d.ts +0 -19
  97. package/dist/endpoints/get/job/buildArguments.js +0 -36
  98. package/dist/endpoints/get/job/builds.d.ts +0 -50
  99. package/dist/endpoints/get/job/builds.js +0 -39
  100. package/dist/endpoints/get/job/containers.d.ts +0 -40
  101. package/dist/endpoints/get/job/containers.js +0 -40
  102. package/dist/endpoints/get/job/deployment.d.ts +0 -51
  103. package/dist/endpoints/get/job/deployment.js +0 -36
  104. package/dist/endpoints/get/job/environment.d.ts +0 -24
  105. package/dist/endpoints/get/job/environment.js +0 -40
  106. package/dist/endpoints/get/job/environmentDetails.d.ts +0 -42
  107. package/dist/endpoints/get/job/environmentDetails.js +0 -36
  108. package/dist/endpoints/get/job/healthChecks.d.ts +0 -44
  109. package/dist/endpoints/get/job/healthChecks.js +0 -36
  110. package/dist/endpoints/get/job/run.d.ts +0 -42
  111. package/dist/endpoints/get/job/run.js +0 -36
  112. package/dist/endpoints/get/job/runs.d.ts +0 -52
  113. package/dist/endpoints/get/job/runs.js +0 -39
  114. package/dist/endpoints/get/job.d.ts +0 -86
  115. package/dist/endpoints/get/job.js +0 -36
  116. package/dist/endpoints/get/project.d.ts +0 -72
  117. package/dist/endpoints/get/project.js +0 -36
  118. package/dist/endpoints/get/registryCredentials.d.ts +0 -34
  119. package/dist/endpoints/get/registryCredentials.js +0 -36
  120. package/dist/endpoints/get/secret.d.ts +0 -55
  121. package/dist/endpoints/get/secret.js +0 -39
  122. package/dist/endpoints/get/secretDetails.d.ts +0 -63
  123. package/dist/endpoints/get/secretDetails.js +0 -36
  124. package/dist/endpoints/get/secretLink.d.ts +0 -44
  125. package/dist/endpoints/get/secretLink.js +0 -36
  126. package/dist/endpoints/get/service/buildArguments.d.ts +0 -19
  127. package/dist/endpoints/get/service/buildArguments.js +0 -36
  128. package/dist/endpoints/get/service/builds.d.ts +0 -50
  129. package/dist/endpoints/get/service/builds.js +0 -40
  130. package/dist/endpoints/get/service/containers.d.ts +0 -40
  131. package/dist/endpoints/get/service/containers.js +0 -40
  132. package/dist/endpoints/get/service/deployment.d.ts +0 -51
  133. package/dist/endpoints/get/service/deployment.js +0 -36
  134. package/dist/endpoints/get/service/environmentVariableDetails.d.ts +0 -42
  135. package/dist/endpoints/get/service/environmentVariableDetails.js +0 -36
  136. package/dist/endpoints/get/service/environmentVariables.d.ts +0 -24
  137. package/dist/endpoints/get/service/environmentVariables.js +0 -40
  138. package/dist/endpoints/get/service/healthChecks.d.ts +0 -44
  139. package/dist/endpoints/get/service/healthChecks.js +0 -36
  140. package/dist/endpoints/get/service/ports.d.ts +0 -35
  141. package/dist/endpoints/get/service/ports.js +0 -36
  142. package/dist/endpoints/get/service.d.ts +0 -103
  143. package/dist/endpoints/get/service.js +0 -36
  144. package/dist/endpoints/get/subdomain.d.ts +0 -30
  145. package/dist/endpoints/get/subdomain.js +0 -36
  146. package/dist/endpoints/import/addon/backup.d.ts +0 -31
  147. package/dist/endpoints/import/addon/backup.js +0 -36
  148. package/dist/endpoints/list/addons.d.ts +0 -45
  149. package/dist/endpoints/list/addons.js +0 -39
  150. package/dist/endpoints/list/domains.d.ts +0 -34
  151. package/dist/endpoints/list/domains.js +0 -39
  152. package/dist/endpoints/list/jobs.d.ts +0 -44
  153. package/dist/endpoints/list/jobs.js +0 -39
  154. package/dist/endpoints/list/plans.d.ts +0 -30
  155. package/dist/endpoints/list/plans.js +0 -36
  156. package/dist/endpoints/list/projects.d.ts +0 -32
  157. package/dist/endpoints/list/projects.js +0 -39
  158. package/dist/endpoints/list/regions.d.ts +0 -18
  159. package/dist/endpoints/list/regions.js +0 -36
  160. package/dist/endpoints/list/registryCredentials.d.ts +0 -41
  161. package/dist/endpoints/list/registryCredentials.js +0 -39
  162. package/dist/endpoints/list/secrets.d.ts +0 -52
  163. package/dist/endpoints/list/secrets.js +0 -39
  164. package/dist/endpoints/list/services.d.ts +0 -44
  165. package/dist/endpoints/list/services.js +0 -39
  166. package/dist/endpoints/list/vcs.d.ts +0 -51
  167. package/dist/endpoints/list/vcs.js +0 -36
  168. package/dist/endpoints/pause/addon.d.ts +0 -19
  169. package/dist/endpoints/pause/addon.js +0 -36
  170. package/dist/endpoints/pause/service.d.ts +0 -19
  171. package/dist/endpoints/pause/service.js +0 -36
  172. package/dist/endpoints/restart/addon.d.ts +0 -19
  173. package/dist/endpoints/restart/addon.js +0 -36
  174. package/dist/endpoints/restart/service.d.ts +0 -19
  175. package/dist/endpoints/restart/service.js +0 -36
  176. package/dist/endpoints/restore/addon/backup.d.ts +0 -21
  177. package/dist/endpoints/restore/addon/backup.js +0 -36
  178. package/dist/endpoints/resume/addon.d.ts +0 -19
  179. package/dist/endpoints/resume/addon.js +0 -36
  180. package/dist/endpoints/resume/service.d.ts +0 -24
  181. package/dist/endpoints/resume/service.js +0 -36
  182. package/dist/endpoints/scale/addon.d.ts +0 -28
  183. package/dist/endpoints/scale/addon.js +0 -36
  184. package/dist/endpoints/scale/service.d.ts +0 -26
  185. package/dist/endpoints/scale/service.js +0 -36
  186. package/dist/endpoints/start/job/build.d.ts +0 -37
  187. package/dist/endpoints/start/job/build.js +0 -36
  188. package/dist/endpoints/start/job/run.d.ts +0 -37
  189. package/dist/endpoints/start/job/run.js +0 -36
  190. package/dist/endpoints/start/service/build.d.ts +0 -41
  191. package/dist/endpoints/start/service/build.js +0 -36
  192. package/dist/endpoints/unassign/subdomain.d.ts +0 -19
  193. package/dist/endpoints/unassign/subdomain.js +0 -36
  194. package/dist/endpoints/update/addon/networkSettings.d.ts +0 -26
  195. package/dist/endpoints/update/addon/networkSettings.js +0 -36
  196. package/dist/endpoints/update/addon/security.d.ts +0 -29
  197. package/dist/endpoints/update/addon/security.js +0 -36
  198. package/dist/endpoints/update/addon/version.d.ts +0 -24
  199. package/dist/endpoints/update/addon/version.js +0 -36
  200. package/dist/endpoints/update/job/buildArguments.d.ts +0 -24
  201. package/dist/endpoints/update/job/buildArguments.js +0 -36
  202. package/dist/endpoints/update/job/cmdOverride.d.ts +0 -24
  203. package/dist/endpoints/update/job/cmdOverride.js +0 -36
  204. package/dist/endpoints/update/job/deployment.d.ts +0 -37
  205. package/dist/endpoints/update/job/deployment.js +0 -36
  206. package/dist/endpoints/update/job/environment.d.ts +0 -24
  207. package/dist/endpoints/update/job/environment.js +0 -36
  208. package/dist/endpoints/update/job/healthChecks.d.ts +0 -45
  209. package/dist/endpoints/update/job/healthChecks.js +0 -36
  210. package/dist/endpoints/update/job/settings.d.ts +0 -30
  211. package/dist/endpoints/update/job/settings.js +0 -36
  212. package/dist/endpoints/update/registryCredentials.d.ts +0 -31
  213. package/dist/endpoints/update/registryCredentials.js +0 -36
  214. package/dist/endpoints/update/secret.d.ts +0 -54
  215. package/dist/endpoints/update/secret.js +0 -36
  216. package/dist/endpoints/update/secretLink.d.ts +0 -40
  217. package/dist/endpoints/update/secretLink.js +0 -36
  218. package/dist/endpoints/update/service/buildArguments.d.ts +0 -24
  219. package/dist/endpoints/update/service/buildArguments.js +0 -36
  220. package/dist/endpoints/update/service/buildOptions.d.ts +0 -52
  221. package/dist/endpoints/update/service/buildOptions.js +0 -36
  222. package/dist/endpoints/update/service/cmdOverride.d.ts +0 -24
  223. package/dist/endpoints/update/service/cmdOverride.js +0 -36
  224. package/dist/endpoints/update/service/deployment.d.ts +0 -37
  225. package/dist/endpoints/update/service/deployment.js +0 -36
  226. package/dist/endpoints/update/service/environmentVariables.d.ts +0 -29
  227. package/dist/endpoints/update/service/environmentVariables.js +0 -36
  228. package/dist/endpoints/update/service/healthChecks.d.ts +0 -45
  229. package/dist/endpoints/update/service/healthChecks.js +0 -36
  230. package/dist/endpoints/update/service/ports.d.ts +0 -55
  231. package/dist/endpoints/update/service/ports.js +0 -36
  232. package/dist/endpoints/verify/domain.d.ts +0 -17
  233. package/dist/endpoints/verify/domain.js +0 -36
  234. package/dist/endpoints/verify/subdomain.d.ts +0 -19
  235. package/dist/endpoints/verify/subdomain.js +0 -36
  236. package/dist/port-forward/client/api-helper.d.ts +0 -30
  237. package/dist/port-forward/client/api-helper.js +0 -102
  238. package/dist/port-forward/client/atomic-write.d.ts +0 -3
  239. package/dist/port-forward/client/atomic-write.js +0 -95
  240. package/dist/port-forward/client/host-file-ast.d.ts +0 -52
  241. package/dist/port-forward/client/host-file-ast.js +0 -279
  242. package/dist/port-forward/client/host-file.d.ts +0 -26
  243. package/dist/port-forward/client/host-file.js +0 -226
  244. package/dist/port-forward/client/loopback.d.ts +0 -4
  245. package/dist/port-forward/client/loopback.js +0 -219
  246. package/dist/port-forward/client/port-forwarder.d.ts +0 -86
  247. package/dist/port-forward/client/port-forwarder.js +0 -593
  248. package/dist/port-forward/client/port-tunnel-tcp.d.ts +0 -34
  249. package/dist/port-forward/client/port-tunnel-tcp.js +0 -209
  250. package/dist/port-forward/client/port-tunnel-udp.d.ts +0 -25
  251. package/dist/port-forward/client/port-tunnel-udp.js +0 -147
  252. package/dist/port-forward/client/port-tunnel.d.ts +0 -32
  253. package/dist/port-forward/client/port-tunnel.js +0 -2
  254. package/dist/port-forward/client/promise-mutex.d.ts +0 -4
  255. package/dist/port-forward/client/promise-mutex.js +0 -62
  256. package/dist/utils.d.ts +0 -8
  257. package/dist/utils.js +0 -97
@@ -1,593 +0,0 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
- return new (P || (P = Promise))(function (resolve, reject) {
20
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
- step((generator = generator.apply(thisArg, _arguments || [])).next());
24
- });
25
- };
26
- var __generator = (this && this.__generator) || function (thisArg, body) {
27
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
- function verb(n) { return function (v) { return step([n, v]); }; }
30
- function step(op) {
31
- if (f) throw new TypeError("Generator is already executing.");
32
- while (_) try {
33
- 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;
34
- if (y = 0, t) op = [op[0] & 2, t.value];
35
- switch (op[0]) {
36
- case 0: case 1: t = op; break;
37
- case 4: _.label++; return { value: op[1], done: false };
38
- case 5: _.label++; y = op[1]; op = [0]; continue;
39
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
- default:
41
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
- if (t[2]) _.ops.pop();
46
- _.trys.pop(); continue;
47
- }
48
- op = body.call(thisArg, _);
49
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
- }
52
- };
53
- var __spreadArray = (this && this.__spreadArray) || function (to, from) {
54
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
55
- to[j] = from[i];
56
- return to;
57
- };
58
- var __importDefault = (this && this.__importDefault) || function (mod) {
59
- return (mod && mod.__esModule) ? mod : { "default": mod };
60
- };
61
- Object.defineProperty(exports, "__esModule", { value: true });
62
- exports.retry = exports.NorthflankPortForwarder = void 0;
63
- var lodash_1 = __importDefault(require("lodash"));
64
- var events_1 = require("events");
65
- var api_helper_1 = require("./api-helper");
66
- var loopback_1 = require("./loopback");
67
- var host_file_1 = require("./host-file");
68
- var promise_mutex_1 = require("./promise-mutex");
69
- var port_tunnel_tcp_1 = require("./port-tunnel-tcp");
70
- var port_tunnel_udp_1 = require("./port-tunnel-udp");
71
- var utils_1 = require("../../utils");
72
- var NorthflankPortForwarder = /** @class */ (function (_super) {
73
- __extends(NorthflankPortForwarder, _super);
74
- function NorthflankPortForwarder(contextProvider, listServices, listAddons) {
75
- var _this = _super.call(this) || this;
76
- _this.contextProvider = contextProvider;
77
- _this.listServices = listServices;
78
- _this.listAddons = listAddons;
79
- _this.connections = [];
80
- _this.hostsFileMutex = new promise_mutex_1.AsyncMutex();
81
- _this.ipAllocationMutex = new promise_mutex_1.AsyncMutex();
82
- _this.stopForwarding = function (forwardingInfo) { return __awaiter(_this, void 0, void 0, function () {
83
- var _a, projectId, type, id, hostnames;
84
- var _b;
85
- return __generator(this, function (_c) {
86
- switch (_c.label) {
87
- case 0: return [4 /*yield*/, forwardingInfo.tunnel.close()];
88
- case 1:
89
- _c.sent();
90
- _a = forwardingInfo.forwardingContext, projectId = _a.projectId, type = _a.type, id = _a.id, hostnames = _a.hostnames;
91
- if (!(hostnames.length > 0)) return [3 /*break*/, 3];
92
- return [4 /*yield*/, this.unregisterHostnames((_b = forwardingInfo.tunnel.bindTo) === null || _b === void 0 ? void 0 : _b.address, hostnames)];
93
- case 2:
94
- _c.sent();
95
- _c.label = 3;
96
- case 3:
97
- this.connections.splice(this.connections.findIndex(function (c) {
98
- var _a = c.forwardingContext, type1 = _a.type, id1 = _a.id, projectId1 = _a.projectId;
99
- return id1 === id && projectId1 === projectId && type1 === type;
100
- }), 1);
101
- return [2 /*return*/];
102
- }
103
- });
104
- }); };
105
- _this.canExecuteWithHostnames = function () { return utils_1.isRunningAsAdmin(); };
106
- _this.assertStartedWithNodejs = function () {
107
- if (!utils_1.isNode)
108
- throw new Error('Port forwarding only possible when started with nodejs');
109
- };
110
- _this.proxyApiClient = new api_helper_1.PortProxyApiClient(contextProvider);
111
- return _this;
112
- }
113
- NorthflankPortForwarder.prototype.withProjectForwarding = function (parameters, func, ipOnly) {
114
- if (ipOnly === void 0) { ipOnly = true; }
115
- return __awaiter(this, void 0, void 0, function () {
116
- var p;
117
- return __generator(this, function (_a) {
118
- switch (_a.label) {
119
- case 0: return [4 /*yield*/, this.forwardProject(parameters, ipOnly)];
120
- case 1:
121
- p = _a.sent();
122
- _a.label = 2;
123
- case 2:
124
- _a.trys.push([2, , 4, 6]);
125
- return [4 /*yield*/, func(p)];
126
- case 3: return [2 /*return*/, _a.sent()];
127
- case 4: return [4 /*yield*/, this.stopProjectForwarding(parameters)];
128
- case 5:
129
- _a.sent();
130
- return [7 /*endfinally*/];
131
- case 6: return [2 /*return*/];
132
- }
133
- });
134
- });
135
- };
136
- NorthflankPortForwarder.prototype.forwardProject = function (parameters, ipOnly) {
137
- if (ipOnly === void 0) { ipOnly = true; }
138
- return __awaiter(this, void 0, void 0, function () {
139
- var projectId, services, addons, serviceConnections, addonConnections;
140
- var _this = this;
141
- return __generator(this, function (_a) {
142
- switch (_a.label) {
143
- case 0:
144
- this.assertStartedWithNodejs();
145
- projectId = parameters.projectId;
146
- return [4 /*yield*/, this.listServices({ parameters: { projectId: projectId } })];
147
- case 1:
148
- services = _a.sent();
149
- return [4 /*yield*/, this.listAddons({ parameters: { projectId: projectId } })];
150
- case 2:
151
- addons = _a.sent();
152
- return [4 /*yield*/, Promise.all(services.data.services.map(function (service) { return __awaiter(_this, void 0, void 0, function () {
153
- return __generator(this, function (_a) {
154
- return [2 /*return*/, this.forwardService({ projectId: projectId, serviceId: service.id }, ipOnly)];
155
- });
156
- }); }))];
157
- case 3:
158
- serviceConnections = _a.sent();
159
- return [4 /*yield*/, Promise.all(addons.data.addons.map(function (addon) { return __awaiter(_this, void 0, void 0, function () {
160
- return __generator(this, function (_a) {
161
- switch (_a.label) {
162
- case 0: return [4 /*yield*/, this.forwardAddon({ projectId: projectId, addonId: addon.id }, ipOnly)];
163
- case 1: return [2 /*return*/, _a.sent()];
164
- }
165
- });
166
- }); }))];
167
- case 4:
168
- addonConnections = _a.sent();
169
- return [2 /*return*/, {
170
- services: serviceConnections,
171
- addons: addonConnections,
172
- }];
173
- }
174
- });
175
- });
176
- };
177
- NorthflankPortForwarder.prototype.withServiceForwarding = function (parameters, func, ipOnly) {
178
- if (ipOnly === void 0) { ipOnly = true; }
179
- return __awaiter(this, void 0, void 0, function () {
180
- var p;
181
- return __generator(this, function (_a) {
182
- switch (_a.label) {
183
- case 0: return [4 /*yield*/, this.forwardService(parameters, ipOnly)];
184
- case 1:
185
- p = _a.sent();
186
- _a.label = 2;
187
- case 2:
188
- _a.trys.push([2, , 4, 6]);
189
- return [4 /*yield*/, func(p)];
190
- case 3: return [2 /*return*/, _a.sent()];
191
- case 4: return [4 /*yield*/, this.stopServiceForwarding(parameters)];
192
- case 5:
193
- _a.sent();
194
- return [7 /*endfinally*/];
195
- case 6: return [2 /*return*/];
196
- }
197
- });
198
- });
199
- };
200
- NorthflankPortForwarder.prototype.forwardService = function (parameters, ipOnly) {
201
- if (ipOnly === void 0) { ipOnly = true; }
202
- return __awaiter(this, void 0, void 0, function () {
203
- var projectId, serviceId, response, namespace, targetDomain, instances, ports, mapToForwarding;
204
- var _this = this;
205
- return __generator(this, function (_a) {
206
- switch (_a.label) {
207
- case 0:
208
- this.assertStartedWithNodejs();
209
- projectId = parameters.projectId, serviceId = parameters.serviceId;
210
- return [4 /*yield*/, this.proxyApiClient.getServiceDetails(projectId, serviceId)];
211
- case 1:
212
- response = _a.sent();
213
- namespace = response.namespace, targetDomain = response.targetDomain, instances = response.instances, ports = response.ports;
214
- if (instances.length === 0) {
215
- return [2 /*return*/, []];
216
- }
217
- mapToForwarding = function (port) {
218
- var endpoint = "https://" + targetDomain + "/tunnel/projects/" + projectId + "/services/" + serviceId + "/instance/" + instances[0].podName + "/port/" + port.internalPort;
219
- var mainHostname = serviceId + "." + namespace + ".svc.cluster.local";
220
- var altHostnames = ["" + serviceId];
221
- if (port.name) {
222
- altHostnames.push(port.name + "." + serviceId);
223
- }
224
- var rewriteHostHeader;
225
- if (port.protocol === 'HTTP') {
226
- rewriteHostHeader = { altHostnames: altHostnames, targetHostname: mainHostname };
227
- }
228
- var allHostnames = ipOnly ? [] : __spreadArray([mainHostname], altHostnames);
229
- return _this.forwardPort(endpoint, port, allHostnames, 'service', serviceId, projectId, ipOnly, rewriteHostHeader);
230
- };
231
- return [4 /*yield*/, utils_1.asyncSequential(ports, mapToForwarding)];
232
- case 2: return [2 /*return*/, _a.sent()];
233
- }
234
- });
235
- });
236
- };
237
- NorthflankPortForwarder.prototype.withAddonForwarding = function (parameters, func, ipOnly) {
238
- if (ipOnly === void 0) { ipOnly = true; }
239
- return __awaiter(this, void 0, void 0, function () {
240
- var p;
241
- return __generator(this, function (_a) {
242
- switch (_a.label) {
243
- case 0: return [4 /*yield*/, this.forwardAddon(parameters, ipOnly)];
244
- case 1:
245
- p = _a.sent();
246
- _a.label = 2;
247
- case 2:
248
- _a.trys.push([2, , 4, 6]);
249
- return [4 /*yield*/, func(p)];
250
- case 3: return [2 /*return*/, _a.sent()];
251
- case 4: return [4 /*yield*/, this.stopAddonForwarding(parameters)];
252
- case 5:
253
- _a.sent();
254
- return [7 /*endfinally*/];
255
- case 6: return [2 /*return*/];
256
- }
257
- });
258
- });
259
- };
260
- NorthflankPortForwarder.prototype.forwardAddon = function (parameters, ipOnly) {
261
- if (ipOnly === void 0) { ipOnly = true; }
262
- return __awaiter(this, void 0, void 0, function () {
263
- var addonId, projectId, addonInfo, addonConnectionSpecs;
264
- var _this = this;
265
- return __generator(this, function (_a) {
266
- switch (_a.label) {
267
- case 0:
268
- this.assertStartedWithNodejs();
269
- addonId = parameters.addonId, projectId = parameters.projectId;
270
- return [4 /*yield*/, this.proxyApiClient.getAddonDetails(projectId, addonId)];
271
- case 1:
272
- addonInfo = _a.sent();
273
- addonConnectionSpecs = addonInfo.instances.map(function (instance) {
274
- var podName = instance.podName, internalHostname = instance.internalHostname;
275
- return instance.ports.map(function (port) { return ({ podName: podName, internalHostname: internalHostname, port: port }); });
276
- });
277
- return [4 /*yield*/, utils_1.asyncSequential(lodash_1.default.flattenDeep(addonConnectionSpecs), function (_a) {
278
- var podName = _a.podName, internalHostname = _a.internalHostname, port = _a.port;
279
- return __awaiter(_this, void 0, void 0, function () {
280
- var endpoint;
281
- return __generator(this, function (_b) {
282
- endpoint = "https://" + addonInfo.targetDomain + "/tunnel/projects/" + projectId + "/addons/" + addonId + "/instance/" + podName + "/port/" + port.internalPort;
283
- return [2 /*return*/, this.forwardPort(endpoint, port, ipOnly ? [] : [internalHostname], 'addon', addonId, projectId, ipOnly)];
284
- });
285
- });
286
- })];
287
- case 2: return [2 /*return*/, _a.sent()];
288
- }
289
- });
290
- });
291
- };
292
- NorthflankPortForwarder.prototype.allocateIpAddress = function (port) {
293
- return __awaiter(this, void 0, void 0, function () {
294
- var _this = this;
295
- return __generator(this, function (_a) {
296
- return [2 /*return*/, this.ipAllocationMutex.enter(function () { return __awaiter(_this, void 0, void 0, function () {
297
- var minIp, maxIp, nextIp, address;
298
- var _a;
299
- return __generator(this, function (_b) {
300
- switch (_b.label) {
301
- case 0:
302
- minIp = '127.24.1.1';
303
- maxIp = '127.24.255.255';
304
- nextIp = (_a = this.nextIpAddress) !== null && _a !== void 0 ? _a : minIp;
305
- return [4 /*yield*/, loopback_1.findAvailableLoopbackIp(port, nextIp, maxIp)];
306
- case 1:
307
- address = _b.sent();
308
- this.nextIpAddress = loopback_1.int2ip(loopback_1.ip2int(address) + 1);
309
- if (loopback_1.ip2int(this.nextIpAddress) > loopback_1.ip2int(maxIp)) {
310
- this.nextIpAddress = minIp;
311
- }
312
- return [2 /*return*/, address];
313
- }
314
- });
315
- }); })];
316
- });
317
- });
318
- };
319
- NorthflankPortForwarder.prototype.forwardPort = function (endpoint, port, hostnames, type, name, projectId, ipOnly, rewriteHostHeader) {
320
- var _a, _b;
321
- if (ipOnly === void 0) { ipOnly = true; }
322
- return __awaiter(this, void 0, void 0, function () {
323
- var headers, adminCheckRes, existingBindingForThisResource, duplicatePort, bindTo, _c, _d, tunnel, tunnelBinding, portForwardingInfo;
324
- var _e;
325
- var _this = this;
326
- return __generator(this, function (_f) {
327
- switch (_f.label) {
328
- case 0:
329
- headers = {
330
- 'Authorization': "Bearer " + this.contextProvider.getCurrentToken(),
331
- };
332
- if (!ipOnly) {
333
- adminCheckRes = this.canExecuteWithHostnames();
334
- if (adminCheckRes.error)
335
- throw new Error(adminCheckRes.message + " Alternatively, you can use the ipOnly mode when port-forwarding (apiClient.forwarding.forwardAddon({ projectId, addonId }, true))");
336
- }
337
- existingBindingForThisResource = this.connections.find(function (c) {
338
- return (c.forwardingContext.projectId === projectId &&
339
- c.forwardingContext.id === name &&
340
- c.forwardingContext.type === type);
341
- });
342
- duplicatePort = ((_a = existingBindingForThisResource === null || existingBindingForThisResource === void 0 ? void 0 : existingBindingForThisResource.forwardingContext) === null || _a === void 0 ? void 0 : _a.port) !== port.internalPort;
343
- if (!
344
- // eslint-disable-next-line no-nested-ternary
345
- (existingBindingForThisResource && duplicatePort))
346
- // eslint-disable-next-line no-nested-ternary
347
- return [3 /*break*/, 1];
348
- _c = {
349
- address: existingBindingForThisResource.forwardingContext.address,
350
- port: port.internalPort,
351
- };
352
- return [3 /*break*/, 5];
353
- case 1:
354
- if (!!ipOnly) return [3 /*break*/, 3];
355
- _e = {};
356
- return [4 /*yield*/, this.allocateIpAddress(port.internalPort)];
357
- case 2:
358
- _d = (_e.address = _f.sent(), _e.port = port.internalPort, _e);
359
- return [3 /*break*/, 4];
360
- case 3:
361
- _d = undefined;
362
- _f.label = 4;
363
- case 4:
364
- _c = _d;
365
- _f.label = 5;
366
- case 5:
367
- bindTo = _c;
368
- tunnel = port.protocol === 'UDP'
369
- ? new port_tunnel_udp_1.PortTunnelUdp(endpoint, headers, bindTo)
370
- : new port_tunnel_tcp_1.PortTunnelTcp(endpoint, headers, rewriteHostHeader, bindTo);
371
- if (!!ipOnly) return [3 /*break*/, 7];
372
- return [4 /*yield*/, this.registerHostnames((_b = tunnel.bindTo) === null || _b === void 0 ? void 0 : _b.address, hostnames)];
373
- case 6:
374
- _f.sent();
375
- _f.label = 7;
376
- case 7:
377
- tunnel.on('connection-accept', function () { return _this.emit('connection-accept', tunnel); });
378
- tunnel.on('connection-close', function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
379
- return [2 /*return*/, this.emit('connection-close', tunnel)];
380
- }); }); });
381
- return [4 /*yield*/, tunnel.open()];
382
- case 8:
383
- tunnelBinding = _f.sent();
384
- portForwardingInfo = {
385
- projectId: projectId,
386
- id: name,
387
- type: type,
388
- hostnames: hostnames,
389
- port: tunnelBinding.port,
390
- address: tunnelBinding.address,
391
- protocol: port.protocol,
392
- portName: port.name,
393
- };
394
- this.emit('tunnel-open', tunnel, portForwardingInfo);
395
- tunnel.on('connection-error', function (e) {
396
- return _this.emit('connection-error', tunnel, portForwardingInfo, e);
397
- });
398
- tunnel.on('tunnel-close', function () { return _this.emit('tunnel-close', tunnel, portForwardingInfo); });
399
- this.connections.push({ tunnel: tunnel, forwardingContext: portForwardingInfo });
400
- return [2 /*return*/, { data: portForwardingInfo }];
401
- }
402
- });
403
- });
404
- };
405
- NorthflankPortForwarder.prototype.registerHostnames = function (ip, hostnames) {
406
- return __awaiter(this, void 0, void 0, function () {
407
- return __generator(this, function (_a) {
408
- switch (_a.label) {
409
- case 0: return [4 /*yield*/, this.modifyHostsFile(function (hostsFile) {
410
- hostsFile.removeHosts.apply(hostsFile, hostnames);
411
- hostsFile.add.apply(hostsFile, __spreadArray([ip], hostnames));
412
- })];
413
- case 1:
414
- _a.sent();
415
- return [2 /*return*/];
416
- }
417
- });
418
- });
419
- };
420
- NorthflankPortForwarder.prototype.unregisterHostnames = function (ip, hostnames) {
421
- return __awaiter(this, void 0, void 0, function () {
422
- return __generator(this, function (_a) {
423
- switch (_a.label) {
424
- case 0: return [4 /*yield*/, this.modifyHostsFile(function (hostsFile) {
425
- hostsFile.remove.apply(hostsFile, __spreadArray([ip], hostnames));
426
- })];
427
- case 1:
428
- _a.sent();
429
- return [2 /*return*/];
430
- }
431
- });
432
- });
433
- };
434
- NorthflankPortForwarder.prototype.modifyHostsFile = function (modifier) {
435
- return __awaiter(this, void 0, void 0, function () {
436
- var _this = this;
437
- return __generator(this, function (_a) {
438
- switch (_a.label) {
439
- case 0: return [4 /*yield*/, this.hostsFileMutex.enter(function () { return __awaiter(_this, void 0, void 0, function () {
440
- var hostsFile, e_1;
441
- var _this = this;
442
- return __generator(this, function (_a) {
443
- switch (_a.label) {
444
- case 0: return [4 /*yield*/, host_file_1.HostsFile.load({ header: 'Northflank Proxy' })];
445
- case 1:
446
- hostsFile = _a.sent();
447
- modifier(hostsFile);
448
- return [4 /*yield*/, hostsFile.backup({ suffix: '.backup-pre-northflank' })];
449
- case 2:
450
- _a.sent();
451
- _a.label = 3;
452
- case 3:
453
- _a.trys.push([3, 5, , 7]);
454
- return [4 /*yield*/, exports.retry(5)(function () { return __awaiter(_this, void 0, void 0, function () {
455
- return __generator(this, function (_a) {
456
- switch (_a.label) {
457
- case 0: return [4 /*yield*/, hostsFile.write({ writeMode: 'atomic' })];
458
- case 1:
459
- _a.sent();
460
- return [2 /*return*/];
461
- }
462
- });
463
- }); })];
464
- case 4:
465
- _a.sent();
466
- return [3 /*break*/, 7];
467
- case 5:
468
- e_1 = _a.sent();
469
- return [4 /*yield*/, exports.retry(5)(function () { return __awaiter(_this, void 0, void 0, function () {
470
- return __generator(this, function (_a) {
471
- switch (_a.label) {
472
- case 0: return [4 /*yield*/, hostsFile.write({ writeMode: 'standard' })];
473
- case 1:
474
- _a.sent();
475
- return [2 /*return*/];
476
- }
477
- });
478
- }); })];
479
- case 6:
480
- _a.sent();
481
- return [3 /*break*/, 7];
482
- case 7: return [2 /*return*/];
483
- }
484
- });
485
- }); })];
486
- case 1:
487
- _a.sent();
488
- return [2 /*return*/];
489
- }
490
- });
491
- });
492
- };
493
- NorthflankPortForwarder.prototype.stopProjectForwarding = function (opts) {
494
- return __awaiter(this, void 0, void 0, function () {
495
- var _this = this;
496
- return __generator(this, function (_a) {
497
- switch (_a.label) {
498
- case 0: return [4 /*yield*/, Promise.all(this.connections
499
- .filter(function (c) { return c.forwardingContext.projectId === opts.projectId; })
500
- .map(function (c) { return _this.stopForwarding(c); }))];
501
- case 1:
502
- _a.sent();
503
- return [2 /*return*/];
504
- }
505
- });
506
- });
507
- };
508
- NorthflankPortForwarder.prototype.stopServiceForwarding = function (opts) {
509
- return __awaiter(this, void 0, void 0, function () {
510
- var _this = this;
511
- return __generator(this, function (_a) {
512
- switch (_a.label) {
513
- case 0: return [4 /*yield*/, Promise.all(this.connections
514
- .filter(function (c) {
515
- return c.forwardingContext.type === 'service' &&
516
- c.forwardingContext.projectId === opts.projectId &&
517
- c.forwardingContext.id === opts.serviceId;
518
- })
519
- .map(function (c) { return _this.stopForwarding(c); }))];
520
- case 1:
521
- _a.sent();
522
- return [2 /*return*/];
523
- }
524
- });
525
- });
526
- };
527
- NorthflankPortForwarder.prototype.stopAddonForwarding = function (opts) {
528
- return __awaiter(this, void 0, void 0, function () {
529
- var _this = this;
530
- return __generator(this, function (_a) {
531
- switch (_a.label) {
532
- case 0: return [4 /*yield*/, Promise.all(this.connections
533
- .filter(function (c) {
534
- return c.forwardingContext.type === 'addon' &&
535
- c.forwardingContext.projectId === opts.projectId &&
536
- c.forwardingContext.id === opts.addonId;
537
- })
538
- .map(function (c) { return _this.stopForwarding(c); }))];
539
- case 1:
540
- _a.sent();
541
- return [2 /*return*/];
542
- }
543
- });
544
- });
545
- };
546
- NorthflankPortForwarder.prototype.stop = function () {
547
- return __awaiter(this, void 0, void 0, function () {
548
- var _this = this;
549
- return __generator(this, function (_a) {
550
- switch (_a.label) {
551
- case 0: return [4 /*yield*/, Promise.all(this.connections.map(function (con) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
552
- return [2 /*return*/, this.stopForwarding(con)];
553
- }); }); }))];
554
- case 1:
555
- _a.sent();
556
- return [2 /*return*/];
557
- }
558
- });
559
- });
560
- };
561
- return NorthflankPortForwarder;
562
- }(events_1.EventEmitter));
563
- exports.NorthflankPortForwarder = NorthflankPortForwarder;
564
- var retry = function (retries, retryDelay) {
565
- if (retryDelay === void 0) { retryDelay = 50; }
566
- return function (action) {
567
- var retriesCounter = retries;
568
- var retryRecursive = function () { return __awaiter(void 0, void 0, void 0, function () {
569
- var e_2;
570
- return __generator(this, function (_a) {
571
- switch (_a.label) {
572
- case 0:
573
- _a.trys.push([0, 2, , 4]);
574
- return [4 /*yield*/, action()];
575
- case 1: return [2 /*return*/, _a.sent()];
576
- case 2:
577
- e_2 = _a.sent();
578
- if (retriesCounter <= 0) {
579
- throw e_2;
580
- }
581
- retriesCounter -= 1;
582
- return [4 /*yield*/, new Promise(function (r) { return setTimeout(function () { return r(); }, retryDelay); })];
583
- case 3:
584
- _a.sent();
585
- return [2 /*return*/, retryRecursive()];
586
- case 4: return [2 /*return*/];
587
- }
588
- });
589
- }); };
590
- return retryRecursive();
591
- };
592
- };
593
- exports.retry = retry;
@@ -1,34 +0,0 @@
1
- /// <reference types="node" />
2
- import { EventEmitter } from 'events';
3
- import { PortTunnel } from './port-tunnel';
4
- export declare class PortTunnelTcp extends EventEmitter implements PortTunnel {
5
- private readonly endpoint;
6
- private readonly headers;
7
- private readonly rewriteHostHeader?;
8
- private readonly closeTimeout;
9
- private readonly tcpServer;
10
- readonly protocol = "TCP";
11
- private readonly hostRegex;
12
- private readonly openConnections;
13
- readonly bindTo?: {
14
- address: string;
15
- port: number;
16
- };
17
- constructor(endpoint: string, headers: {
18
- [_: string]: string;
19
- }, rewriteHostHeader?: {
20
- altHostnames: string[];
21
- targetHostname: string;
22
- } | undefined, bindTo?: {
23
- address: string;
24
- port: number;
25
- }, closeTimeout?: number);
26
- open(): Promise<{
27
- address: string;
28
- port: number;
29
- }>;
30
- close(): Promise<void>;
31
- private handleConnection;
32
- /** rewrite host header which can lead to issues when request coming from a different hostname */
33
- private getHeaderTransform;
34
- }