indieauth-authentication
Version:
A helper class for creating apps that authenticate via IndieAuth
38 lines (33 loc) • 951 B
JavaScript
export default function(htmlString, url) {
let rels = {};
let baseUrl = url;
const doc = new DOMParser().parseFromString(htmlString, 'text/html');
const baseEl = doc.querySelector('base[href]');
const relEls = doc.querySelectorAll('[rel][href]');
if (baseEl) {
const value = baseEl.getAttribute('href');
const urlObj = new URL(value, url);
baseUrl = urlObj.toString();
}
if (relEls.length) {
relEls.forEach(relEl => {
const names = relEl
.getAttribute('rel')
.toLowerCase()
.split('\\s+');
const value = relEl.getAttribute('href');
if (names.length && value !== null) {
names.forEach(name => {
if (!rels[name]) {
rels[name] = [];
}
const url = new URL(value, baseUrl).toString();
if (rels[name].indexOf(url) === -1) {
rels[name].push(url);
}
});
}
});
}
return rels;
}