UNPKG

browser-extension-url-match

Version:

Browser extension URL pattern matching

37 lines (36 loc) 1.07 kB
"use strict"; 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); }; }