HEX
Server: Apache
System: Linux webd004.cluster130.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64
User: frenchy (106757)
PHP: 7.4.33
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/frenchy/www/french-american.org/current/node_modules/stylelint/lib/utils/getSchemeFromUrl.js
/* @flow */
"use strict";

const { URL } = require("url");

/**
 * Get unit from value node
 *
 * Returns `null` if the unit is not found.
 */
module.exports = function(urlString /*: string*/) /*: ?string*/ {
  let protocol = null;

  try {
    protocol = new URL(urlString).protocol;
  } catch (err) {
    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;
};