Files
Nikolay Vitkov 2a1b3b34b1 Update StyleLint to v16
Stylelint v16 deprecated CJS so I moved our lint script to ESM,
and fixed all the deprecation warning.
The only place I needed to silence them were tests,
as we import CJS there.

Bug: none
Change-Id: Iae4d2df76c855a9738b774a2d035f22509770215
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6138610
Commit-Queue: Nikolay Vitkov <nvitkov@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
2025-01-03 02:57:06 -08:00

37 lines
916 B
JavaScript

/**
* Get unit from value node
*
* Returns `null` if the unit is not found.
*
* @param {string} urlString
* @returns {string | null}
*/
export default function getSchemeFromUrl(urlString) {
let protocol = null;
try {
protocol = new URL(urlString).protocol;
} catch {
return null;
}
if (protocol === null || typeof protocol === 'undefined') {
return null;
}
const scheme = protocol.slice(0, -1); // strip trailing `:`
// The URL spec does not require a scheme to be followed by `//`, but checking
// for it allows this rule to differentiate <scheme>:<hostname> urls from
// <hostname>:<port> urls. `data:` scheme urls are an exception to this rule.
const slashIndex = protocol.length;
const expectedSlashes = urlString.slice(slashIndex, slashIndex + 2);
const isSchemeLessUrl = expectedSlashes !== '//' && scheme !== 'data';
if (isSchemeLessUrl) {
return null;
}
return scheme;
}