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.
- package/assets/shared/shared_folder_info.txt +1 -1
- package/bin/vpn-split +11 -11
- package/bin/vpn-split-debug +11 -11
- package/browser/README.md +24 -24
- package/browser/esm2022/lib/models.mjs +19 -9
- package/browser/fesm2022/vpn-split.mjs +18 -8
- package/browser/fesm2022/vpn-split.mjs.map +1 -1
- package/browser/lib/models.d.ts +3 -1
- package/client/README.md +24 -24
- package/client/esm2022/lib/models.mjs +19 -9
- package/client/fesm2022/vpn-split.mjs +18 -8
- package/client/fesm2022/vpn-split.mjs.map +1 -1
- package/client/lib/models.d.ts +3 -1
- package/index.js +15 -2
- package/index.js.map +1 -1
- package/lib/build-info._auto-generated_.js.map +1 -1
- package/lib/hostile.backend.js +25 -31
- package/lib/hostile.backend.js.map +1 -1
- package/lib/index._auto-generated_.d.ts +1 -0
- package/lib/index._auto-generated_.js.map +1 -1
- package/lib/index.js +16 -3
- package/lib/index.js.map +1 -1
- package/lib/models.d.ts +3 -1
- package/lib/models.js +140 -193
- package/lib/models.js.map +1 -1
- package/lib/start.backend.d.ts +1 -0
- package/lib/start.backend.js.map +1 -1
- package/lib/vpn-split.backend.d.ts +18 -22
- package/lib/vpn-split.backend.js +469 -547
- package/lib/vpn-split.backend.js.map +1 -1
- package/migrations/index.js +15 -2
- package/migrations/index.js.map +1 -1
- package/migrations/migrations_index._auto-generated_.d.ts +1 -0
- package/migrations/migrations_index._auto-generated_.js.map +1 -1
- package/package.json +8 -44
- package/src.d.ts +1 -1
- package/taon.jsonc +33 -33
- package/tmp-environment.json +8 -375
- package/websql/README.md +24 -24
- package/websql/esm2022/lib/models.mjs +19 -9
- package/websql/fesm2022/vpn-split.mjs +18 -8
- package/websql/fesm2022/vpn-split.mjs.map +1 -1
- package/websql/lib/models.d.ts +3 -1
- package/browser/package.json +0 -25
- 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 =
|
|
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)) {
|
|
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) &&
|
|
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 =
|
|
41
|
-
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) {
|
|
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)) {
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3Zwbi1zcGxpdC9wcm9qZWN0cy92cG4tc3BsaXQvc3JjL2xpYi9tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUErQjdDLE1BQU0sT0FBTyxhQUFhO0lBR2pCLEtBQUs7UUFDVixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBOEcsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLFFBQVEsR0FBRyxLQUFLO1FBQ3JKLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixPQUFPLEtBQUssQ0FBQyxDQUFDO1FBQ2hCLENBQUM7UUFDRCxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxZQUFZLGFBQWEsRUFBRSxDQUFDO1lBQ2xFLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBcUIsQ0FBQztZQUNwRSxTQUFTLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxTQUFTLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztZQUNoQyxDQUFDO1lBQ0QsT0FBTyxJQUFJLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhO1lBQ3pDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxVQUFVLEdBQUcsTUFBYSxDQUFDO1lBQzdCLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUQsVUFBVSxHQUFHLFVBQWlCLENBQUMsQ0FBQyxhQUFhO1lBQzdDLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDeEMsT0FBTyxJQUFJLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3RFLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLElBQUksYUFBYSxDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDMUUsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sSUFBSSxhQUFhLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDM0QsQ0FBQztpQkFBTSxDQUFDO2dCQUNMLFVBQStCLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDdEUsSUFBSSxDQUFDLENBQUMsQ0FBRSxVQUErQixDQUFDLElBQUksQ0FBQztnQkFDL0MsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUUsVUFBK0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO29CQUMzRCxVQUErQixDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7Z0JBQ3ZELENBQUM7Z0JBQ0QsT0FBTyxJQUFJLGFBQWEsQ0FBQyxVQUFpQixDQUFDLENBQUM7WUFDOUMsQ0FBQztRQUVILENBQUM7SUFDSCxDQUFDO0lBQ0QsWUFBWSxJQUFzQjtRQXFIbEMsYUFBUSxHQUFHLEdBQUcsRUFBRTtZQUNkLE9BQU8sb0JBQW9CLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFBO1FBQ3RELENBQUMsQ0FBQTtRQXRIQyxJQUFJLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLGFBQWE7WUFDbkMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUN2QyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDNUIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNoQyxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ25CLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUNELElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGFBQWE7WUFDNUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFDRCxJQUFXLEVBQUU7UUFDWCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFXLEVBQUUsQ0FBQyxZQUFvQjtRQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxZQUFZLENBQUM7SUFDL0IsQ0FBQztJQUNELElBQVcsTUFBTTtRQUNmLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ25DLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbkMsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUNELElBQVcsSUFBSSxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO0lBQ25DLENBQUM7SUFDRCxJQUFXLGNBQWMsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDN0IsQ0FBQztJQUNELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNELElBQVcsUUFBUSxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFXLFVBQVU7UUFDbkIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hELE9BQU8sR0FBRyxDQUFDO0lBRWIsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEUsT0FBTyxHQUFHLENBQUM7SUFFYixDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0RCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELElBQVcsa0JBQWtCO1FBQzNCLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsRCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELElBQVcsa0JBQWtCO1FBQzNCLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztDQUlGO0FBR0EsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxvREFBb0QiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgXywgY2hhbGsgfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJ3RucC1oZWxwZXJzL3dlYnNxbCc7XG5cbi8qKipcbiAqIEBkZXByZWNhdGVkXG4gKiB1c2Ugbm9ybWFsIG9iamVjdHNcbiAqL1xuZXhwb3J0IHR5cGUgRXRjSG9zdHMgPSB7IFtob3N0TmFtZSBpbiBzdHJpbmddOiBIb3N0Rm9yU2VydmVyOyB9O1xuXG4vKioqXG4gKiBAZGVwcmVjYXRlZFxuICogdXNlIG5vcm1hbCBvYmplY3RzXG4gKi9cbmV4cG9ydCB0eXBlIElFdGNIb3N0cyA9IHsgW2hvc3ROYW1lIGluIHN0cmluZ106IFBpY2s8SG9zdEZvclNlcnZlciwgJ2FsaWFzZXMnIHwgJ2lwT3JEb21haW4nPjsgfTtcblxuZXhwb3J0IGludGVyZmFjZSBPcHRIb3N0Rm9yU2VydmVyIHtcbiAgaXA/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 =
|
|
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)) {
|
|
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) &&
|
|
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 =
|
|
42
|
-
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) {
|
|
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)) {
|
|
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":"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"}
|
package/websql/lib/models.d.ts
CHANGED
|
@@ -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;
|
package/browser/package.json
DELETED
|
@@ -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
|
-
}
|
package/websql/package.json
DELETED
|
@@ -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
|
-
}
|