UNPKG

node-hue-api

Version:
45 lines (44 loc) 1.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.cleanHostname = exports.isIpv6Host = exports.getHttpUrl = exports.getHttpsUrl = void 0; const ipv6Regex = /^(\[)?(((?:[0-9a-f]{1,4}))((?::[0-9a-f]{1,4}))*)?::((?:[0-9a-f]{1,4}))((?::[0-9a-f]{1,4}))*|((?:[0-9a-f]{1,4}))((?::[0-9a-f]{1,4})){7}(])?$/; const bracketsRegex = /^\[.*]$/; function getHttpsUrl(hostname, port) { return generateUrl('https', hostname, port); } exports.getHttpsUrl = getHttpsUrl; function getHttpUrl(hostname, port) { return generateUrl('http', hostname, port); } exports.getHttpUrl = getHttpUrl; function isIpv6Host(value) { if (value) { const trimmedValue = value.toLowerCase().trim(); if (ipv6Regex.test(trimmedValue)) { return true; } } return false; } exports.isIpv6Host = isIpv6Host; function cleanHostname(hostname) { if (bracketsRegex.test(hostname)) { return hostname.substring(1, hostname.length - 1); } return hostname; } exports.cleanHostname = cleanHostname; function escapeIPv6Address(address) { let result = address.trim(); if (!bracketsRegex.test(result)) { result = `[${address}]`; } return result; } function generateUrl(scheme, hostname, port) { let escapedHostName = hostname; if (isIpv6Host(hostname)) { escapedHostName = escapeIPv6Address(hostname); } return new URL(`${scheme}://${escapedHostName}:${port}`); }