Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
// check if base field required
if (!isAbsoluteUrl(form.href) && !thing.hasOwnProperty("base")) throw new Error(`Form of ${interactionPatterns[pattern]} '${interaction}' has relative URI while TD has no base field`);
// add
allForms.push(form);
}
}
}
if (thing.hasOwnProperty("base")) {
if (normalize === undefined || normalize === true) {
console.log(`parseTD() normalizing 'base' into 'forms'`);
for (let form of allForms) {
if (!form.href.match(/^([a-z0-9\+-\.]+\:).+/i)) {
console.debug(`parseTDString() applying base '${thing.base}' to '${form.href}'`);
form.href = URLToolkit.buildAbsoluteURL(thing.base, form.href);
}
}
}
}
return thing;
}
xhrSetup: (xhr, u) => {
if (u.startsWith(corsProxyPrefix)) {
u = u.substring(corsProxyPrefix.length);
}
// HACK HLS.js resolves relative urls internally, but our CORS proxying screws it up. Resolve relative to the original unproxied url.
// TODO extend HLS.js to allow overriding of its internal resolving instead
if (!u.startsWith("http")) {
u = buildAbsoluteURL(baseUrl, u.startsWith("/") ? u : `/${u}`);
}
xhr.open("GET", proxiedUrlFor(u));
}
});
export const absoluteUrl = function(relativeUrl) {
return URLToolkit.buildAbsoluteURL(window.location.href, relativeUrl);
};
_rewriteUrl(baseUrl, url, throughProxy = true) {
const absoluteURL = UrlToolkit.buildAbsoluteURL(baseUrl, url, { alwaysNormalize: true });
return (
'# Original URL: ' +
url +
'\r\n' +
(
throughProxy
? this._proxyBaseUrl + querystring.escape(absoluteURL)
: absoluteURL
)
);
}
return line.replace(/URI="(.*?)"/g, (match) => {
const url = match.slice(5, -1);
const absoluteURL = UrlToolkit.buildAbsoluteURL(baseUrl, url, { alwaysNormalize: true });
return 'URI="' + this._proxyBaseUrl + querystring.escape(absoluteURL) + '"';
});
}
static resolve (url, baseUrl) {
return URLToolkit.buildAbsoluteURL(baseUrl, url, { alwaysNormalize: true });
}
get uri() {
if (!this._uri && this.reluri) {
this._uri = URLToolkit.buildAbsoluteURL(this.baseuri, this.reluri);
}
return this._uri;
}
get uri () {
if (!this._uri && this.reluri) {
this._uri = URLToolkit.buildAbsoluteURL(this.baseuri, this.reluri, { alwaysNormalize: true });
}
return this._uri;
}
}
resolve(url, baseUrl) {
return URLToolkit.buildAbsoluteURL(baseUrl, url);
}