UNPKG

@creditkarma/consul-client

Version:

A client for Hashicorp Consul written in TypeScript

101 lines 3.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.headersForRequest = exports.deepEqual = exports.deepMerge = exports.requestToPath = exports.cleanQueryParams = exports.splitQueryMap = exports.ensureProtocol = exports.removeLeadingTrailingSlash = exports.decodeBase64 = exports.defaultAddresses = void 0; const url = require("url"); const lodash_1 = require("lodash"); const constants_1 = require("./constants"); function defaultAddresses() { const envAddress = process.env[constants_1.CONSUL_ADDRESS]; if (envAddress !== undefined) { return envAddress .split(',') .map((next) => { return next.trim(); }) .filter((next) => { return next !== ''; }); } else { return [constants_1.DEFAULT_HOST]; } } exports.defaultAddresses = defaultAddresses; function decodeBase64(val) { return JSON.parse(Buffer.from(val, 'base64').toString('utf-8')); } exports.decodeBase64 = decodeBase64; function removeLeadingTrailingSlash(str) { const tmp = str.charAt(0) === '/' ? str.substring(1, str.length) : str; if (tmp.charAt(tmp.length - 1) === '/') { return tmp.substring(0, tmp.length - 1); } else { return tmp; } } exports.removeLeadingTrailingSlash = removeLeadingTrailingSlash; function ensureProtocol(urlVal) { const protocols = ['http:', 'https:']; const parsedUrl = url.parse(urlVal); const hasProto = protocols.indexOf(parsedUrl.protocol || '') >= 0; return hasProto ? urlVal : 'http://' + urlVal; } exports.ensureProtocol = ensureProtocol; function splitQueryMap(raw) { const result = {}; const parts = raw.split('?').filter((next) => next.trim() !== ''); if (parts.length > 1) { const query = parts[1]; const pairs = query.split('&'); pairs.forEach((next) => { const [key, value] = next.split('='); result[key] = value; }); } return result; } exports.splitQueryMap = splitQueryMap; function cleanQueryParams(raw) { const cleaned = {}; raw.dc = raw.dc || process.env[constants_1.CONSUL_DC]; for (const key in raw) { if (raw.hasOwnProperty(key)) { const value = raw[key]; if (value !== undefined && value !== null && value !== 'false') { cleaned[key] = value; } } } return cleaned; } exports.cleanQueryParams = cleanQueryParams; function requestToPath(req) { const tmp = req.subsection !== undefined ? `${req.apiVersion}/${req.section}/${req.subsection}/${req.key.path}` : `${req.apiVersion}/${req.section}/${req.key.path}`; return removeLeadingTrailingSlash(tmp); } exports.requestToPath = requestToPath; function deepMerge(base, update) { return (0, lodash_1.merge)({}, base, update); } exports.deepMerge = deepMerge; function deepEqual(obj1, obj2) { return (0, lodash_1.isEqual)(obj1, obj2); } exports.deepEqual = deepEqual; function headersForRequest(req) { const headers = { host: constants_1.CONSUL_HOST_NAME, }; if (req.index !== undefined) { headers[constants_1.CONSUL_INDEX_HEADER] = (req.index + 1).toString(); } if (req.token) { headers[constants_1.CONSUL_TOKEN_HEADER] = req.token; } return headers; } exports.headersForRequest = headersForRequest; //# sourceMappingURL=utils.js.map