vpn-split 18.0.18 → 18.0.20

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 (45) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/bin/vpn-split +11 -11
  3. package/bin/vpn-split-debug +11 -11
  4. package/browser/README.md +24 -24
  5. package/browser/esm2022/lib/models.mjs +19 -9
  6. package/browser/fesm2022/vpn-split.mjs +18 -8
  7. package/browser/fesm2022/vpn-split.mjs.map +1 -1
  8. package/browser/lib/models.d.ts +3 -1
  9. package/client/README.md +24 -24
  10. package/client/esm2022/lib/models.mjs +19 -9
  11. package/client/fesm2022/vpn-split.mjs +18 -8
  12. package/client/fesm2022/vpn-split.mjs.map +1 -1
  13. package/client/lib/models.d.ts +3 -1
  14. package/index.js +15 -2
  15. package/index.js.map +1 -1
  16. package/lib/build-info._auto-generated_.js.map +1 -1
  17. package/lib/hostile.backend.js +25 -31
  18. package/lib/hostile.backend.js.map +1 -1
  19. package/lib/index._auto-generated_.d.ts +1 -0
  20. package/lib/index._auto-generated_.js.map +1 -1
  21. package/lib/index.js +16 -3
  22. package/lib/index.js.map +1 -1
  23. package/lib/models.d.ts +3 -1
  24. package/lib/models.js +140 -193
  25. package/lib/models.js.map +1 -1
  26. package/lib/start.backend.d.ts +1 -0
  27. package/lib/start.backend.js.map +1 -1
  28. package/lib/vpn-split.backend.d.ts +18 -22
  29. package/lib/vpn-split.backend.js +469 -547
  30. package/lib/vpn-split.backend.js.map +1 -1
  31. package/migrations/index.js +15 -2
  32. package/migrations/index.js.map +1 -1
  33. package/migrations/migrations_index._auto-generated_.d.ts +1 -0
  34. package/migrations/migrations_index._auto-generated_.js.map +1 -1
  35. package/package.json +8 -44
  36. package/src.d.ts +1 -1
  37. package/taon.jsonc +33 -33
  38. package/tmp-environment.json +8 -375
  39. package/websql/README.md +24 -24
  40. package/websql/esm2022/lib/models.mjs +19 -9
  41. package/websql/fesm2022/vpn-split.mjs +18 -8
  42. package/websql/fesm2022/vpn-split.mjs.map +1 -1
  43. package/websql/lib/models.d.ts +3 -1
  44. package/browser/package.json +0 -25
  45. package/websql/package.json +0 -25
package/websql/README.md CHANGED
@@ -1,24 +1,24 @@
1
- # MyLib
2
-
3
- This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
4
-
5
- ## Code scaffolding
6
-
7
- Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
8
- > Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
9
-
10
- ## Build
11
-
12
- Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
13
-
14
- ## Publishing
15
-
16
- After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
17
-
18
- ## Running unit tests
19
-
20
- Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
-
22
- ## Further help
23
-
24
- To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
1
+ # MyLib
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
8
+ > Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
9
+
10
+ ## Build
11
+
12
+ Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+
14
+ ## Publishing
15
+
16
+ After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
+
22
+ ## Further help
23
+
24
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
@@ -10,20 +10,20 @@ export class HostForServer {
10
10
  }
11
11
  if (_.isObject(ipOrDomain) && ipOrDomain instanceof HostForServer) {
12
12
  const dataClone = _.cloneDeep(ipOrDomain._data);
13
- dataClone.name = (name && (name.trim() !== '')) ?
14
- name : dataClone.name;
13
+ dataClone.name = name && name.trim() !== '' ? name : dataClone.name;
15
14
  if (!_.isBoolean(dataClone.disabled)) {
16
15
  dataClone.disabled = disabled;
17
16
  }
18
17
  return new HostForServer(dataClone);
19
18
  }
