vpn-split 16.5.15 → 16.5.19

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.
@@ -26,7 +26,11 @@
26
26
  "nodts": false,
27
27
  "obscure": false,
28
28
  "ugly": false,
29
- "includeNodeModules": false
29
+ "includeNodeModules": false,
30
+ "cliBuildNoDts": false,
31
+ "cliBuildObscure": false,
32
+ "cliBuildIncludeNodeModules": false,
33
+ "cliBuildUglify": false
30
34
  },
31
35
  "smartContainerTarget": "",
32
36
  "type": "isomorphic-lib",
@@ -38,7 +42,7 @@
38
42
  "dependencies": {
39
43
  "hostile": "1.3.3",
40
44
  "is-elevated": "3.0.0",
41
- "tnp-db": "~16.5.13"
45
+ "tnp-db": "~16.5.16"
42
46
  },
43
47
  "name": "vpn-split",
44
48
  "license": "MIT",
@@ -47,9 +51,10 @@
47
51
  "vpn-split": "bin/vpn-split",
48
52
  "vpn-split-debug": "bin/vpn-split-debug"
49
53
  },
50
- "version": "16.5.15",
51
- "lastBuildTagHash": "db8b0e1af87033a3befc3e921bd6cc8c2714d2e6",
54
+ "version": "16.5.19",
55
+ "lastBuildTagHash": "6575ae07ee1e82c2a816fb8bb7aafbbf93936ad5",
52
56
  "devDependencies": {
57
+ "@angular-builders/custom-webpack": "~16.0.2-beta.2",
53
58
  "@angular-devkit/build-angular": "~16.0.5",
54
59
  "@angular-devkit/core": "~16.0.5",
55
60
  "@angular-material-extensions/password-strength": "~12.1.0",
@@ -130,9 +135,9 @@
130
135
  "angular-material-css-vars": "5.0.2",
131
136
  "angular-resize-event": "3.2.0",
132
137
  "animate.css": "4.1.1 ",
133
- "any-project-cli": "~16.5.14",
138
+ "any-project-cli": "~16.5.23",
134
139
  "axios": "1.3.5",
135
- "background-worker-process": "~16.5.15",
140
+ "background-worker-process": "~16.5.19",
136
141
  "base32": "0.0.7",
137
142
  "bcryptjs": "2.4.3",
138
143
  "better-sqlite3": "7.6.2",
@@ -179,13 +184,13 @@
179
184
  "file-saver": "2.0.5",
180
185
  "file-type": "18.5.0",
181
186
  "firedev": "^16",
182
- "firedev-crud": "~16.5.15",
183
- "firedev-crud-deamon": "~16.5.14",
184
- "firedev-ports": "~16.5.15",
185
- "firedev-storage": "~16.5.13",
186
- "firedev-type-sql": "~16.5.13",
187
- "firedev-typeorm": "~16.5.15",
188
- "firedev-ui": "~16.5.14",
187
+ "firedev-crud": "~16.5.63",
188
+ "firedev-crud-deamon": "~16.5.17",
189
+ "firedev-ports": "~16.5.19",
190
+ "firedev-storage": "~16.5.15",
191
+ "firedev-type-sql": "~16.5.15",
192
+ "firedev-typeorm": "~16.5.17",
193
+ "firedev-ui": "~16.5.16",
189
194
  "fkill": "6.1.0",
190
195
  "font-awesome": "4.7.0",
191
196
  "form-data": "4.0.0",
@@ -195,16 +200,16 @@
195
200
  "gulp": "3.9.1",
196
201
  "helmet": "7.0.0",
197
202
  "howler": "2.2.3",
198
- "http-proxy": "1.16.2",
203
+ "http-proxy": "1.18.1",
199
204
  "http-proxy-middleware": "0.19.1",
200
205
  "http-server": "0.11.1",
201
206
  "image-focus": "1.2.1",
202
207
  "immer": "10.0.2",
203
208
  "immutable": "4.3.0",
204
- "incremental-compiler": "~16.5.24",
209
+ "incremental-compiler": "~16.5.32",
205
210
  "inquirer": "7.3.3",
206
211
  "inquirer-autocomplete-prompt": "1.3.0",
207
- "isomorphic-region-loader": "~16.5.14",
212
+ "isomorphic-region-loader": "~16.5.17",
208
213
  "istanbul-instrumenter-loader": "2.0.0",
209
214
  "jest": "29.5.0",
210
215
  "jest-date-mock": "1.0.8",
@@ -215,8 +220,8 @@
215
220
  "joi": "17.9.2",
216
221
  "jscodeshift": "0.6.3",
217
222
  "json-stringify-safe": "5.0.1",
218
- "json10": "~16.5.13",
219
- "json10-writer": "~16.5.14",
223
+ "json10": "~16.5.15",
224
+ "json10-writer": "~16.5.23",
220
225
  "json5": "2.2.1",
221
226
  "json5-writer": "0.2.0",
222
227
  "jszip": "3.10.1",
@@ -225,23 +230,23 @@
225
230
  "localforage": "1.10.0",
226
231
  "lockfile": "1.0.4",
227
232
  "lodash": "4.17.20",
228
- "lodash-walk-object": "~16.5.13",
233
+ "lodash-walk-object": "~16.5.15",
229
234
  "lowdb": "1.0.0",
230
- "magic-renamer": "~16.5.13",
235
+ "magic-renamer": "~16.5.16",
231
236
  "material-design-icons": "3.0.1",
232
237
  "method-override": "2.3.10",
233
238
  "minimist": "1.2.0",
234
239
  "mkdirp": "0.5.1",
235
240
  "mocha": "10.2.0",
236
241
  "moment": "2.29.3",
237
- "morphi": "~16.5.13",
242
+ "morphi": "~16.5.15",
238
243
  "ng-for-track-by-property": "16.0.1",
239
244
  "ng-in-viewport": "15.0.2",
240
245
  "ng-lock": "16.0.1",
241
246
  "ng-packagr": "16.0.1",
242
- "ng-talkback": "~16.5.14",
243
- "ng2-logger": "~16.5.16",
244
- "ng2-rest": "~16.5.13",
247
+ "ng-talkback": "~16.5.16",
248
+ "ng2-logger": "~16.5.25",
249
+ "ng2-rest": "~16.5.15",
245
250
  "ngx-ace-wrapper": "14.0.0",
246
251
  "ngx-editor": "15.3.0",
247
252
  "ngx-highlightjs": "9.0.0",
@@ -254,7 +259,7 @@
254
259
  "ngx-scrolltop": "6.0.0",
255
260
  "ngx-store": "3.1.1",
256
261
  "ngx-typed-js": "2.1.1",
257
- "node-cli-tester": "~16.5.14",
262
+ "node-cli-tester": "~16.5.16",
258
263
  "node-localstorage": "2.1.6",
259
264
  "node-notifier": "6.0.0",
260
265
  "node-polyfill-webpack-plugin": "2.0.1",
@@ -281,7 +286,7 @@
281
286
  "q": "1.5.1",
282
287
  "rallax.js": "2.0.4",
283
288
  "randomcolor": "0.5.3",
284
- "record-replay-req-res-scenario": "~16.5.14",
289
+ "record-replay-req-res-scenario": "~16.5.16",
285
290
  "reflect-metadata": "0.1.10",
286
291
  "rimraf": "2.6.2",
287
292
  "rxjs": "~7.8.0",
@@ -292,7 +297,7 @@
292
297
  "socket.io": "2.4.1",
293
298
  "sort-package-json": "1.11.0",
294
299
  "sql.js": "1.8.0",
295
- "static-columns": "~16.5.17",
300
+ "static-columns": "~16.5.19",
296
301
  "string-similarity": "4.0.2",
297
302
  "sudo-block": "3.0.0",
298
303
  "supertest": "6.3.3",
@@ -300,11 +305,11 @@
300
305
  "systeminformation": "3.45.7",
301
306
  "task.js": "0.1.5",
302
307
  "threads": "1.7.0",
303
- "tnp-cli": "~16.5.13",
304
- "tnp-config": "~16.5.15",
305
- "tnp-core": "~16.5.23",
306
- "tnp-helpers": "~16.5.16",
307
- "tnp-models": "~16.5.14",
308
+ "tnp-cli": "~16.5.16",
309
+ "tnp-config": "~16.5.34",
310
+ "tnp-core": "~16.6.30",
311
+ "tnp-helpers": "~16.5.25",
312
+ "tnp-models": "~16.5.23",
308
313
  "ts-debug": "1.3.0",
309
314
  "ts-loader": "2.3.1",
310
315
  "ts-node": "10.9.1",
@@ -313,36 +318,30 @@
313
318
  "turndown": "7.1.2",
314
319
  "typeorm": "~0.3.10",
315
320
  "typescript": "~5.0.2",
316
- "typescript-class-helpers": "~16.5.15",
321
+ "typescript-class-helpers": "~16.5.24",
317
322
  "typescript-formatter": "~7.2.2",
318
323
  "underscore": "1.9.1",
319
324
  "uuid": "8.3.2",
320
325
  "validator": "9.2.0",
321
326
  "video.js": "8.3.0",
322
- "vpn-split": "~16.5.14",
327
+ "vpn-split": "~16.5.18",
323
328
  "watch": "1.0.2",
324
329
  "yup": "1.1.1",
325
330
  "zone.js": "~0.13.0"
326
- }
331
+ },
332
+ "main": "dist/app.electron.js"
327
333
  },
