UNPKG

flagpole

Version:

Simple and fast DOM integration, headless or headful browser, and REST API testing framework.

72 lines 1.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Link = void 0; const url_1 = require("url"); const util_1 = require("./util"); const isValidDataUrl = require("valid-data-url"); class Link { constructor(uri, baseUrl) { this.uri = uri; this.baseUrl = baseUrl; } getUri() { const thisUrl = new url_1.URL(this.uri, this.baseUrl.href); if (typeof this._qs != "undefined") { const type = util_1.toType(this._qs); if (type == "object") { for (const key in this._qs) { thisUrl.searchParams.append(key, this._qs[key]); } } else if (type == "array") { this._qs.forEach((item) => { thisUrl.searchParams.append(item.name, item.value); }); } } return thisUrl.href; } setQueryString(qs) { this._qs = qs; } isValidDataUri() { return isValidDataUrl(this.uri); } isData() { return /^data:/.test(this.uri); } isAnchor() { return /^#/.test(this.uri); } isEmail() { return /^mailto:/.test(this.uri); } isPhone() { return /^(tel|callto|wtai):/.test(this.uri); } isTextMessage() { return /^(sms|mms):/.test(this.uri); } isGeo() { return /^(geo|geopoint):/.test(this.uri); } isScript() { return /^(javascript):/.test(this.uri); } isAppStore() { return /^(market|itms|itms-apps):/.test(this.uri); } isFtp() { return /^(ftp):/.test(this.uri); } isNavigation() { return (this.uri.length > 0 && !this.isAnchor() && (/^\?/.test(this.uri) || /^https?:\/\//i.test(this.uri) || /^\//i.test(this.uri) || !/^[a-z]+:\/\//i.test(this.uri))); } } exports.Link = Link; //# sourceMappingURL=link.js.map