Repository URL to install this package:
|
Version:
0.8.2 ▾
|
// (c) Copyright 2023 Supertenant Ltd. - all rights reserved.
// See LICENSE file in project root for license terms.
"use strict";const logger=require("./console_logger"),instanaEndpointUrlEnvVar="INSTANA_ENDPOINT_URL",instanaAgentKeyEnvVar="INSTANA_AGENT_KEY",deprecatedInstanaUrlEnvVar="INSTANA_URL",deprecatedInstanaKeyEnvVar="INSTANA_KEY",instanaZoneEnvVar="INSTANA_ZONE";let valid=!1,backendHost=null,backendPort=null,backendPath=null,instanaAgentKey=null,tags=void 0;exports.sendUnencryptedEnvVar="INSTANA_DEV_SEND_UNENCRYPTED",exports.sendUnencrypted="true"===process.env[exports.sendUnencryptedEnvVar];const customZone=process.env[instanaZoneEnvVar]||void 0;function _validate(instanaEndpointUrl,_instanaAgentKey,validateInstanaAgentKey){if(logger.debug(instanaEndpointUrlEnvVar+": "+instanaEndpointUrl),instanaEndpointUrl){var parsedUrl=parseUrl(instanaEndpointUrl);if(parsedUrl)if(exports.sendUnencrypted||"https:"===parsedUrl.protocol)if(exports.sendUnencrypted&&"https:"!==parsedUrl.protocol&&"http:"!==parsedUrl.protocol)logger.warn(`The value of ${instanaEndpointUrlEnvVar} (${instanaEndpointUrl}) specifies a non-supported protocol: `+`"${parsedUrl.protocol}". Only "https:" and "http:" are supported. No data will be reported to Instana.`);else if(parsedUrl.hostname&&0!==parsedUrl.hostname.length){if(backendHost=parsedUrl.hostname,(backendPort=parsedUrl.port)&&0!==backendPort.length||(backendPort="443"),backendPath=parsedUrl.pathname,(instanaAgentKey=_instanaAgentKey)&&0!==instanaAgentKey.length)logger.debug("INSTANA AGENT KEY: "+instanaAgentKey);else if(!(validateInstanaAgentKey?validateInstanaAgentKey():null))return void logger.warn(`The environment variable ${instanaAgentKeyEnvVar} is not set. No data will be reported to Instana.`);logger.debug("INSTANA ENDPOINT HOST: "+backendHost),logger.debug("INSTANA ENDPOINT PORT: "+backendPort),logger.debug("INSTANA ENDPOINT PATH: "+backendPath),valid=!0}else logger.warn(`The value of ${instanaEndpointUrlEnvVar} (${instanaEndpointUrl}) does not seem to be a well-formed URL.`+" No data will be reported to Instana.");else logger.warn(`The value of ${instanaEndpointUrlEnvVar} (${instanaEndpointUrl}) specifies a non-supported protocol: `+`"${parsedUrl.protocol}". Only "https:" is supported. No data will be reported to Instana.`);else logger.warn(`The value of ${instanaEndpointUrlEnvVar} (${instanaEndpointUrl}) does not seem to be a well-formed URL.`+" No data will be reported to Instana.")}else logger.warn(instanaEndpointUrlEnvVar+" is not set. No data will be reported to Instana.")}function parseUrl(value){try{return new URL(value)}catch(e){return logger.warn(e.message),null}}exports.validate=function({validateInstanaAgentKey}={}){_validate(process.env[instanaEndpointUrlEnvVar]||process.env[deprecatedInstanaUrlEnvVar],process.env[instanaAgentKeyEnvVar]||process.env[deprecatedInstanaKeyEnvVar],validateInstanaAgentKey)},exports._reset=function(){valid=!1,backendHost=null,backendPort=null},exports.isValid=function(){return valid},exports.getBackendHost=function(){return backendHost},exports.getBackendPort=function(){return backendPort},exports.getBackendPath=function(){return backendPath},exports.getInstanaAgentKey=function(){return instanaAgentKey},exports.setInstanaAgentKey=function(key){instanaAgentKey=key},exports.getCustomZone=function(){return customZone},exports._parseTags=function(){let tagsRaw=process.env.INSTANA_TAGS;tagsRaw&&0!==(tagsRaw=tagsRaw.trim()).length&&(tags=tagsRaw.split(",").map(kvPairString=>kvPairString.split("="),2).reduce((collectedTags,kvPair)=>{var tagName=kvPair[0].trim();return 1===kvPair.length?collectedTags[tagName]=null:collectedTags[tagName]=kvPair[1],collectedTags},{}))},exports._parseTags(),exports.getTags=function(){return tags};