UNPKG

flagpole

Version:

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

69 lines 2.05 kB
"use strict"; 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