328
334
  "build": {
329
- "number": 189,
330
- "date": "2024-03-16T11:56:22.000Z",
331
- "hash": "45287e5a8fa2ed89a4db958409134d9673487e16",
332
- "options": {}
335
+ "number": 198,
336
+ "date": "2024-04-06T10:26:38.000Z",
337
+ "hash": "1af177c8ddf0109c9751d163029f201608f85da3"
333
338
  },
334
339
  "currentProjectName": "vpn-split",
335
340
  "currentProjectGenericName": "vpn-split",
336
- "currentProjectTasksConfiguration": "{\"version\":\"2.0.0\",\"tasks\":[{\"label\":\"terminateall\",\"command\":\"echo ${input:terminate}\",\"type\":\"shell\",\"problemMatcher\":[]},{\"label\":\"Ng Serve\",\"type\":\"shell\",\"command\":\"tnp build\",\"isBackground\":true,\"presentation\":{\"reveal\":\"always\"},\"group\":{\"kind\":\"build\",\"isDefault\":true},\"problemMatcher\":{\"owner\":\"typescript\",\"source\":\"ts\",\"applyTo\":\"closedDocuments\",\"fileLocation\":[\"relative\",\"${cwd}\"],\"pattern\":\"$tsc\",\"background\":{\"activeOnStart\":true,\"beginsPattern\":{\"regexp\":\"(.*?)\"},\"endsPattern\":{\"regexp\":\"Compiled |Failed to compile.\"}}}}],\"inputs\":[{\"id\":\"terminate\",\"type\":\"command\",\"command\":\"workbench.action.tasks.terminate\",\"args\":\"terminateAll\"}]}",
337
341
  "currentProjectType": "isomorphic-lib",
