flagpole
Version:
Simple and fast DOM integration, headless or headful browser, and REST API testing framework.
69 lines • 2.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const url_1 = require("url");
const _1 = require(".");
const isValidDataUrl = require('valid-data-url');
class Link {
constructor(uri, context) {
this._uri = uri;
this._context = context;
}
getUri(queryString) {
const baseUrl = new url_1.URL(this._context.suite.buildUrl(this._context.scenario.url || ''));
const thisUrl = new url_1.URL(this._uri, baseUrl.href);
if (typeof queryString != 'undefined') {
const type = _1.Flagpole.toType(queryString);
if (type == 'object') {
for (let key in queryString) {
thisUrl.searchParams.append(key, queryString[key]);
}
}
else if (type == 'array') {
queryString.forEach(item => {
thisUrl.searchParams.append(item.name, item.value);
});
}
}
return thisUrl.href;
}
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