Sha256: 9c9483d0f91ff445eaabf0cd5318ce178b086077d2915ed22e35393b93d6dde5
Contents?: true
Size: 929 Bytes
Versions: 23
Compression:
Stored size: 929 Bytes
Contents
'use strict'; const { URL } = require('url'); /** * Get unit from value node * * Returns `null` if the unit is not found. * * @param {string} urlString */ module.exports = function (urlString) { 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; };
Version data entries
23 entries across 23 versions & 1 rubygems