browser-extension-url-match
Version:
Browser extension URL pattern matching
37 lines (36 loc) • 1.07 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createMatchFn = createMatchFn;
exports.normalizeUrlFragment = void 0;
const normalizeUrlFragment = urlFragent => {
try {
return encodeURI(decodeURI(urlFragent));
} catch (e) {
return e;
}
};
exports.normalizeUrlFragment = normalizeUrlFragment;
function createMatchFn(fn) {
return url => {
let normalizedUrl;
try {
const urlStr = url instanceof URL ? url.href : url;
normalizedUrl = new URL(urlStr);
const normalizedPathname = normalizeUrlFragment(normalizedUrl.pathname);
const normalizedSearch = normalizeUrlFragment(normalizedUrl.search);
if (normalizedPathname instanceof Error || normalizedSearch instanceof Error) {
return false;
}
normalizedUrl.pathname = normalizedPathname;
if (!normalizedUrl.href.endsWith('?')) {
// avoid nuking zero-search-string
normalizedUrl.search = normalizedSearch;
}
} catch (_e) {
return false;
}
return fn(normalizedUrl);
};
}
;