338
- "currentFrameworkVersion": "16.5.23",
342
+ "currentFrameworkVersion": "16.5.26",
339
343
  "isStandaloneProject": true,
340
344
  "isSmartContainer": false,
341
- "frameworks": [
342
- "bootstrap",
343
- "ionic",
344
- "material"
345
- ],
346
345
  "pathesTsconfig": "\"paths\": {\"vpn-split\":[\"./src/lib\"],\"vpn-split/*\":[\"./src/lib/*\"]},",
347
346
  "customRootDir": "\"rootDir\": \"./src\",",
348
347
  "currentLibProjectSourceFolder": "src"
@@ -1,5 +1,4 @@
1
- import { _ } from 'tnp-core/websql';
2
- import { CLI } from 'tnp-cli/websql';
1
+ import { _, chalk } from 'tnp-core/websql';
3
2
  import { Helpers } from 'tnp-helpers/websql';
4
3
  export class HostForServer {
5
4
  clone() {
@@ -18,14 +17,14 @@ export class HostForServer {
18
17
  }
19
18
  return new HostForServer(dataClone);
20
19
  }
21
- if (_.isString(ipOrDomain)) {
20
+ if (_.isString(ipOrDomain)) { // @ts-ignore
22
21
  const parsed = Helpers.urlParse(ipOrDomain);
23
22
  if (parsed) {
24
23
  ipOrDomain = parsed;
25
24
  }
26
25
  }
27
26
  if (_.isObject(ipOrDomain) && (ipOrDomain instanceof URL)) {
28
- ipOrDomain = ipOrDomain;
27
+ ipOrDomain = ipOrDomain; // @ts-ignore
29
28
  if (Helpers.isValidIp(ipOrDomain?.host)) {
30
29
  return new HostForServer({ ip: ipOrDomain.origin, name, disabled });
31
30
  }
@@ -51,7 +50,7 @@ export class HostForServer {
51
50
  this.toString = () => {
52
51
  return `[string version] ${this.nameWithIpOrDomain}`;
53
52
  };
54
- if (data?.ipOrDomain) {
53
+ if (data?.ipOrDomain) { // @ts-ignore
55
54
  if (Helpers.isValidIp(data.ipOrDomain)) {
56
55
  data.ip = data.ipOrDomain;
57
56
  }
@@ -68,7 +67,7 @@ export class HostForServer {
68
67
  if (!data) {
69
68
  data = {};
70
69
  }
71
- if (_.isString(data?.aliases)) {
70
+ if (_.isString(data?.aliases)) { // @ts-ignore
72
71
  data.aliases = Helpers.strings.splitIfNeed(data.aliases);
73
72
  }
74
73
  this._data = data;
@@ -154,9 +153,9 @@ export class HostForServer {
154
153
  return h ? h.hostname : void 0;
155
154
  }
156
155
  get nameWithIpOrDomain() {
157
- return CLI.chalk.underline(`${this.name} ${this.ipOrDomain}`);
156
+ return chalk.underline(`${this.name} ${this.ipOrDomain}`);
158
157
  }
159
158
  }
160
159
  ;
161
160
  ({}); // @--end-of-file-for-module=vpn-split lib/models.ts
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3Zwbi1zcGxpdC9wcm9qZWN0cy92cG4tc3BsaXQvc3JjL2xpYi9tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUErQjdDLE1BQU0sT0FBTyxhQUFhO0lBR2pCLEtBQUs7UUFDVixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBOEcsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLFFBQVEsR0FBRyxLQUFLO1FBQ3JKLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixPQUFPLEtBQUssQ0FBQyxDQUFDO1NBQ2Y7UUFDRCxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxZQUFZLGFBQWEsRUFBRTtZQUNqRSxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQXFCLENBQUM7WUFDcEUsU0FBUyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3BDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO2FBQy9CO1lBQ0QsT0FB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QUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEQsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFXLGtCQUFrQjtRQUMzQixNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEQsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFXLGtCQUFrQjtRQUMzQixPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0NBSUY7QUFHQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG9EQUFvRCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvd2Vic3FsJztcbmltcG9ydCB7IENMSSB9IGZyb20gJ3RucC1jbGkvd2Vic3FsJztcbmltcG9ydCB7IEhlbHBlcnMgfSBmcm9tICd0bnAtaGVscGVycy93ZWJzcWwnO1xuXG4vKioqXG4gKiBAZGVwcmVjYXRlZFxuICogdXNlIG5vcm1hbCBvYmplY3RzXG4gKi9cbmV4cG9ydCB0eXBlIEV0Y0hvc3RzID0geyBbaG9zdE5hbWUgaW4gc3RyaW5nXTogSG9zdEZvclNlcnZlcjsgfTtcblxuLyoqKlxuICogQGRlcHJlY2F0ZWRcbiAqIHVzZSBub3JtYWwgb2JqZWN0c1xuICovXG5leHBvcnQgdHlwZSBJRXRjSG9zdHMgPSB7IFtob3N0TmFtZSBpbiBzdHJpbmddOiBQaWNrPEhvc3RGb3JTZXJ2ZXIsICdhbGlhc2VzJyB8ICdpcE9yRG9tYWluJz47IH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0SG9zdEZvclNlcnZlciB7XG4gIGlwPzogc3RyaW5nO1xuICBkb21haW4/OiBzdHJpbmc7XG4gIGlwT3JEb21haW4/OiBzdHJpbmc7XG4gIGFsaWFzZXM/OiBzdHJpbmdbXTtcbiAgaXNEZWZhdWx0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIGlwIGZyb20gY29tbWFuZDogdnBuLWNsaSAxOTIuMTY4LjEuMSAxOTIuMTY4LjEuMlxuICAgKi9cbiAgb3JpZ2luSG9zdG5hbWU/OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBpZiB0cnVlIC0gaXAgYW5kIGRvbWFpbiB3aWxsIG91dHB1dCBlbXB0eSBzdHJpbmdcbiAgICovXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIEhvc3RGb3JTZXJ2ZXIgaW1wbGVtZW50cyBPcHRIb3N0Rm9yU2VydmVyIHtcbiAgcHJpdmF0ZSBfZGF0YTogT3B0SG9zdEZvclNlcnZlcjtcblxuICBwdWJsaWMgY2xvbmUoKSB7XG4gICAgcmV0dXJuIEhvc3RGb3JTZXJ2ZXIuRnJvbSh0aGlzKTtcbiAgfVxuXG4gIHN0YXRpYyBGcm9tKGlwT3JEb21haW46IHN0cmluZyB8IFVSTCB8IFBpY2s8T3B0SG9zdEZvclNlcnZlciB8IEhvc3RGb3JTZXJ2ZXIsICdpcE9yRG9tYWluJyB8ICdhbGlhc2VzJyB8ICdvcmlnaW5Ib3N0bmFtZSc+LCBuYW1lID0gJycsIGRpc2FibGVkID0gZmFsc2UpOiBIb3N0Rm9yU2VydmVyIHtcbiAgICBpZiAoIWlwT3JEb21haW4pIHtcbiAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfVxuICAgIGlmIChfLmlzT2JqZWN0KGlwT3JEb21haW4pICYmIGlwT3JEb21haW4gaW5zdGFuY2VvZiBIb3N0Rm9yU2VydmVyKSB7XG4gICAgICBjb25zdCBkYXRhQ2xvbmUgPSBfLmNsb25lRGVlcChpcE9yRG9tYWluLl9kYXRhKSBhcyBPcHRIb3N0Rm9yU2VydmVyO1xuICAgICAgZGF0YUNsb25lLm5hbWUgPSAobmFtZSAmJiAobmFtZS50cmltKCkgIT09ICcnKSkgP1xuICAgICAgICBuYW1lIDogZGF0YUNsb25lLm5hbWU7XG4gICAgICBpZiAoIV8uaXNCb29sZWFuKGRhdGFDbG9uZS5kaXNhYmxlZCkpIHtcbiAgICAgICAgZGF0YUNsb25lLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IEhvc3RGb3JTZXJ2ZXIoZGF0YUNsb25lKTtcbiAgICB9XG4gICAgaWYgKF8uaXNTdHJpbmcoaXBPckRvbWFpbikpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IEhlbHBlcnMudXJsUGFyc2UoaXBPckRvbWFpbik7XG4gICAgICBpZiAocGFyc2VkKSB7XG4gICAgICAgIGlwT3JEb21haW4gPSBwYXJzZWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKF8uaXNPYmplY3QoaXBPckRvbWFpbikgJiYgKGlwT3JEb21haW4gaW5zdGFuY2VvZiBVUkwpKSB7XG4gICAgICBpcE9yRG9tYWluID0gaXBPckRvbWFpbiBhcyBVUkw7XG4gICAgICBpZiAoSGVscGVycy5pc1ZhbGlkSXAoaXBPckRvbWFpbj8uaG9zdCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBIb3N0Rm9yU2VydmVyKHsgaXA6IGlwT3JEb21haW4ub3JpZ2luLCBuYW1lLCBkaXNhYmxlZCB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXcgSG9zdEZvclNlcnZlcih7IGRvbWFpbjogaXBPckRvbWFpbi5vcmlnaW4sIG5hbWUsIGRpc2FibGVkIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoXy5pc1N0cmluZyhpcE9yRG9tYWluKSkge1xuICAgICAgICByZXR1cm4gbmV3IEhvc3RGb3JTZXJ2ZXIoeyBpcE9yRG9tYWluLCBuYW1lLCBkaXNhYmxlZCB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIChpcE9yRG9tYWluIGFzIE9wdEhvc3RGb3JTZXJ2ZXIpLm5hbWUgPSAobmFtZSAmJiAobmFtZS50cmltKCkgIT09ICcnKSkgP1xuICAgICAgICAgIG5hbWUgOiAoaXBPckRvbWFpbiBhcyBPcHRIb3N0Rm9yU2VydmVyKS5uYW1lO1xuICAgICAgICBpZiAoIV8uaXNCb29sZWFuKChpcE9yRG9tYWluIGFzIE9wdEhvc3RGb3JTZXJ2ZXIpLmRpc2FibGVkKSkge1xuICAgICAgICAgIChpcE9yRG9tYWluIGFzIE9wdEhvc3RGb3JTZXJ2ZXIpLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBIb3N0Rm9yU2VydmVyKGlwT3JEb21haW4gYXMgYW55KTtcbiAgICAgIH1cblxuICAgIH1cbiAgfVxuICBjb25zdHJ1Y3RvcihkYXRhOiBPcHRIb3N0Rm9yU2VydmVyKSB7XG4gICAgaWYgKGRhdGE/LmlwT3JEb21haW4pIHtcbiAgICAgIGlmIChIZWxwZXJzLmlzVmFsaWRJcChkYXRhLmlwT3JEb21haW4pKSB7XG4gICAgICAgIGRhdGEuaXAgPSBkYXRhLmlwT3JEb21haW47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhLmRvbWFpbiA9IGRhdGEuaXBPckRvbWFpbjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEgJiYgIWRhdGEuaXApIHtcbiAgICAgIGRhdGEuaXAgPSAnJztcbiAgICB9XG4gICAgaWYgKGRhdGEgJiYgIWRhdGEuZG9tYWluKSB7XG4gICAgICBkYXRhLmRvbWFpbiA9ICcnO1xuICAgIH1cbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIGRhdGEgPSB7fTtcbiAgICB9XG4gICAgaWYgKF8uaXNTdHJpbmcoZGF0YT8uYWxpYXNlcykpIHtcbiAgICAgIGRhdGEuYWxpYXNlcyA9IEhlbHBlcnMuc3RyaW5ncy5zcGxpdElmTmVlZChkYXRhLmFsaWFzZXMpO1xuICAgIH1cbiAgICB0aGlzLl9kYXRhID0gZGF0YTtcbiAgfVxuICBwdWJsaWMgZ2V0IGlwKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9kYXRhLmlwO1xuICB9XG4gIHB1YmxpYyBzZXQgaXAobmV3SXBBZGRyZXNzOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9kYXRhLmlwID0gbmV3SXBBZGRyZXNzO1xuICB9XG4gIHB1YmxpYyBnZXQgZG9tYWluKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9kYXRhLmRvbWFpbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWxpYXNlcygpOiBzdHJpbmdbXSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgaWYgKF8uaXNTdHJpbmcodGhpcy5fZGF0YS5hbGlhc2VzKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2RhdGEuYWxpYXNlcy5zcGxpdCgnICcpO1xuICAgIH1cbiAgICBpZiAoIV8uaXNBcnJheSh0aGlzLl9kYXRhLmFsaWFzZXMpKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9kYXRhLmFsaWFzZXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpcnN0QWxpYXMoKSB7XG4gICAgcmV0dXJuIF8uZmlyc3QodGhpcy5hbGlhc2VzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YS5uYW1lO1xuICB9XG4gIHB1YmxpYyBzZXQgbmFtZSh2KSB7XG4gICAgdGhpcy5fZGF0YS5uYW1lID0gdjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3JpZ2luSG9zdG5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEub3JpZ2luSG9zdG5hbWU7XG4gIH1cbiAgcHVibGljIHNldCBvcmlnaW5Ib3N0bmFtZSh2KSB7XG4gICAgdGhpcy5fZGF0YS5vcmlnaW5Ib3N0bmFtZSA9IHY7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhLmRpc2FibGVkO1xuICB9XG4gIHB1YmxpYyBnZXQgaXNEZWZhdWx0KCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhLmlzRGVmYXVsdDtcbiAgfVxuICBwdWJsaWMgZ2V0IGlkZW50aWZpZXIoKSB7XG4gICAgcmV0dXJuIF8ua2ViYWJDYXNlKHRoaXMuX2RhdGEubmFtZSk7XG4gIH1cbiAgcHVibGljIHNldCBkaXNhYmxlZCh2KSB7XG4gICAgdGhpcy5fZGF0YS5kaXNhYmxlZCA9IHY7XG4gIH1cbiAgcHVibGljIGdldCBpcE9yRG9tYWluKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IHJlcyA9ICh0aGlzLmRvbWFpbiA/IHRoaXMuZG9tYWluIDogdGhpcy5pcCkgfHwgJyc7XG4gICAgcmV0dXJuIHJlcztcblxuICB9XG5cbiAgcHVibGljIGdldCBpcE9yRmlyc3RBbGlhcygpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBjb25zdCByZXMgPSAodGhpcy5maXJzdEFsaWFzID8gdGhpcy5maXJzdEFsaWFzIDogdGhpcy5pcCkgfHwgJyc7XG4gICAgcmV0dXJuIHJlcztcblxuICB9XG5cbiAgcHVibGljIGdldCBob3N0bmFtZSgpIHtcbiAgICBjb25zdCBoID0gSGVscGVycy51cmxQYXJzZSh0aGlzLmlwT3JGaXJzdEFsaWFzLCB0cnVlKTtcbiAgICByZXR1cm4gaCA/IGguaG9zdG5hbWUgOiB2b2lkIDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhvc3RuYW1lRmlyc3RBbGlhcygpIHtcbiAgICBjb25zdCBoID0gSGVscGVycy51cmxQYXJzZSh0aGlzLmZpcnN0QWxpYXMsIHRydWUpO1xuICAgIHJldHVybiBoID8gaC5ob3N0bmFtZSA6IHZvaWQgMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaG9zdG5hbWVJcCgpIHtcbiAgICBjb25zdCBoID0gSGVscGVycy51cmxQYXJzZSh0aGlzLmlwKTtcbiAgICByZXR1cm4gaCA/IGguaG9zdG5hbWUgOiB2b2lkIDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5hbWVXaXRoSXBPckRvbWFpbigpIHtcbiAgICByZXR1cm4gQ0xJLmNoYWxrLnVuZGVybGluZShgJHt0aGlzLm5hbWV9ICR7dGhpcy5pcE9yRG9tYWlufWApO1xuICB9XG4gIHRvU3RyaW5nID0gKCkgPT4ge1xuICAgIHJldHVybiBgW3N0cmluZyB2ZXJzaW9uXSAke3RoaXMubmFtZVdpdGhJcE9yRG9tYWlufWBcbiAgfVxufVxuXG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT12cG4tc3BsaXQgbGliL21vZGVscy50cyJdfQ==
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3Zwbi1zcGxpdC9wcm9qZWN0cy92cG4tc3BsaXQvc3JjL2xpYi9tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUErQjdDLE1BQU0sT0FBTyxhQUFhO0lBR2pCLEtBQUs7UUFDVixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBOEcsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLFFBQVEsR0FBRyxLQUFLO1FBQ3JKLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixPQUFPLEtBQUssQ0FBQyxDQUFDO1NBQ2Y7UUFDRCxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxZQUFZLGFBQWEsRUFBRTtZQUNqRSxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQXFCLENBQUM7WUFDcEUsU0FBUyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3BDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO2FBQy9CO1lBQ0QsT0FBTyxJQUFJLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztT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LFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RELE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBVyxrQkFBa0I7UUFDM0IsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xELE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBVyxrQkFBa0I7UUFDM0IsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDO0NBSUY7QUFHQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG9EQUFvRCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBfLCBjaGFsayB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAndG5wLWhlbHBlcnMvd2Vic3FsJztcblxuLyoqKlxuICogQGRlcHJlY2F0ZWRcbiAqIHVzZSBub3JtYWwgb2JqZWN0c1xuICovXG5leHBvcnQgdHlwZSBFdGNIb3N0cyA9IHsgW2hvc3ROYW1lIGluIHN0cmluZ106IEhvc3RGb3JTZXJ2ZXI7IH07XG5cbi8qKipcbiAqIEBkZXByZWNhdGVkXG4gKiB1c2Ugbm9ybWFsIG9iamVjdHNcbiAqL1xuZXhwb3J0IHR5cGUgSUV0Y0hvc3RzID0geyBbaG9zdE5hbWUgaW4gc3RyaW5nXTogUGljazxIb3N0Rm9yU2VydmVyLCAnYWxpYXNlcycgfCAnaXBPckRvbWFpbic+OyB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIE9wdEhvc3RGb3JTZXJ2ZXIge1xuICBpcD86IHN0cmluZztcbiAgZG9tYWluPzogc3RyaW5nO1xuICBpcE9yRG9tYWluPzogc3RyaW5nO1xuICBhbGlhc2VzPzogc3RyaW5nW107XG4gIGlzRGVmYXVsdD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBpcCBmcm9tIGNvbW1hbmQ6IHZwbi1jbGkgMTkyLjE2OC4xLjEgMTkyLjE2OC4xLjJcbiAgICovXG4gIG9yaWdpbkhvc3RuYW1lPzogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogaWYgdHJ1ZSAtIGlwIGFuZCBkb21haW4gd2lsbCBvdXRwdXQgZW1wdHkgc3RyaW5nXG4gICAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBIb3N0Rm9yU2VydmVyIGltcGxlbWVudHMgT3B0SG9zdEZvclNlcnZlciB7XG4gIHByaXZhdGUgX2RhdGE6IE9wdEhvc3RGb3JTZXJ2ZXI7XG5cbiAgcHVibGljIGNsb25lKCkge1xuICAgIHJldHVybiBIb3N0Rm9yU2VydmVyLkZyb20odGhpcyk7XG4gIH1cblxuICBzdGF0aWMgRnJvbShpcE9yRG9tYWluOiBzdHJpbmcgfCBVUkwgfCBQaWNrPE9wdEhvc3RGb3JTZXJ2ZXIgfCBIb3N0Rm9yU2VydmVyLCAnaXBPckRvbWFpbicgfCAnYWxpYXNlcycgfCAnb3JpZ2luSG9zdG5hbWUnPiwgbmFtZSA9ICcnLCBkaXNhYmxlZCA9IGZhbHNlKTogSG9zdEZvclNlcnZlciB7XG4gICAgaWYgKCFpcE9yRG9tYWluKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgICBpZiAoXy5pc09iamVjdChpcE9yRG9tYWluKSAmJiBpcE9yRG9tYWluIGluc3RhbmNlb2YgSG9zdEZvclNlcnZlcikge1xuICAgICAgY29uc3QgZGF0YUNsb25lID0gXy5jbG9uZURlZXAoaXBPckRvbWFpbi5fZGF0YSkgYXMgT3B0SG9zdEZvclNlcnZlcjtcbiAgICAgIGRhdGFDbG9uZS5uYW1lID0gKG5hbWUgJiYgKG5hbWUudHJpbSgpICE9PSAnJykpID9cbiAgICAgICAgbmFtZSA6IGRhdGFDbG9uZS5uYW1lO1xuICAgICAgaWYgKCFfLmlzQm9vbGVhbihkYXRhQ2xvbmUuZGlzYWJsZWQpKSB7XG4gICAgICAgIGRhdGFDbG9uZS5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBIb3N0Rm9yU2VydmVyKGRhdGFDbG9uZSk7XG4gICAgfVxuICAgIGlmIChfLmlzU3RyaW5nKGlwT3JEb21haW4pKSB7IC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHBhcnNlZCA9IEhlbHBlcnMudXJsUGFyc2UoaXBPckRvbWFpbik7XG4gICAgICBpZiAocGFyc2VkKSB7XG4gICAgICAgIGlwT3JEb21haW4gPSBwYXJzZWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKF8uaXNPYmplY3QoaXBPckRvbWFpbikgJiYgKGlwT3JEb21haW4gaW5zdGFuY2VvZiBVUkwpKSB7XG4gICAgICBpcE9yRG9tYWluID0gaXBPckRvbWFpbiBhcyBVUkw7IC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmIChIZWxwZXJzLmlzVmFsaWRJcChpcE9yRG9tYWluPy5ob3N0KSkge1xuICAgICAgICByZXR1cm4gbmV3IEhvc3RGb3JTZXJ2ZXIoeyBpcDogaXBPckRvbWFpbi5vcmlnaW4sIG5hbWUsIGRpc2FibGVkIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBIb3N0Rm9yU2VydmVyKHsgZG9tYWluOiBpcE9yRG9tYWluLm9yaWdpbiwgbmFtZSwgZGlzYWJsZWQgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChfLmlzU3RyaW5nKGlwT3JEb21haW4pKSB7XG4gICAgICAgIHJldHVybiBuZXcgSG9zdEZvclNlcnZlcih7IGlwT3JEb21haW4sIG5hbWUsIGRpc2FibGVkIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgKGlwT3JEb21haW4gYXMgT3B0SG9zdEZvclNlcnZlcikubmFtZSA9IChuYW1lICYmIChuYW1lLnRyaW0oKSAhPT0gJycpKSA/XG4gICAgICAgICAgbmFtZSA6IChpcE9yRG9tYWluIGFzIE9wdEhvc3RGb3JTZXJ2ZXIpLm5hbWU7XG4gICAgICAgIGlmICghXy5pc0Jvb2xlYW4oKGlwT3JEb21haW4gYXMgT3B0SG9zdEZvclNlcnZlcikuZGlzYWJsZWQpKSB7XG4gICAgICAgICAgKGlwT3JEb21haW4gYXMgT3B0SG9zdEZvclNlcnZlcikuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEhvc3RGb3JTZXJ2ZXIoaXBPckRvbWFpbiBhcyBhbnkpO1xuICAgICAgfVxuXG4gICAgfVxuICB9XG4gIGNvbnN0cnVjdG9yKGRhdGE6IE9wdEhvc3RGb3JTZXJ2ZXIpIHtcbiAgICBpZiAoZGF0YT8uaXBPckRvbWFpbikgeyAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAoSGVscGVycy5pc1ZhbGlkSXAoZGF0YS5pcE9yRG9tYWluKSkge1xuICAgICAgICBkYXRhLmlwID0gZGF0YS5pcE9yRG9tYWluO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0YS5kb21haW4gPSBkYXRhLmlwT3JEb21haW47XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhICYmICFkYXRhLmlwKSB7XG4gICAgICBkYXRhLmlwID0gJyc7XG4gICAgfVxuICAgIGlmIChkYXRhICYmICFkYXRhLmRvbWFpbikge1xuICAgICAgZGF0YS5kb21haW4gPSAnJztcbiAgICB9XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICBkYXRhID0ge307XG4gICAgfVxuICAgIGlmIChfLmlzU3RyaW5nKGRhdGE/LmFsaWFzZXMpKSB7IC8vIEB0cy1pZ25vcmVcbiAgICAgIGRhdGEuYWxpYXNlcyA9IEhlbHBlcnMuc3RyaW5ncy5zcGxpdElmTmVlZChkYXRhLmFsaWFzZXMpO1xuICAgIH1cbiAgICB0aGlzLl9kYXRhID0gZGF0YTtcbiAgfVxuICBwdWJsaWMgZ2V0IGlwKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9kYXRhLmlwO1xuICB9XG4gIHB1YmxpYyBzZXQgaXAobmV3SXBBZGRyZXNzOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9kYXRhLmlwID0gbmV3SXBBZGRyZXNzO1xuICB9XG4gIHB1YmxpYyBnZXQgZG9tYWluKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9kYXRhLmRvbWFpbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWxpYXNlcygpOiBzdHJpbmdbXSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgaWYgKF8uaXNTdHJpbmcodGhpcy5fZGF0YS5hbGlhc2VzKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2RhdGEuYWxpYXNlcy5zcGxpdCgnICcpO1xuICAgIH1cbiAgICBpZiAoIV8uaXNBcnJheSh0aGlzLl9kYXRhLmFsaWFzZXMpKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9kYXRhLmFsaWFzZXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpcnN0QWxpYXMoKSB7XG4gICAgcmV0dXJuIF8uZmlyc3QodGhpcy5hbGlhc2VzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YS5uYW1lO1xuICB9XG4gIHB1YmxpYyBzZXQgbmFtZSh2KSB7XG4gICAgdGhpcy5fZGF0YS5uYW1lID0gdjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3JpZ2luSG9zdG5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEub3JpZ2luSG9zdG5hbWU7XG4gIH1cbiAgcHVibGljIHNldCBvcmlnaW5Ib3N0bmFtZSh2KSB7XG4gICAgdGhpcy5fZGF0YS5vcmlnaW5Ib3N0bmFtZSA9IHY7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhLmRpc2FibGVkO1xuICB9XG4gIHB1YmxpYyBnZXQgaXNEZWZhdWx0KCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhLmlzRGVmYXVsdDtcbiAgfVxuICBwdWJsaWMgZ2V0IGlkZW50aWZpZXIoKSB7XG4gICAgcmV0dXJuIF8ua2ViYWJDYXNlKHRoaXMuX2RhdGEubmFtZSk7XG4gIH1cbiAgcHVibGljIHNldCBkaXNhYmxlZCh2KSB7XG4gICAgdGhpcy5fZGF0YS5kaXNhYmxlZCA9IHY7XG4gIH1cbiAgcHVibGljIGdldCBpcE9yRG9tYWluKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IHJlcyA9ICh0aGlzLmRvbWFpbiA/IHRoaXMuZG9tYWluIDogdGhpcy5pcCkgfHwgJyc7XG4gICAgcmV0dXJuIHJlcztcblxuICB9XG5cbiAgcHVibGljIGdldCBpcE9yRmlyc3RBbGlhcygpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBjb25zdCByZXMgPSAodGhpcy5maXJzdEFsaWFzID8gdGhpcy5maXJzdEFsaWFzIDogdGhpcy5pcCkgfHwgJyc7XG4gICAgcmV0dXJuIHJlcztcblxuICB9XG5cbiAgcHVibGljIGdldCBob3N0bmFtZSgpIHsgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGggPSBIZWxwZXJzLnVybFBhcnNlKHRoaXMuaXBPckZpcnN0QWxpYXMsIHRydWUpO1xuICAgIHJldHVybiBoID8gaC5ob3N0bmFtZSA6IHZvaWQgMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaG9zdG5hbWVGaXJzdEFsaWFzKCkgeyAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgaCA9IEhlbHBlcnMudXJsUGFyc2UodGhpcy5maXJzdEFsaWFzLCB0cnVlKTtcbiAgICByZXR1cm4gaCA/IGguaG9zdG5hbWUgOiB2b2lkIDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhvc3RuYW1lSXAoKSB7IC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBoID0gSGVscGVycy51cmxQYXJzZSh0aGlzLmlwKTtcbiAgICByZXR1cm4gaCA/IGguaG9zdG5hbWUgOiB2b2lkIDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5hbWVXaXRoSXBPckRvbWFpbigpIHtcbiAgICByZXR1cm4gY2hhbGsudW5kZXJsaW5lKGAke3RoaXMubmFtZX0gJHt0aGlzLmlwT3JEb21haW59YCk7XG4gIH1cbiAgdG9TdHJpbmcgPSAoKSA9PiB7XG4gICAgcmV0dXJuIGBbc3RyaW5nIHZlcnNpb25dICR7dGhpcy5uYW1lV2l0aElwT3JEb21haW59YFxuICB9XG59XG5cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXZwbi1zcGxpdCBsaWIvbW9kZWxzLnRzIl19
@@ -1,5 +1,4 @@
1
- import { _ } from 'tnp-core/websql';
2
- import { CLI } from 'tnp-cli/websql';
1
+ import { _, chalk } from 'tnp-core/websql';
3
2
  import { Helpers } from 'tnp-helpers/websql';
4
3
 
5
4
  class HostForServer {
@@ -19,14 +18,14 @@ class HostForServer {
19
18
  }
20
19
  return new HostForServer(dataClone);
21
20
  }
22
- if (_.isString(ipOrDomain)) {
21
+ if (_.isString(ipOrDomain)) { // @ts-ignore
23
22
  const parsed = Helpers.urlParse(ipOrDomain);
24
23
  if (parsed) {
25
24
  ipOrDomain = parsed;
26
25
  }
27
26
  }
28
27
  if (_.isObject(ipOrDomain) && (ipOrDomain instanceof URL)) {
29
- ipOrDomain = ipOrDomain;
28
+ ipOrDomain = ipOrDomain; // @ts-ignore
30
29
  if (Helpers.isValidIp(ipOrDomain?.host)) {
31
30
  return new HostForServer({ ip: ipOrDomain.origin, name, disabled });
32
31
  }
@@ -52,7 +51,7 @@ class HostForServer {
52
51
  this.toString = () => {
53
52
  return `[string version] ${this.nameWithIpOrDomain}`;
54
53
  };
55
- if (data?.ipOrDomain) {
54
+ if (data?.ipOrDomain) { // @ts-ignore
56
55
  if (Helpers.isValidIp(data.ipOrDomain)) {
57
56
  data.ip = data.ipOrDomain;
58
57
  }
@@ -69,7 +68,7 @@ class HostForServer {
69
68
  if (!data) {
70
69
  data = {};
71
70
  }
72
- if (_.isString(data?.aliases)) {
71
+ if (_.isString(data?.aliases)) { // @ts-ignore
73
72
  data.aliases = Helpers.strings.splitIfNeed(data.aliases);
74
73
  }
75
74
  this._data = data;
@@ -155,7 +154,7 @@ class HostForServer {
155
154
  return h ? h.hostname : void 0;
156
155
  }
157
156
  get nameWithIpOrDomain() {
158
- return CLI.chalk.underline(`${this.name} ${this.ipOrDomain}`);
157
+ return chalk.underline(`${this.name} ${this.ipOrDomain}`);
159
158
  }
160
159
  }
161
160
  ;
@@ -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 { _ } from 'tnp-core/websql';\nimport { CLI } from 'tnp-cli/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)) {\n const parsed = Helpers.urlParse(ipOrDomain);\n if (parsed) {\n ipOrDomain = parsed;\n }\n }\n\n if (_.isObject(ipOrDomain) && (ipOrDomain instanceof URL)) {\n ipOrDomain = ipOrDomain as URL;\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) {\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 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() {\n const h = Helpers.urlParse(this.ipOrFirstAlias, true);\n return h ? h.hostname : void 0;\n }\n\n public get hostnameFirstAlias() {\n const h = Helpers.urlParse(this.firstAlias, true);\n return h ? h.hostname : void 0;\n }\n\n public get hostnameIp() {\n const h = Helpers.urlParse(this.ip);\n return h ? h.hostname : void 0;\n }\n\n public get nameWithIpOrDomain() {\n return CLI.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 = { [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;\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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"}