35 lines
901 B
JavaScript
35 lines
901 B
JavaScript
"use strict";
|
|
|
|
/**
|
|
* protocols
|
|
* Returns the protocols of an input url.
|
|
*
|
|
* @name protocols
|
|
* @function
|
|
* @param {String|URL} input The input url (string or `URL` instance)
|
|
* @param {Boolean|Number} first If `true`, the first protocol will be returned. If number, it will represent the zero-based index of the protocols array.
|
|
* @return {Array|String} The array of protocols or the specified protocol.
|
|
*/
|
|
module.exports = function protocols(input, first) {
|
|
|
|
if (first === true) {
|
|
first = 0;
|
|
}
|
|
|
|
var prots = "";
|
|
if (typeof input === "string") {
|
|
try {
|
|
prots = new URL(input).protocol;
|
|
} catch (e) {}
|
|
} else if (input && input.constructor === URL) {
|
|
prots = input.protocol;
|
|
}
|
|
|
|
var splits = prots.split(/\:|\+/).filter(Boolean);
|
|
|
|
if (typeof first === "number") {
|
|
return splits[first];
|
|
}
|
|
|
|
return splits;
|
|
}; |