20
- if (_.isString(ipOrDomain)) { // @ts-ignore
19
+ if (_.isString(ipOrDomain)) {
20
+ // @ts-ignore
21
21
  const parsed = Helpers.urlParse(ipOrDomain);
22
22
  if (parsed) {
23
23
  ipOrDomain = parsed;
24
24
  }
25
25
  }
26
- if (_.isObject(ipOrDomain) && (ipOrDomain instanceof URL)) {
26
+ if (_.isObject(ipOrDomain) && ipOrDomain instanceof URL) {
27
27
  ipOrDomain = ipOrDomain; // @ts-ignore
28
28
  if (Helpers.isValidIp(ipOrDomain?.host)) {
29
29
  return new HostForServer({ ip: ipOrDomain.origin, name, disabled });
@@ -37,8 +37,10 @@ export class HostForServer {
37
37
  return new HostForServer({ ipOrDomain, name, disabled });
38
38
  }
39
39
  else {
40
- ipOrDomain.name = (name && (name.trim() !== '')) ?
41
- name : ipOrDomain.name;
40
+ ipOrDomain.name =
41
+ name && name.trim() !== ''
42
+ ? name
43
+ : ipOrDomain.name;
42
44
  if (!_.isBoolean(ipOrDomain.disabled)) {
43
45
  ipOrDomain.disabled = disabled;
44
46
  }
@@ -50,7 +52,8 @@ export class HostForServer {
50
52
  this.toString = () => {
51
53
  return `[string version] ${this.nameWithIpOrDomain}`;
52
54
  };
53
- if (data?.ipOrDomain) { // @ts-ignore
55
+ if (data?.ipOrDomain) {
56
+ // @ts-ignore
54
57
  if (Helpers.isValidIp(data.ipOrDomain)) {
55
58
  data.ip = data.ipOrDomain;
56
59
  }
@@ -67,7 +70,8 @@ export class HostForServer {
67
70
  if (!data) {
68
71
  data = {};
69
72
  }
70
- if (_.isString(data?.aliases)) { // @ts-ignore
73
+ if (_.isString(data?.aliases)) {
74
+ // @ts-ignore
71
75
  data.aliases = Helpers.strings.splitIfNeed(data.aliases);
72
76
  }
73
77
  this._data = data;
@@ -126,6 +130,9 @@ export class HostForServer {
126
130
  set disabled(v) {
127
131
  this._data.disabled = v;
128
132
  }
133
+ get environmentName() {
134
+ return this._data.environmentName || '';
135
+ }
129
136
  get ipOrDomain() {
130
137
  if (this.disabled) {
131
138
  return '';
@@ -141,14 +148,17 @@ export class HostForServer {
141
148
  return res;
142
149
  }
143
150
  get hostname() {
151
+ // @ts-ignore
144
152
  const h = Helpers.urlParse(this.ipOrFirstAlias, true);
145
153
  return h ? h.hostname : void 0;
146
154
  }
147
155
  get hostnameFirstAlias() {
156
+ // @ts-ignore
148
157
  const h = Helpers.urlParse(this.firstAlias, true);
149
158
  return h ? h.hostname : void 0;
150
159
  }
151
160
  get hostnameIp() {
161
+ // @ts-ignore
152
162
  const h = Helpers.urlParse(this.ip);
153
163
  return h ? h.hostname : void 0;
154
164
  }
@@ -158,4 +168,4 @@ export class HostForServer {
158
168
  }
159
169
  ;
160
170
  ({}); // @--end-of-file-for-module=vpn-split lib/models.ts
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3Zwbi1zcGxpdC9wcm9qZWN0cy92cG4tc3BsaXQvc3JjL2xpYi9tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUErQjdDLE1BQU0sT0FBTyxhQUFhO0lBR2pCLEtBQUs7UUFDVixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBOEcsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLFFBQVEsR0FBRyxLQUFLO1FBQ3JKLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixPQUFPLEtBQUssQ0FBQyxDQUFDO1FBQ2hCLENBQUM7UUFDRCxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxZQUFZLGFBQWEsRUFBRSxDQUFDO1lBQ2xFLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBcUIsQ0FBQztZQUNwRSxTQUFTLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxTQUFTLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztZQUNoQyxDQUFDO1lBQ0QsT0FBTyxJQUFJ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QyxvREFBb0QiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgXywgY2hhbGsgfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJ3RucC1oZWxwZXJzL3dlYnNxbCc7XG5cbi8qKipcbiAqIEBkZXByZWNhdGVkXG4gKiB1c2Ugbm9ybWFsIG9iamVjdHNcbiAqL1xuZXhwb3J0IHR5cGUgRXRjSG9zdHMgPSB7IFtob3N0TmFtZSBpbiBzdHJpbmddOiBIb3N0Rm9yU2VydmVyOyB9O1xuXG4vKioqXG4gKiBAZGVwcmVjYXRlZFxuICogdXNlIG5vcm1hbCBvYmplY3RzXG4gKi9cbmV4cG9ydCB0eXBlIElFdGNIb3N0cyA9IHsgW2hvc3ROYW1lIGluIHN0cmluZ106IFBpY2s8SG9zdEZvclNlcnZlciwgJ2FsaWFzZXMnIHwgJ2lwT3JEb21haW4nPjsgfTtcblxuZXhwb3J0IGludGVyZmFjZSBPcHRIb3N0Rm9yU2VydmVyIHtcbiAgaXA/OiBzdHJpbmc7XG4gIGRvbWFpbj86IHN0cmluZztcbiAgaXBPckRvbWFpbj86IHN0cmluZztcbiAgYWxpYXNlcz86IHN0cmluZ1tdO1xuICBpc0RlZmF1bHQ/OiBib29sZWFuO1xuICAvKipcbiAgICogaXAgZnJvbSBjb21tYW5kOiB2cG4tY2xpIDE5Mi4xNjguMS4xIDE5Mi4xNjguMS4yXG4gICAqL1xuICBvcmlnaW5Ib3N0bmFtZT86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIGlmIHRydWUgLSBpcCBhbmQgZG9tYWluIHdpbGwgb3V0cHV0IGVtcHR5IHN0cmluZ1xuICAgKi9cbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgSG9zdEZvclNlcnZlciBpbXBsZW1lbnRzIE9wdEhvc3RGb3JTZXJ2ZXIge1xuICBwcml2YXRlIF9kYXRhOiBPcHRIb3N0Rm9yU2VydmVyO1xuXG4gIHB1YmxpYyBjbG9uZSgpIHtcbiAgICByZXR1cm4gSG9zdEZvclNlcnZlci5Gcm9tKHRoaXMpO1xuICB9XG5cbiAgc3RhdGljIEZyb20oaXBPckRvbWFpbjogc3RyaW5nIHwgVVJMIHwgUGljazxPcHRIb3N0Rm9yU2VydmVyIHwgSG9zdEZvclNlcnZlciwgJ2lwT3JEb21haW4nIHwgJ2FsaWFzZXMnIHwgJ29yaWdpbkhvc3RuYW1lJz4sIG5hbWUgPSAnJywgZGlzYWJsZWQgPSBmYWxzZSk6IEhvc3RGb3JTZXJ2ZXIge1xuICAgIGlmICghaXBPckRvbWFpbikge1xuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9XG4gICAgaWYgKF8uaXNPYmplY3QoaXBPckRvbWFpbikgJiYgaXBPckRvbWFpbiBpbnN0YW5jZW9mIEhvc3RGb3JTZXJ2ZXIpIHtcbiAgICAgIGNvbnN0IGRhdGFDbG9uZSA9IF8uY2xvbmVEZWVwKGlwT3JEb21haW4uX2RhdGEpIGFzIE9wdEhvc3RGb3JTZXJ2ZXI7XG4gICAgICBkYXRhQ2xvbmUubmFtZSA9IChuYW1lICYmIChuYW1lLnRyaW0oKSAhPT0gJycpKSA/XG4gICAgICAgIG5hbWUgOiBkYXRhQ2xvbmUubmFtZTtcbiAgICAgIGlmICghXy5pc0Jvb2xlYW4oZGF0YUNsb25lLmRpc2FibGVkKSkge1xuICAgICAgICBkYXRhQ2xvbmUuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgSG9zdEZvclNlcnZlcihkYXRhQ2xvbmUpO1xuICAgIH1cbiAgICBpZiAoXy5pc1N0cmluZyhpcE9yRG9tYWluKSkgeyAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBwYXJzZWQgPSBIZWxwZXJzLnVybFBhcnNlKGlwT3JEb21haW4pO1xuICAgICAgaWYgKHBhcnNlZCkge1xuICAgICAgICBpcE9yRG9tYWluID0gcGFyc2VkIGFzIGFueTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoXy5pc09iamVjdChpcE9yRG9tYWluKSAmJiAoaXBPckRvbWFpbiBpbnN0YW5jZW9mIFVSTCkpIHtcbiAgICAgIGlwT3JEb21haW4gPSBpcE9yRG9tYWluIGFzIFVSTDsgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKEhlbHBlcnMuaXNWYWxpZElwKGlwT3JEb21haW4/Lmhvc3QpKSB7XG4gICAgICAgIHJldHVybiBuZXcgSG9zdEZvclNlcnZlcih7IGlwOiBpcE9yRG9tYWluLm9yaWdpbiwgbmFtZSwgZGlzYWJsZWQgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbmV3IEhvc3RGb3JTZXJ2ZXIoeyBkb21haW46IGlwT3JEb21haW4ub3JpZ2luLCBuYW1lLCBkaXNhYmxlZCB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKF8uaXNTdHJpbmcoaXBPckRvbWFpbikpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBIb3N0Rm9yU2VydmVyKHsgaXBPckRvbWFpbiwgbmFtZSwgZGlzYWJsZWQgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAoaXBPckRvbWFpbiBhcyBPcHRIb3N0Rm9yU2VydmVyKS5uYW1lID0gKG5hbWUgJiYgKG5hbWUudHJpbSgpICE9PSAnJykpID9cbiAgICAgICAgICBuYW1lIDogKGlwT3JEb21haW4gYXMgT3B0SG9zdEZvclNlcnZlcikubmFtZTtcbiAgICAgICAgaWYgKCFfLmlzQm9vbGVhbigoaXBPckRvbWFpbiBhcyBPcHRIb3N0Rm9yU2VydmVyKS5kaXNhYmxlZCkpIHtcbiAgICAgICAgICAoaXBPckRvbWFpbiBhcyBPcHRIb3N0Rm9yU2VydmVyKS5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgSG9zdEZvclNlcnZlcihpcE9yRG9tYWluIGFzIGFueSk7XG4gICAgICB9XG5cbiAgICB9XG4gIH1cbiAgY29uc3RydWN0b3IoZGF0YTogT3B0SG9zdEZvclNlcnZlcikge1xuICAgIGlmIChkYXRhPy5pcE9yRG9tYWluKSB7IC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmIChIZWxwZXJzLmlzVmFsaWRJcChkYXRhLmlwT3JEb21haW4pKSB7XG4gICAgICAgIGRhdGEuaXAgPSBkYXRhLmlwT3JEb21haW47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhLmRvbWFpbiA9IGRhdGEuaXBPckRvbWFpbjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEgJiYgIWRhdGEuaXApIHtcbiAgICAgIGRhdGEuaXAgPSAnJztcbiAgICB9XG4gICAgaWYgKGRhdGEgJiYgIWRhdGEuZG9tYWluKSB7XG4gICAgICBkYXRhLmRvbWFpbiA9ICcnO1xuICAgIH1cbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIGRhdGEgPSB7fTtcbiAgICB9XG4gICAgaWYgKF8uaXNTdHJpbmcoZGF0YT8uYWxpYXNlcykpIHsgLy8gQHRzLWlnbm9yZVxuICAgICAgZGF0YS5hbGlhc2VzID0gSGVscGVycy5zdHJpbmdzLnNwbGl0SWZOZWVkKGRhdGEuYWxpYXNlcyk7XG4gICAgfVxuICAgIHRoaXMuX2RhdGEgPSBkYXRhO1xuICB9XG4gIHB1YmxpYyBnZXQgaXAoKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEuaXA7XG4gIH1cbiAgcHVibGljIHNldCBpcChuZXdJcEFkZHJlc3M6IHN0cmluZykge1xuICAgIHRoaXMuX2RhdGEuaXAgPSBuZXdJcEFkZHJlc3M7XG4gIH1cbiAgcHVibGljIGdldCBkb21haW4oKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEuZG9tYWluO1xuICB9XG5cbiAgcHVibGljIGdldCBhbGlhc2VzKCk6IHN0cmluZ1tdIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBpZiAoXy5pc1N0cmluZyh0aGlzLl9kYXRhLmFsaWFzZXMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGF0YS5hbGlhc2VzLnNwbGl0KCcgJyk7XG4gICAgfVxuICAgIGlmICghXy5pc0FycmF5KHRoaXMuX2RhdGEuYWxpYXNlcykpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEuYWxpYXNlcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlyc3RBbGlhcygpIHtcbiAgICByZXR1cm4gXy5maXJzdCh0aGlzLmFsaWFzZXMpO1xuICB9XG5cbiAgcHVibGljIGdldCBuYW1lKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhLm5hbWU7XG4gIH1cbiAgcHVibGljIHNldCBuYW1lKHYpIHtcbiAgICB0aGlzLl9kYXRhLm5hbWUgPSB2O1xuICB9XG5cbiAgcHVibGljIGdldCBvcmlnaW5Ib3N0bmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YS5vcmlnaW5Ib3N0bmFtZTtcbiAgfVxuICBwdWJsaWMgc2V0IG9yaWdpbkhvc3RuYW1lKHYpIHtcbiAgICB0aGlzLl9kYXRhLm9yaWdpbkhvc3RuYW1lID0gdjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEuZGlzYWJsZWQ7XG4gIH1cbiAgcHVibGljIGdldCBpc0RlZmF1bHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEuaXNEZWZhdWx0O1xuICB9XG4gIHB1YmxpYyBnZXQgaWRlbnRpZmllcigpIHtcbiAgICByZXR1cm4gXy5rZWJhYkNhc2UodGhpcy5fZGF0YS5uYW1lKTtcbiAgfVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHYpIHtcbiAgICB0aGlzLl9kYXRhLmRpc2FibGVkID0gdjtcbiAgfVxuICBwdWJsaWMgZ2V0IGlwT3JEb21haW4oKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgY29uc3QgcmVzID0gKHRoaXMuZG9tYWluID8gdGhpcy5kb21haW4gOiB0aGlzLmlwKSB8fCAnJztcbiAgICByZXR1cm4gcmVzO1xuXG4gIH1cblxuICBwdWJsaWMgZ2V0IGlwT3JGaXJzdEFsaWFzKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IHJlcyA9ICh0aGlzLmZpcnN0QWxpYXMgPyB0aGlzLmZpcnN0QWxpYXMgOiB0aGlzLmlwKSB8fCAnJztcbiAgICByZXR1cm4gcmVzO1xuXG4gIH1cblxuICBwdWJsaWMgZ2V0IGhvc3RuYW1lKCkgeyAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgaCA9IEhlbHBlcnMudXJsUGFyc2UodGhpcy5pcE9yRmlyc3RBbGlhcywgdHJ1ZSk7XG4gICAgcmV0dXJuIGggPyBoLmhvc3RuYW1lIDogdm9pZCAwO1xuICB9XG5cbiAgcHVibGljIGdldCBob3N0bmFtZUZpcnN0QWxpYXMoKSB7IC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBoID0gSGVscGVycy51cmxQYXJzZSh0aGlzLmZpcnN0QWxpYXMsIHRydWUpO1xuICAgIHJldHVybiBoID8gaC5ob3N0bmFtZSA6IHZvaWQgMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaG9zdG5hbWVJcCgpIHsgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGggPSBIZWxwZXJzLnVybFBhcnNlKHRoaXMuaXApO1xuICAgIHJldHVybiBoID8gaC5ob3N0bmFtZSA6IHZvaWQgMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmFtZVdpdGhJcE9yRG9tYWluKCkge1xuICAgIHJldHVybiBjaGFsay51bmRlcmxpbmUoYCR7dGhpcy5uYW1lfSAke3RoaXMuaXBPckRvbWFpbn1gKTtcbiAgfVxuICB0b1N0cmluZyA9ICgpID0+IHtcbiAgICByZXR1cm4gYFtzdHJpbmcgdmVyc2lvbl0gJHt0aGlzLm5hbWVXaXRoSXBPckRvbWFpbn1gXG4gIH1cbn1cblxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dnBuLXNwbGl0IGxpYi9tb2RlbHMudHMiXX0=
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3Zwbi1zcGxpdC9wcm9qZWN0cy92cG4tc3BsaXQvc3JjL2xpYi9tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFvQzdDLE1BQU0sT0FBTyxhQUFhO0lBR2pCLEtBQUs7UUFDVixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJLENBQ1QsVUFNSyxFQUNMLElBQUksR0FBRyxFQUFFLEVBQ1QsUUFBUSxHQUFHLEtBQUs7UUFFaEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sS0FBSyxDQUFDLENBQUM7UUFDaEIsQ0FBQztRQUNELElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLFlBQVksYUFBYSxFQUFFLENBQUM7WUFDbEUsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFxQixDQUFDO1lBQ3BFLFNBQVMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztZQUNwRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDckMsU0FBUyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDaEMsQ0FBQztZQUNELE9BQU8sSUFBSSxhQUFhLENBQUMsU0FBUyxDQUFDLENB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QUM7SUFDNUQsQ0FBQztDQUlGO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxvREFBb0QiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgXywgY2hhbGsgfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJ3RucC1oZWxwZXJzL3dlYnNxbCc7XG5cbi8qKipcbiAqIEBkZXByZWNhdGVkXG4gKiB1c2Ugbm9ybWFsIG9iamVjdHNcbiAqL1xuZXhwb3J0IHR5cGUgRXRjSG9zdHMgPSB7IFtob3N0TmFtZSBpbiBzdHJpbmddOiBIb3N0Rm9yU2VydmVyIH07XG5cbi8qKipcbiAqIEBkZXByZWNhdGVkXG4gKiB1c2Ugbm9ybWFsIG9iamVjdHNcbiAqL1xuZXhwb3J0IHR5cGUgSUV0Y0hvc3RzID0ge1xuICBbaG9zdE5hbWUgaW4gc3RyaW5nXTogUGFydGlhbDxcbiAgICBQaWNrPEhvc3RGb3JTZXJ2ZXIsICdhbGlhc2VzJyB8ICdpcE9yRG9tYWluJyB8ICdlbnZpcm9ubWVudE5hbWUnPlxuICA+O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBPcHRIb3N0Rm9yU2VydmVyIHtcbiAgaXA/OiBzdHJpbmc7XG4gIGRvbWFpbj86IHN0cmluZztcbiAgaXBPckRvbWFpbj86IHN0cmluZztcbiAgZW52aXJvbm1lbnROYW1lPzogc3RyaW5nO1xuICBhbGlhc2VzPzogc3RyaW5nW107XG4gIGlzRGVmYXVsdD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBpcCBmcm9tIGNvbW1hbmQ6IHZwbi1jbGkgMTkyLjE2OC4xLjEgMTkyLjE2OC4xLjJcbiAgICovXG4gIG9yaWdpbkhvc3RuYW1lPzogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogaWYgdHJ1ZSAtIGlwIGFuZCBkb21haW4gd2lsbCBvdXRwdXQgZW1wdHkgc3RyaW5nXG4gICAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBIb3N0Rm9yU2VydmVyIGltcGxlbWVudHMgT3B0SG9zdEZvclNlcnZlciB7XG4gIHByaXZhdGUgX2RhdGE6IE9wdEhvc3RGb3JTZXJ2ZXI7XG5cbiAgcHVibGljIGNsb25lKCkge1xuICAgIHJldHVybiBIb3N0Rm9yU2VydmVyLkZyb20odGhpcyk7XG4gIH1cblxuICBzdGF0aWMgRnJvbShcbiAgICBpcE9yRG9tYWluOlxuICAgICAgfCBzdHJpbmdcbiAgICAgIHwgVVJMXG4gICAgICB8IFBpY2s8XG4gICAgICAgICAgT3B0SG9zdEZvclNlcnZlciB8IEhvc3RGb3JTZXJ2ZXIsXG4gICAgICAgICAgJ2lwT3JEb21haW4nIHwgJ2FsaWFzZXMnIHwgJ29yaWdpbkhvc3RuYW1lJ1xuICAgICAgICA+LFxuICAgIG5hbWUgPSAnJyxcbiAgICBkaXNhYmxlZCA9IGZhbHNlLFxuICApOiBIb3N0Rm9yU2VydmVyIHtcbiAgICBpZiAoIWlwT3JEb21haW4pIHtcbiAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfVxuICAgIGlmIChfLmlzT2JqZWN0KGlwT3JEb21haW4pICYmIGlwT3JEb21haW4gaW5zdGFuY2VvZiBIb3N0Rm9yU2VydmVyKSB7XG4gICAgICBjb25zdCBkYXRhQ2xvbmUgPSBfLmNsb25lRGVlcChpcE9yRG9tYWluLl9kYXRhKSBhcyBPcHRIb3N0Rm9yU2VydmVyO1xuICAgICAgZGF0YUNsb25lLm5hbWUgPSBuYW1lICYmIG5hbWUudHJpbSgpICE9PSAnJyA/IG5hbWUgOiBkYXRhQ2xvbmUubmFtZTtcbiAgICAgIGlmICghXy5pc0Jvb2xlYW4oZGF0YUNsb25lLmRpc2FibGVkKSkge1xuICAgICAgICBkYXRhQ2xvbmUuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgSG9zdEZvclNlcnZlcihkYXRhQ2xvbmUpO1xuICAgIH1cbiAgICBpZiAoXy5pc1N0cmluZyhpcE9yRG9tYWluKSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgcGFyc2VkID0gSGVscGVycy51cmxQYXJzZShpcE9yRG9tYWluKTtcbiAgICAgIGlmIChwYXJzZWQpIHtcbiAgICAgICAgaXBPckRvbWFpbiA9IHBhcnNlZCBhcyBhbnk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKF8uaXNPYmplY3QoaXBPckRvbWFpbikgJiYgaXBPckRvbWFpbiBpbnN0YW5jZW9mIFVSTCkge1xuICAgICAgaXBPckRvbWFpbiA9IGlwT3JEb21haW4gYXMgVVJMOyAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAoSGVscGVycy5pc1ZhbGlkSXAoaXBPckRvbWFpbj8uaG9zdCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBIb3N0Rm9yU2VydmVyKHsgaXA6IGlwT3JEb21haW4ub3JpZ2luLCBuYW1lLCBkaXNhYmxlZCB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXcgSG9zdEZvclNlcnZlcih7IGRvbWFpbjogaXBPckRvbWFpbi5vcmlnaW4sIG5hbWUsIGRpc2FibGVkIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoXy5pc1N0cmluZyhpcE9yRG9tYWluKSkge1xuICAgICAgICByZXR1cm4gbmV3IEhvc3RGb3JTZXJ2ZXIoeyBpcE9yRG9tYWluLCBuYW1lLCBkaXNhYmxlZCB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIChpcE9yRG9tYWluIGFzIE9wdEhvc3RGb3JTZXJ2ZXIpLm5hbWUgPVxuICAgICAgICAgIG5hbWUgJiYgbmFtZS50cmltKCkgIT09ICcnXG4gICAgICAgICAgICA/IG5hbWVcbiAgICAgICAgICAgIDogKGlwT3JEb21haW4gYXMgT3B0SG9zdEZvclNlcnZlcikubmFtZTtcbiAgICAgICAgaWYgKCFfLmlzQm9vbGVhbigoaXBPckRvbWFpbiBhcyBPcHRIb3N0Rm9yU2VydmVyKS5kaXNhYmxlZCkpIHtcbiAgICAgICAgICAoaXBPckRvbWFpbiBhcyBPcHRIb3N0Rm9yU2VydmVyKS5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgSG9zdEZvclNlcnZlcihpcE9yRG9tYWluIGFzIGFueSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNvbnN0cnVjdG9yKGRhdGE6IE9wdEhvc3RGb3JTZXJ2ZXIpIHtcbiAgICBpZiAoZGF0YT8uaXBPckRvbWFpbikge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKEhlbHBlcnMuaXNWYWxpZElwKGRhdGEuaXBPckRvbWFpbikpIHtcbiAgICAgICAgZGF0YS5pcCA9IGRhdGEuaXBPckRvbWFpbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGEuZG9tYWluID0gZGF0YS5pcE9yRG9tYWluO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YSAmJiAhZGF0YS5pcCkge1xuICAgICAgZGF0YS5pcCA9ICcnO1xuICAgIH1cbiAgICBpZiAoZGF0YSAmJiAhZGF0YS5kb21haW4pIHtcbiAgICAgIGRhdGEuZG9tYWluID0gJyc7XG4gICAgfVxuICAgIGlmICghZGF0YSkge1xuICAgICAgZGF0YSA9IHt9O1xuICAgIH1cbiAgICBpZiAoXy5pc1N0cmluZyhkYXRhPy5hbGlhc2VzKSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZGF0YS5hbGlhc2VzID0gSGVscGVycy5zdHJpbmdzLnNwbGl0SWZOZWVkKGRhdGEuYWxpYXNlcyk7XG4gICAgfVxuICAgIHRoaXMuX2RhdGEgPSBkYXRhO1xuICB9XG4gIHB1YmxpYyBnZXQgaXAoKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEuaXA7XG4gIH1cbiAgcHVibGljIHNldCBpcChuZXdJcEFkZHJlc3M6IHN0cmluZykge1xuICAgIHRoaXMuX2RhdGEuaXAgPSBuZXdJcEFkZHJlc3M7XG4gIH1cbiAgcHVibGljIGdldCBkb21haW4oKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEuZG9tYWluO1xuICB9XG5cbiAgcHVibGljIGdldCBhbGlhc2VzKCk6IHN0cmluZ1tdIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBpZiAoXy5pc1N0cmluZyh0aGlzLl9kYXRhLmFsaWFzZXMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGF0YS5hbGlhc2VzLnNwbGl0KCcgJyk7XG4gICAgfVxuICAgIGlmICghXy5pc0FycmF5KHRoaXMuX2RhdGEuYWxpYXNlcykpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEuYWxpYXNlcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlyc3RBbGlhcygpIHtcbiAgICByZXR1cm4gXy5maXJzdCh0aGlzLmFsaWFzZXMpO1xuICB9XG5cbiAgcHVibGljIGdldCBuYW1lKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhLm5hbWU7XG4gIH1cbiAgcHVibGljIHNldCBuYW1lKHYpIHtcbiAgICB0aGlzLl9kYXRhLm5hbWUgPSB2O1xuICB9XG5cbiAgcHVibGljIGdldCBvcmlnaW5Ib3N0bmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YS5vcmlnaW5Ib3N0bmFtZTtcbiAgfVxuICBwdWJsaWMgc2V0IG9yaWdpbkhvc3RuYW1lKHYpIHtcbiAgICB0aGlzLl9kYXRhLm9yaWdpbkhvc3RuYW1lID0gdjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEuZGlzYWJsZWQ7XG4gIH1cbiAgcHVibGljIGdldCBpc0RlZmF1bHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEuaXNEZWZhdWx0O1xuICB9XG4gIHB1YmxpYyBnZXQgaWRlbnRpZmllcigpIHtcbiAgICByZXR1cm4gXy5rZWJhYkNhc2UodGhpcy5fZGF0YS5uYW1lKTtcbiAgfVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHYpIHtcbiAgICB0aGlzLl9kYXRhLmRpc2FibGVkID0gdjtcbiAgfVxuICBwdWJsaWMgZ2V0IGVudmlyb25tZW50TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YS5lbnZpcm9ubWVudE5hbWUgfHwgJyc7XG4gIH1cbiAgcHVibGljIGdldCBpcE9yRG9tYWluKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IHJlcyA9ICh0aGlzLmRvbWFpbiA/IHRoaXMuZG9tYWluIDogdGhpcy5pcCkgfHwgJyc7XG4gICAgcmV0dXJuIHJlcztcblxuICB9XG5cbiAgcHVibGljIGdldCBpcE9yRmlyc3RBbGlhcygpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBjb25zdCByZXMgPSAodGhpcy5maXJzdEFsaWFzID8gdGhpcy5maXJzdEFsaWFzIDogdGhpcy5pcCkgfHwgJyc7XG4gICAgcmV0dXJuIHJlcztcblxuICB9XG5cbiAgcHVibGljIGdldCBob3N0bmFtZSgpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgaCA9IEhlbHBlcnMudXJsUGFyc2UodGhpcy5pcE9yRmlyc3RBbGlhcywgdHJ1ZSk7XG4gICAgcmV0dXJuIGggPyBoLmhvc3RuYW1lIDogdm9pZCAwO1xuICB9XG5cbiAgcHVibGljIGdldCBob3N0bmFtZUZpcnN0QWxpYXMoKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGggPSBIZWxwZXJzLnVybFBhcnNlKHRoaXMuZmlyc3RBbGlhcywgdHJ1ZSk7XG4gICAgcmV0dXJuIGggPyBoLmhvc3RuYW1lIDogdm9pZCAwO1xuICB9XG5cbiAgcHVibGljIGdldCBob3N0bmFtZUlwKCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBoID0gSGVscGVycy51cmxQYXJzZSh0aGlzLmlwKTtcbiAgICByZXR1cm4gaCA/IGguaG9zdG5hbWUgOiB2b2lkIDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5hbWVXaXRoSXBPckRvbWFpbigpIHtcbiAgICByZXR1cm4gY2hhbGsudW5kZXJsaW5lKGAke3RoaXMubmFtZX0gJHt0aGlzLmlwT3JEb21haW59YCk7XG4gIH1cbiAgdG9TdHJpbmcgPSAoKSA9PiB7XG4gICAgcmV0dXJuIGBbc3RyaW5nIHZlcnNpb25dICR7dGhpcy5uYW1lV2l0aElwT3JEb21haW59YDtcbiAgfTtcbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXZwbi1zcGxpdCBsaWIvbW9kZWxzLnRzIl19
@@ -11,20 +11,20 @@ class HostForServer {
11
11
  }
12
12
  if (_.isObject(ipOrDomain) && ipOrDomain instanceof HostForServer) {
13
13
  const dataClone = _.cloneDeep(ipOrDomain._data);
14
- dataClone.name = (name && (name.trim() !== '')) ?
15
- name : dataClone.name;
14
+ dataClone.name = name && name.trim() !== '' ? name : dataClone.name;
16
15
  if (!_.isBoolean(dataClone.disabled)) {
17
16
  dataClone.disabled = disabled;
18
17
  }
19
18
  return new HostForServer(dataClone);
20
19
  }
21
- if (_.isString(ipOrDomain)) { // @ts-ignore
20
+ if (_.isString(ipOrDomain)) {
21
+ // @ts-ignore
22
22
  const parsed = Helpers.urlParse(ipOrDomain);
23
23
  if (parsed) {
24
24
  ipOrDomain = parsed;
25
25
  }
26
26
  }
27
- if (_.isObject(ipOrDomain) && (ipOrDomain instanceof URL)) {
27
+ if (_.isObject(ipOrDomain) && ipOrDomain instanceof URL) {
28
28
  ipOrDomain = ipOrDomain; // @ts-ignore
29
29
  if (Helpers.isValidIp(ipOrDomain?.host)) {
30
30
  return new HostForServer({ ip: ipOrDomain.origin, name, disabled });
@@ -38,8 +38,10 @@ class HostForServer {
38
38
  return new HostForServer({ ipOrDomain, name, disabled });
39
39
  }
40
40
  else {
41
- ipOrDomain.name = (name && (name.trim() !== '')) ?
42
- name : ipOrDomain.name;
41
+ ipOrDomain.name =
42
+ name && name.trim() !== ''
43
+ ? name
44
+ : ipOrDomain.name;
43
45
  if (!_.isBoolean(ipOrDomain.disabled)) {
44
46
  ipOrDomain.disabled = disabled;
45
47
  }
@@ -51,7 +53,8 @@ class HostForServer {
51
53
  this.toString = () => {
52
54
  return `[string version] ${this.nameWithIpOrDomain}`;
53
55
  };
54
- if (data?.ipOrDomain) { // @ts-ignore
56
+ if (data?.ipOrDomain) {
57
+ // @ts-ignore
55
58
  if (Helpers.isValidIp(data.ipOrDomain)) {
56
59
  data.ip = data.ipOrDomain;
57
60
  }
@@ -68,7 +71,8 @@ class HostForServer {
68
71
  if (!data) {
69
72
  data = {};
70
73
  }
71
- if (_.isString(data?.aliases)) { // @ts-ignore
74
+ if (_.isString(data?.aliases)) {
75
+ // @ts-ignore
72
76
  data.aliases = Helpers.strings.splitIfNeed(data.aliases);
73
77
  }
74
78
  this._data = data;
@@ -127,6 +131,9 @@ class HostForServer {
127
131
  set disabled(v) {
128
132
  this._data.disabled = v;
129
133
  }
134
+ get environmentName() {
135
+ return this._data.environmentName || '';
136
+ }
130
137
  get ipOrDomain() {
131
138
  if (this.disabled) {
132
139
  return '';
@@ -142,14 +149,17 @@ class HostForServer {
142
149
  return res;
143
150
  }
144
151
  get hostname() {
152
+ // @ts-ignore
145
153
  const h = Helpers.urlParse(this.ipOrFirstAlias, true);
146
154
  return h ? h.hostname : void 0;
147
155
  }
148
156
  get hostnameFirstAlias() {
157
+ // @ts-ignore
149
158
  const h = Helpers.urlParse(this.firstAlias, true);
150
159
  return h ? h.hostname : void 0;
151
160
  }
152
161
  get hostnameIp() {
162
+ // @ts-ignore
153
163
  const h = Helpers.urlParse(this.ip);
154
164
  return h ? h.hostname : void 0;
155
165
  }
@@ -1 +1 @@
1
- {"version":3,"file":"vpn-split.mjs","sources":["../../../tmp-libs-for-dist-websql/vpn-split/projects/vpn-split/src/lib/models.ts","../../../tmp-libs-for-dist-websql/vpn-split/projects/vpn-split/src/lib/index.ts","../../../tmp-libs-for-dist-websql/vpn-split/projects/vpn-split/src/vpn-split.ts"],"sourcesContent":["\n\nimport { _, chalk } from 'tnp-core/websql';\nimport { Helpers } from 'tnp-helpers/websql';\n\n/***\n * @deprecated\n * use normal objects\n */\nexport type EtcHosts = { [hostName in string]: HostForServer; };\n\n/***\n * @deprecated\n * use normal objects\n */\nexport type IEtcHosts = { [hostName in string]: Pick<HostForServer, 'aliases' | 'ipOrDomain'>; };\n\nexport interface OptHostForServer {\n ip?: string;\n domain?: string;\n ipOrDomain?: string;\n aliases?: string[];\n isDefault?: boolean;\n /**\n * ip from command: vpn-cli 192.168.1.1 192.168.1.2\n */\n originHostname?: string;\n name?: string;\n /**\n * if true - ip and domain will output empty string\n */\n disabled?: boolean;\n}\n\nexport class HostForServer implements OptHostForServer {\n private _data: OptHostForServer;\n\n public clone() {\n return HostForServer.From(this);\n }\n\n static From(ipOrDomain: string | URL | Pick<OptHostForServer | HostForServer, 'ipOrDomain' | 'aliases' | 'originHostname'>, name = '', disabled = false): HostForServer {\n if (!ipOrDomain) {\n return void 0;\n }\n if (_.isObject(ipOrDomain) && ipOrDomain instanceof HostForServer) {\n const dataClone = _.cloneDeep(ipOrDomain._data) as OptHostForServer;\n dataClone.name = (name && (name.trim() !== '')) ?\n name : dataClone.name;\n if (!_.isBoolean(dataClone.disabled)) {\n dataClone.disabled = disabled;\n }\n return new HostForServer(dataClone);\n }\n if (_.isString(ipOrDomain)) { // @ts-ignore\n const parsed = Helpers.urlParse(ipOrDomain);\n if (parsed) {\n ipOrDomain = parsed as any;\n }\n }\n\n if (_.isObject(ipOrDomain) && (ipOrDomain instanceof URL)) {\n ipOrDomain = ipOrDomain as URL; // @ts-ignore\n if (Helpers.isValidIp(ipOrDomain?.host)) {\n return new HostForServer({ ip: ipOrDomain.origin, name, disabled });\n } else {\n return new HostForServer({ domain: ipOrDomain.origin, name, disabled });\n }\n } else {\n if (_.isString(ipOrDomain)) {\n return new HostForServer({ ipOrDomain, name, disabled });\n } else {\n (ipOrDomain as OptHostForServer).name = (name && (name.trim() !== '')) ?\n name : (ipOrDomain as OptHostForServer).name;\n if (!_.isBoolean((ipOrDomain as OptHostForServer).disabled)) {\n (ipOrDomain as OptHostForServer).disabled = disabled;\n }\n return new HostForServer(ipOrDomain as any);\n }\n\n }\n }\n constructor(data: OptHostForServer) {\n if (data?.ipOrDomain) { // @ts-ignore\n if (Helpers.isValidIp(data.ipOrDomain)) {\n data.ip = data.ipOrDomain;\n } else {\n data.domain = data.ipOrDomain;\n }\n }\n if (data && !data.ip) {\n data.ip = '';\n }\n if (data && !data.domain) {\n data.domain = '';\n }\n if (!data) {\n data = {};\n }\n if (_.isString(data?.aliases)) { // @ts-ignore\n data.aliases = Helpers.strings.splitIfNeed(data.aliases);\n }\n this._data = data;\n }\n public get ip() {\n if (this.disabled) {\n return '';\n }\n return this._data.ip;\n }\n public set ip(newIpAddress: string) {\n this._data.ip = newIpAddress;\n }\n public get domain() {\n if (this.disabled) {\n return '';\n }\n return this._data.domain;\n }\n\n public get aliases(): string[] {\n if (this.disabled) {\n return [];\n }\n if (_.isString(this._data.aliases)) {\n return this._data.aliases.split(' ');\n }\n if (!_.isArray(this._data.aliases)) {\n return [];\n }\n return this._data.aliases;\n }\n\n public get firstAlias() {\n return _.first(this.aliases);\n }\n\n public get name() {\n return this._data.name;\n }\n public set name(v) {\n this._data.name = v;\n }\n\n public get originHostname() {\n return this._data.originHostname;\n }\n public set originHostname(v) {\n this._data.originHostname = v;\n }\n\n public get disabled() {\n return this._data.disabled;\n }\n public get isDefault() {\n return this._data.isDefault;\n }\n public get identifier() {\n return _.kebabCase(this._data.name);\n }\n public set disabled(v) {\n this._data.disabled = v;\n }\n public get ipOrDomain() {\n if (this.disabled) {\n return '';\n }\n const res = (this.domain ? this.domain : this.ip) || '';\n return res;\n\n }\n\n public get ipOrFirstAlias() {\n if (this.disabled) {\n return '';\n }\n const res = (this.firstAlias ? this.firstAlias : this.ip) || '';\n return res;\n\n }\n\n public get hostname() { // @ts-ignore\n const h = Helpers.urlParse(this.ipOrFirstAlias, true);\n return h ? h.hostname : void 0;\n }\n\n public get hostnameFirstAlias() { // @ts-ignore\n const h = Helpers.urlParse(this.firstAlias, true);\n return h ? h.hostname : void 0;\n }\n\n public get hostnameIp() { // @ts-ignore\n const h = Helpers.urlParse(this.ip);\n return h ? h.hostname : void 0;\n }\n\n public get nameWithIpOrDomain() {\n return chalk.underline(`${this.name} ${this.ipOrDomain}`);\n }\n toString = () => {\n return `[string version] ${this.nameWithIpOrDomain}`\n }\n}\n\n\n ;({}); // @--end-of-file-for-module=vpn-split lib/models.ts","\n\nexport * from './models';\n/* */\n/* */\n \n\n ;({}); // @--end-of-file-for-module=vpn-split lib/index.ts","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vpn-split.mjs","sources":["../../../tmp-libs-for-dist-websql/vpn-split/projects/vpn-split/src/lib/models.ts","../../../tmp-libs-for-dist-websql/vpn-split/projects/vpn-split/src/lib/index.ts","../../../tmp-libs-for-dist-websql/vpn-split/projects/vpn-split/src/vpn-split.ts"],"sourcesContent":["\n\nimport { _, chalk } from 'tnp-core/websql';\nimport { Helpers } from 'tnp-helpers/websql';\n\n/***\n * @deprecated\n * use normal objects\n */\nexport type EtcHosts = { [hostName in string]: HostForServer };\n\n/***\n * @deprecated\n * use normal objects\n */\nexport type IEtcHosts = {\n [hostName in string]: Partial<\n Pick<HostForServer, 'aliases' | 'ipOrDomain' | 'environmentName'>\n >;\n};\n\nexport interface OptHostForServer {\n ip?: string;\n domain?: string;\n ipOrDomain?: string;\n environmentName?: string;\n aliases?: string[];\n isDefault?: boolean;\n /**\n * ip from command: vpn-cli 192.168.1.1 192.168.1.2\n */\n originHostname?: string;\n name?: string;\n /**\n * if true - ip and domain will output empty string\n */\n disabled?: boolean;\n}\n\nexport class HostForServer implements OptHostForServer {\n private _data: OptHostForServer;\n\n public clone() {\n return HostForServer.From(this);\n }\n\n static From(\n ipOrDomain:\n | string\n | URL\n | Pick<\n OptHostForServer | HostForServer,\n 'ipOrDomain' | 'aliases' | 'originHostname'\n >,\n name = '',\n disabled = false,\n ): HostForServer {\n if (!ipOrDomain) {\n return void 0;\n }\n if (_.isObject(ipOrDomain) && ipOrDomain instanceof HostForServer) {\n const dataClone = _.cloneDeep(ipOrDomain._data) as OptHostForServer;\n dataClone.name = name && name.trim() !== '' ? name : dataClone.name;\n if (!_.isBoolean(dataClone.disabled)) {\n dataClone.disabled = disabled;\n }\n return new HostForServer(dataClone);\n }\n if (_.isString(ipOrDomain)) {\n // @ts-ignore\n const parsed = Helpers.urlParse(ipOrDomain);\n if (parsed) {\n ipOrDomain = parsed as any;\n }\n }\n\n if (_.isObject(ipOrDomain) && ipOrDomain instanceof URL) {\n ipOrDomain = ipOrDomain as URL; // @ts-ignore\n if (Helpers.isValidIp(ipOrDomain?.host)) {\n return new HostForServer({ ip: ipOrDomain.origin, name, disabled });\n } else {\n return new HostForServer({ domain: ipOrDomain.origin, name, disabled });\n }\n } else {\n if (_.isString(ipOrDomain)) {\n return new HostForServer({ ipOrDomain, name, disabled });\n } else {\n (ipOrDomain as OptHostForServer).name =\n name && name.trim() !== ''\n ? name\n : (ipOrDomain as OptHostForServer).name;\n if (!_.isBoolean((ipOrDomain as OptHostForServer).disabled)) {\n (ipOrDomain as OptHostForServer).disabled = disabled;\n }\n return new HostForServer(ipOrDomain as any);\n }\n }\n }\n constructor(data: OptHostForServer) {\n if (data?.ipOrDomain) {\n // @ts-ignore\n if (Helpers.isValidIp(data.ipOrDomain)) {\n data.ip = data.ipOrDomain;\n } else {\n data.domain = data.ipOrDomain;\n }\n }\n if (data && !data.ip) {\n data.ip = '';\n }\n if (data && !data.domain) {\n data.domain = '';\n }\n if (!data) {\n data = {};\n }\n if (_.isString(data?.aliases)) {\n // @ts-ignore\n data.aliases = Helpers.strings.splitIfNeed(data.aliases);\n }\n this._data = data;\n }\n public get ip() {\n if (this.disabled) {\n return '';\n }\n return this._data.ip;\n }\n public set ip(newIpAddress: string) {\n this._data.ip = newIpAddress;\n }\n public get domain() {\n if (this.disabled) {\n return '';\n }\n return this._data.domain;\n }\n\n public get aliases(): string[] {\n if (this.disabled) {\n return [];\n }\n if (_.isString(this._data.aliases)) {\n return this._data.aliases.split(' ');\n }\n if (!_.isArray(this._data.aliases)) {\n return [];\n }\n return this._data.aliases;\n }\n\n public get firstAlias() {\n return _.first(this.aliases);\n }\n\n public get name() {\n return this._data.name;\n }\n public set name(v) {\n this._data.name = v;\n }\n\n public get originHostname() {\n return this._data.originHostname;\n }\n public set originHostname(v) {\n this._data.originHostname = v;\n }\n\n public get disabled() {\n return this._data.disabled;\n }\n public get isDefault() {\n return this._data.isDefault;\n }\n public get identifier() {\n return _.kebabCase(this._data.name);\n }\n public set disabled(v) {\n this._data.disabled = v;\n }\n public get environmentName() {\n return this._data.environmentName || '';\n }\n public get ipOrDomain() {\n if (this.disabled) {\n return '';\n }\n const res = (this.domain ? this.domain : this.ip) || '';\n return res;\n\n }\n\n public get ipOrFirstAlias() {\n if (this.disabled) {\n return '';\n }\n const res = (this.firstAlias ? this.firstAlias : this.ip) || '';\n return res;\n\n }\n\n public get hostname() {\n // @ts-ignore\n const h = Helpers.urlParse(this.ipOrFirstAlias, true);\n return h ? h.hostname : void 0;\n }\n\n public get hostnameFirstAlias() {\n // @ts-ignore\n const h = Helpers.urlParse(this.firstAlias, true);\n return h ? h.hostname : void 0;\n }\n\n public get hostnameIp() {\n // @ts-ignore\n const h = Helpers.urlParse(this.ip);\n return h ? h.hostname : void 0;\n }\n\n public get nameWithIpOrDomain() {\n return chalk.underline(`${this.name} ${this.ipOrDomain}`);\n }\n toString = () => {\n return `[string version] ${this.nameWithIpOrDomain}`;\n };\n}\n\n ;({}); // @--end-of-file-for-module=vpn-split lib/models.ts","\n\nexport * from './models';\n/* */\n/* */\n \n\n ;({}); // @--end-of-file-for-module=vpn-split lib/index.ts","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAuCa,aAAa,CAAA;IAGjB,KAAK,GAAA;AACV,QAAA,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGjC,OAAO,IAAI,CACT,UAMK,EACL,IAAI,GAAG,EAAE,EACT,QAAQ,GAAG,KAAK,EAAA;QAEhB,IAAI,CAAC,UAAU,EAAE;YACf,OAAO,KAAK,CAAC;;QAEf,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,YAAY,aAAa,EAAE;YACjE,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAqB;YACnE,SAAS,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC,IAAI;YACnE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;AACpC,gBAAA,SAAS,CAAC,QAAQ,GAAG,QAAQ;;AAE/B,YAAA,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC;;AAErC,QAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;;YAE1B,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC3C,IAAI,MAAM,EAAE;gBACV,UAAU,GAAG,MAAa;;;QAI9B,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,YAAY,GAAG,EAAE;AACvD,YAAA,UAAU,GAAG,UAAiB,CAAC;YAC/B,IAAI,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE;AACvC,gBAAA,OAAO,IAAI,aAAa,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;iBAC9D;AACL,gBAAA,OAAO,IAAI,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;;aAEpE;AACL,YAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;gBAC1B,OAAO,IAAI,aAAa,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;iBACnD;AACJ,gBAAA,UAA+B,CAAC,IAAI;AACnC,oBAAA,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK;AACtB,0BAAE;AACF,0BAAG,UAA+B,CAAC,IAAI;gBAC3C,IAAI,CAAC,CAAC,CAAC,SAAS,CAAE,UAA+B,CAAC,QAAQ,CAAC,EAAE;AAC1D,oBAAA,UAA+B,CAAC,QAAQ,GAAG,QAAQ;;AAEtD,gBAAA,OAAO,IAAI,aAAa,CAAC,UAAiB,CAAC;;;;AAIjD,IAAA,WAAA,CAAY,IAAsB,EAAA;QA6HlC,IAAQ,CAAA,QAAA,GAAG,MAAK;AACd,YAAA,OAAO,CAAoB,iBAAA,EAAA,IAAI,CAAC,kBAAkB,EAAE;AACtD,SAAC;AA9HC,QAAA,IAAI,IAAI,EAAE,UAAU,EAAE;;YAEpB,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,gBAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU;;iBACpB;AACL,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU;;;AAGjC,QAAA,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,EAAE,GAAG,EAAE;;AAEd,QAAA,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACxB,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE;;QAElB,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,GAAG,EAAE;;QAEX,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;;AAE7B,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;;AAE1D,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;;AAEnB,IAAA,IAAW,EAAE,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,EAAE;;AAEX,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE;;IAEtB,IAAW,EAAE,CAAC,YAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,YAAY;;AAE9B,IAAA,IAAW,MAAM,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,EAAE;;AAEX,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM;;AAG1B,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,EAAE;;QAEX,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YAClC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;;AAEtC,QAAA,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AAClC,YAAA,OAAO,EAAE;;AAEX,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO;;AAG3B,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;;AAG9B,IAAA,IAAW,IAAI,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI;;IAExB,IAAW,IAAI,CAAC,CAAC,EAAA;AACf,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC;;AAGrB,IAAA,IAAW,cAAc,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc;;IAElC,IAAW,cAAc,CAAC,CAAC,EAAA;AACzB,QAAA,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC;;AAG/B,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ;;AAE5B,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS;;AAE7B,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;IAErC,IAAW,QAAQ,CAAC,CAAC,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC;;AAEzB,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,EAAE;;AAEzC,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,EAAE;;QAEX,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,KAAK,EAAE;AACvD,QAAA,OAAO,GAAG;;AAIZ,IAAA,IAAW,cAAc,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,EAAE;;QAEX,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,KAAK,EAAE;AAC/D,QAAA,OAAO,GAAG;;AAIZ,IAAA,IAAW,QAAQ,GAAA;;AAEjB,QAAA,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;AACrD,QAAA,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;;AAGhC,IAAA,IAAW,kBAAkB,GAAA;;AAE3B,QAAA,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;AACjD,QAAA,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;;AAGhC,IAAA,IAAW,UAAU,GAAA;;QAEnB,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AACnC,QAAA,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;;AAGhC,IAAA,IAAW,kBAAkB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,UAAU,CAAA,CAAE,CAAC;;AAK5D;AAEA;AAAC,CAAC,EAAE,EAAE;;ACjOP;AACA;AAGC;AAAC,CAAC,EAAE,EAAE;;;ACPP;;AAEG;;;;"}
@@ -11,12 +11,13 @@ export type EtcHosts = {
11
11
  * use normal objects
12
12
  */
13
13
  export type IEtcHosts = {
14
- [hostName in string]: Pick<HostForServer, 'aliases' | 'ipOrDomain'>;
14
+ [hostName in string]: Partial<Pick<HostForServer, 'aliases' | 'ipOrDomain' | 'environmentName'>>;
15
15
  };
16
16
  export interface OptHostForServer {
17
17
  ip?: string;
18
18
  domain?: string;
19
19
  ipOrDomain?: string;
20
+ environmentName?: string;
20
21
  aliases?: string[];
21
22
  isDefault?: boolean;
22
23
  /**
@@ -47,6 +48,7 @@ export declare class HostForServer implements OptHostForServer {
47
48
  get isDefault(): boolean;
48
49
  get identifier(): string;
49
50
  set disabled(v: boolean);
51
+ get environmentName(): string;
50
52
  get ipOrDomain(): string;
51
53
  get ipOrFirstAlias(): string;
52
54
  get hostname(): string;
@@ -1,25 +0,0 @@
1
- {
2
- "name": "vpn-split",
3
- "version": "0.0.1",
4
- "peerDependencies": {
5
- "@angular/common": "^13.2.0",
6
- "@angular/core": "^13.2.0"
7
- },
8
- "dependencies": {
9
- "tslib": "^2.3.0"
10
- },
11
- "module": "fesm2022/vpn-split.mjs",
12
- "typings": "index.d.ts",
13
- "exports": {
14
- "./package.json": {
15
- "default": "./package.json"
16
- },
17
- ".": {
18
- "types": "./index.d.ts",
19
- "esm2022": "./esm2022/vpn-split.mjs",
20
- "esm": "./esm2022/vpn-split.mjs",
21
- "default": "./fesm2022/vpn-split.mjs"
22
- }
23
- },
24
- "sideEffects": false
25
- }
@@ -1,25 +0,0 @@
1
- {
2
- "name": "vpn-split",
3
- "version": "0.0.1",
4
- "peerDependencies": {
5
- "@angular/common": "^13.2.0",
6
- "@angular/core": "^13.2.0"
7
- },
8
- "dependencies": {
9
- "tslib": "^2.3.0"
10
- },
11
- "module": "fesm2022/vpn-split.mjs",
12
- "typings": "index.d.ts",
13
- "exports": {
14
- "./package.json": {
15
- "default": "./package.json"
16
- },
17
- ".": {
18
- "types": "./index.d.ts",
19
- "esm2022": "./esm2022/vpn-split.mjs",
20
- "esm": "./esm2022/vpn-split.mjs",
21
- "default": "./fesm2022/vpn-split.mjs"
22
- }
23
- },
24
- "sideEffects": false
25
- }