From 7c625c4390a6dd56cd7452da896d29e86d30624f Mon Sep 17 00:00:00 2001 From: Phil Kunz Date: Tue, 16 Apr 2019 08:54:27 +0200 Subject: [PATCH] fix(core): update --- package-lock.json | 209 ++++++++++++++++++++++++++++++++++++++ package.json | 4 +- ts/smartstring.domain.ts | 89 +++++++++------- ts/smartstring.plugins.ts | 6 +- 4 files changed, 270 insertions(+), 38 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6dcd099..78e0517 100644 --- a/package-lock.json +++ b/package-lock.json @@ -335,6 +335,12 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://verdaccio.lossless.one/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, "argparse": { "version": "1.0.10", "resolved": "https://verdaccio.lossless.one/argparse/-/argparse-1.0.10.tgz", @@ -362,6 +368,47 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://verdaccio.lossless.one/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://verdaccio.lossless.one/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://verdaccio.lossless.one/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://verdaccio.lossless.one/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://verdaccio.lossless.one/balanced-match/-/balanced-match-1.0.0.tgz", @@ -390,6 +437,12 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://verdaccio.lossless.one/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, "camelcase": { "version": "5.0.0", "resolved": "https://verdaccio.lossless.one/camelcase/-/camelcase-5.0.0.tgz", @@ -425,6 +478,37 @@ "integrity": "sha512-sydDC3S3pNAQMYwJrs6dQX0oBQ6KfIPuOZ78n7rocW0eJJlsHPh2t3kwW7xfwYA/1Bf6/arGtSUo16rxR2JFlw==", "dev": true }, + "chalk": { + "version": "2.4.2", + "resolved": "https://verdaccio.lossless.one/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://verdaccio.lossless.one/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://verdaccio.lossless.one/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", @@ -477,6 +561,21 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://verdaccio.lossless.one/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://verdaccio.lossless.one/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, "combined-stream": { "version": "1.0.7", "resolved": "https://verdaccio.lossless.one/combined-stream/-/combined-stream-1.0.7.tgz", @@ -486,6 +585,12 @@ "delayed-stream": "~1.0.0" } }, + "commander": { + "version": "2.20.0", + "resolved": "https://verdaccio.lossless.one/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://verdaccio.lossless.one/concat-map/-/concat-map-0.0.1.tgz", @@ -570,6 +675,12 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, + "esutils": { + "version": "2.0.2", + "resolved": "https://verdaccio.lossless.one/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, "execa": { "version": "1.0.0", "resolved": "https://verdaccio.lossless.one/execa/-/execa-1.0.0.tgz", @@ -681,6 +792,29 @@ "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", "dev": true }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://verdaccio.lossless.one/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://verdaccio.lossless.one/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://verdaccio.lossless.one/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://verdaccio.lossless.one/inflight/-/inflight-1.0.6.tgz", @@ -749,6 +883,12 @@ "resolved": "https://verdaccio.lossless.one/js-base64/-/js-base64-2.5.0.tgz", "integrity": "sha512-wlEBIZ5LP8usDylWbDNhKPEFVFdI5hCHpnVoT/Ysvoi/PRhJENm/Rlh9TvjYB38HFfKZN7OzEbRjmjvLkFw11g==" }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://verdaccio.lossless.one/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, "js-yaml": { "version": "3.12.1", "resolved": "https://verdaccio.lossless.one/js-yaml/-/js-yaml-3.12.1.tgz", @@ -1013,6 +1153,12 @@ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://verdaccio.lossless.one/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, "pathval": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", @@ -1096,6 +1242,15 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, + "resolve": { + "version": "1.10.0", + "resolved": "https://verdaccio.lossless.one/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, "rxjs": { "version": "6.3.3", "resolved": "https://verdaccio.lossless.one/rxjs/-/rxjs-6.3.3.tgz", @@ -1247,6 +1402,12 @@ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=" }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://verdaccio.lossless.one/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, "symbol-tree": { "version": "3.2.2", "resolved": "https://verdaccio.lossless.one/symbol-tree/-/symbol-tree-3.2.2.tgz", @@ -1275,6 +1436,54 @@ "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", "dev": true }, + "tslint": { + "version": "5.15.0", + "resolved": "https://verdaccio.lossless.one/tslint/-/tslint-5.15.0.tgz", + "integrity": "sha512-6bIEujKR21/3nyeoX2uBnE8s+tMXCQXhqMmaIPJpHmXJoBJPTLcI7/VHRtUwMhnLVdwLqqY3zmd8Dxqa5CVdJA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.13.0", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.29.0" + }, + "dependencies": { + "js-yaml": { + "version": "3.13.1", + "resolved": "https://verdaccio.lossless.one/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } + } + }, + "tslint-config-prettier": { + "version": "1.18.0", + "resolved": "https://verdaccio.lossless.one/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz", + "integrity": "sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg==", + "dev": true + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://verdaccio.lossless.one/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", diff --git a/package.json b/package.json index dafa13b..1ad3a64 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,9 @@ "@gitzone/tsrun": "^1.1.17", "@gitzone/tstest": "^1.0.18", "@pushrocks/tapbundle": "^3.0.7", - "@types/node": "^10.12.18" + "@types/node": "^10.12.18", + "tslint": "^5.15.0", + "tslint-config-prettier": "^1.18.0" }, "dependencies": { "crypto-random-string": "^1.0.0", diff --git a/ts/smartstring.domain.ts b/ts/smartstring.domain.ts index a0b01d4..3d66ba9 100644 --- a/ts/smartstring.domain.ts +++ b/ts/smartstring.domain.ts @@ -1,24 +1,26 @@ import * as plugins from './smartstring.plugins'; export class Domain { - fullName: string; - level1: string; - level2: string; - level3: string; - level4: string; - level5: string; - protocol: string; - zoneName: string; + public fullName: string; + public level1: string; + public level2: string; + public level3: string; + public level4: string; + public level5: string; + public protocol: string; + public zoneName: string; // aliases - topLevel: string; - domainName; - subDomain; + public topLevel: string; + public domainName; + public subDomain; + public port; + public nodeParsedUrl: plugins.url.UrlWithStringQuery; constructor(domainStringArg: string) { - let regexMatches = domainRegex(domainStringArg); + const regexMatches = this._domainRegex(domainStringArg); this.fullName = ''; for (let i = 1; i <= 5; i++) { if (regexMatches[i - 1]) { - let localMatch = regexMatches[i - 1]; + const localMatch = regexMatches[i - 1]; this['level' + i.toString()] = localMatch; if (this.fullName === '') { this.fullName = localMatch; @@ -29,33 +31,50 @@ export class Domain { this['level' + i.toString()] = undefined; } } - this.protocol = protocolRegex(domainStringArg); + this.protocol = this._protocolRegex(domainStringArg); this.zoneName = this.level2 + '.' + this.level1; // aliases this.topLevel = this.level1; this.domainName = this.level2; this.subDomain = this.level3; + + this.nodeParsedUrl = plugins.url.parse(domainStringArg); + this.port = this.nodeParsedUrl.port; } + + // helper functions + + /** */ + private _domainRegex (stringArg: string) { + const regexString = /([a-zA-Z0-9\-\_]*)\.{0,1}([a-zA-Z0-9\-\_]*)\.{0,1}([a-zA-Z0-9\-\_]*)\.{0,1}([a-zA-Z0-9\-\_]*)\.{0,1}([a-zA-Z0-9\-\_]*)\.{0,1}$/; + const regexMatches = regexString.exec(stringArg); + regexMatches.reverse(); //make sure we build the domain from toplevel to subdomain (reversed order) + regexMatches.pop(); // pop the last element, which is, since we reversed the Array, the full String of matched elements + const regexMatchesFiltered = regexMatches.filter(function(stringArg: string) { + return stringArg !== ''; + }); + return regexMatchesFiltered; + } + + private _protocolRegex (stringArg: string) { + const regexString = /^([a-zA-Z0-9]*):\/\//; + const regexMatches = regexString.exec(stringArg); + if (regexMatches) { + return regexMatches[1]; + } else { + return undefined; + } + } + + private _portRegex (stringArg: string) { + const regexString = /^([a-zA-Z0-9]*):\/\//; + const regexMatches = regexString.exec(stringArg); + if (regexMatches) { + return regexMatches[1]; + } else { + return undefined; + } + } + } - -let domainRegex = function(stringArg: string) { - let regexString = /([a-zA-Z0-9\-\_]*)\.{0,1}([a-zA-Z0-9\-\_]*)\.{0,1}([a-zA-Z0-9\-\_]*)\.{0,1}([a-zA-Z0-9\-\_]*)\.{0,1}([a-zA-Z0-9\-\_]*)\.{0,1}$/; - let regexMatches = regexString.exec(stringArg); - regexMatches.reverse(); //make sure we build the domain from toplevel to subdomain (reversed order) - regexMatches.pop(); // pop the last element, which is, since we reversed the Array, the full String of matched elements - let regexMatchesFiltered = regexMatches.filter(function(stringArg: string) { - return stringArg !== ''; - }); - return regexMatchesFiltered; -}; - -let protocolRegex = function(stringArg: string) { - let regexString = /^([a-zA-Z0-9]*):\/\//; - let regexMatches = regexString.exec(stringArg); - if (regexMatches) { - return regexMatches[1]; - } else { - return undefined; - } -}; diff --git a/ts/smartstring.plugins.ts b/ts/smartstring.plugins.ts index 4163605..33ac07d 100644 --- a/ts/smartstring.plugins.ts +++ b/ts/smartstring.plugins.ts @@ -1,9 +1,11 @@ // node native import * as crypto from 'crypto'; +import * as url from 'url'; export { - crypto -} + crypto, + url +}; // third party export let jsBase64 = require('js-base64').Base64;