diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e123ee7..043212d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,9 +1,16 @@ -image: hosttoday/ht-docker-node:npmci +image: hosttoday/ht-docker-node:npmts stages: - test - release +testLEGACY: + stage: test + script: + - npmci test legacy + tags: + - docker + testLTS: stage: test script: diff --git a/dist/smartstring.domain.js b/dist/smartstring.domain.js index 5c0d4ca..a73efe4 100644 --- a/dist/smartstring.domain.js +++ b/dist/smartstring.domain.js @@ -1,14 +1,26 @@ "use strict"; var Domain = (function () { function Domain(domainStringArg) { - this.fullName = domainStringArg; var regexMatches = domainRegex(domainStringArg); - this.level1 = regexMatches[0]; - this.level2 = regexMatches[1]; - this.level3 = regexMatches[2]; - this.level4 = regexMatches[3]; - this.level5 = regexMatches[4]; - this.protocol = protocolRegex(domainStringArg)[1]; + this.fullName = ""; + for (var i = 1; i <= 5; i++) { + if (regexMatches[i - 1]) { + var localMatch = regexMatches[i - 1]; + this["level" + i.toString()] = localMatch; + if (this.fullName == "") { + this.fullName = localMatch; + } + else { + this.fullName = localMatch + "." + this.fullName; + } + } + else { + this["level" + i.toString()] = undefined; + } + ; + } + ; + this.protocol = protocolRegex(domainStringArg); this.zoneName = this.level2 + "." + this.level1; // aliases this.topLevel = this.level1; @@ -19,9 +31,10 @@ var Domain = (function () { }()); exports.Domain = Domain; var domainRegex = function (stringArg) { - var 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}$/; + var 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}$/; var regexMatches = regexString.exec(stringArg); - regexMatches.reverse(); + 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 var regexMatchesFiltered = regexMatches.filter(function (stringArg) { return (stringArg != ""); }); @@ -30,7 +43,11 @@ var domainRegex = function (stringArg) { var protocolRegex = function (stringArg) { var regexString = /^([a-zA-Z0-9]*):\/\//; var regexMatches = regexString.exec(stringArg); - console.log(regexMatches); - return regexMatches; + if (regexMatches) { + return regexMatches[1]; + } + else { + return undefined; + } }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzdHJpbmcuZG9tYWluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRzdHJpbmcuZG9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQTtJQWFJLGdCQUFZLGVBQXNCO1FBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDO1FBQ2hDLElBQUksWUFBWSxHQUFHLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFaEQsVUFBVTtRQUNWLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ2pDLENBQUM7SUFDTCxhQUFDO0FBQUQsQ0FBQyxBQTdCRCxJQTZCQztBQTdCWSxjQUFNLFNBNkJsQixDQUFBO0FBR0QsSUFBSSxXQUFXLEdBQUcsVUFBUyxTQUFnQjtJQUN2QyxJQUFJLFdBQVcsR0FBRyw0R0FBNEcsQ0FBQztJQUMvSCxJQUFJLFlBQVksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9DLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN2QixJQUFJLG9CQUFvQixHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBUyxTQUFnQjtRQUNwRSxNQUFNLENBQUEsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLENBQUMsb0JBQW9CLENBQUM7QUFDaEMsQ0FBQyxDQUFDO0FBRUYsSUFBSSxhQUFhLEdBQUcsVUFBUyxTQUFnQjtJQUN6QyxJQUFJLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQztJQUN6QyxJQUFJLFlBQVksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9DLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUIsTUFBTSxDQUFDLFlBQVksQ0FBQztBQUN4QixDQUFDLENBQUEifQ== \ No newline at end of file + diff --git a/package.json b/package.json index 1c83805..cd711d0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "smartstring", - "version": "2.0.6", + "version": "2.0.10", "description": "handle strings in smart ways. TypeScript ready.", "main": "dist/index.js", "typings": "dist/index.d.ts", diff --git a/test/test.js b/test/test.js index 37a7dbc..240d21a 100644 --- a/test/test.js +++ b/test/test.js @@ -5,9 +5,11 @@ var should = require("should"); describe("smartstring", function () { describe(".Domain class", function () { var testDomain; + var testDomain2; it("should create a new Domain object", function () { testDomain = new smartstring.Domain("https://level3D.level2D.level1D"); testDomain.should.be.instanceof(smartstring.Domain); + console.log(testDomain); }); it("should have a .topLevel", function () { testDomain.topLevel.should.equal("level1D"); @@ -24,6 +26,10 @@ describe("smartstring", function () { it("should have the correct protocol", function () { testDomain.protocol.should.equal("https"); }); + it("testDomain2 should be a basic domain", function () { + testDomain2 = new smartstring.Domain("bleu.de"); + console.log(testDomain2); + }); }); describe(".Git class", function () { var testGit; @@ -75,4 +81,3 @@ describe("smartstring", function () { }); }); }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FDUCxDQUFDLENBRG9CO0FBQ3JCLElBQVksV0FBVyxXQUFNLGVBQWUsQ0FBQyxDQUFBO0FBQzdDLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUUvQixRQUFRLENBQUMsYUFBYSxFQUFDO0lBQ25CLFFBQVEsQ0FBQyxlQUFlLEVBQUM7UUFDckIsSUFBSSxVQUE2QixDQUFDO1FBQ2xDLEVBQUUsQ0FBQyxtQ0FBbUMsRUFBQztZQUNuQyxVQUFVLEdBQUcsSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7WUFDdkUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyx5QkFBeUIsRUFBQztZQUN6QixVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsdUJBQXVCLEVBQUM7WUFDdkIsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLHVCQUF1QixFQUFDO1lBQ3ZCLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyx1Q0FBdUMsRUFBQztZQUN2QyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQTtRQUNGLEVBQUUs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 \ No newline at end of file diff --git a/test/test.ts b/test/test.ts index c8880b2..fe5bcd1 100644 --- a/test/test.ts +++ b/test/test.ts @@ -5,9 +5,11 @@ let should = require("should"); describe("smartstring",function(){ describe(".Domain class",function(){ let testDomain:smartstring.Domain; + let testDomain2:smartstring.Domain; it("should create a new Domain object",function(){ testDomain = new smartstring.Domain("https://level3D.level2D.level1D"); testDomain.should.be.instanceof(smartstring.Domain); + console.log(testDomain); }); it("should have a .topLevel",function(){ testDomain.topLevel.should.equal("level1D"); @@ -24,6 +26,10 @@ describe("smartstring",function(){ it ("should have the correct protocol",function(){ testDomain.protocol.should.equal("https"); }) + it("testDomain2 should be a basic domain",function(){ + testDomain2 = new smartstring.Domain("bleu.de"); + console.log(testDomain2); + }); }) describe(".Git class",function(){ let testGit:smartstring.GitRepo; @@ -56,7 +62,7 @@ describe("smartstring",function(){ describe(".makeEnvObject",function(){ it("should create a Env Object",function(){ let envStringArray = ["VIRTUAL_HOST=sub.domain.tld","DEFAULT_HOST=some.domain.com"]; - let envObject = smartstring.docker.makeEnvObject(envStringArray); + let envObject:any = smartstring.docker.makeEnvObject(envStringArray); envObject.VIRTUAL_HOST.should.equal("sub.domain.tld"); envObject.DEFAULT_HOST.should.equal("some.domain.com"); }) diff --git a/ts/smartstring.domain.ts b/ts/smartstring.domain.ts index daa115a..b46e16e 100644 --- a/ts/smartstring.domain.ts +++ b/ts/smartstring.domain.ts @@ -14,14 +14,22 @@ export class Domain { domainName; subDomain; constructor(domainStringArg:string){ - this.fullName = domainStringArg; let regexMatches = domainRegex(domainStringArg); - this.level1 = regexMatches[0]; - this.level2 = regexMatches[1]; - this.level3 = regexMatches[2]; - this.level4 = regexMatches[3]; - this.level5 = regexMatches[4]; - this.protocol = protocolRegex(domainStringArg)[1]; + this.fullName = ""; + for(let i = 1; i <= 5; i++){ + if(regexMatches[i - 1]) { + let localMatch = regexMatches[i - 1] + this["level" + i.toString()] = localMatch; + if (this.fullName == ""){ + this.fullName = localMatch; + } else { + this.fullName = localMatch + "." + this.fullName; + } + } else { + this["level" + i.toString()] = undefined; + }; + }; + this.protocol = protocolRegex(domainStringArg); this.zoneName = this.level2 + "." + this.level1; // aliases @@ -33,9 +41,10 @@ export class Domain { 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 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(); + 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 != ""); }); @@ -45,6 +54,9 @@ let domainRegex = function(stringArg:string){ let protocolRegex = function(stringArg:string){ let regexString = /^([a-zA-Z0-9]*):\/\//; let regexMatches = regexString.exec(stringArg); - console.log(regexMatches); - return regexMatches; + if(regexMatches){ + return regexMatches[1]; + } else { + return undefined; + } } \ No newline at end of file