@instana/collector
Version:
The Instana Node.js metrics and trace data collector
57 lines (47 loc) • 1.53 kB
JavaScript
/*
* (c) Copyright IBM Corp. 2021
* (c) Copyright Instana Inc. and contributors 2019
*/
/* eslint-disable dot-notation */
;
const defaults = {
agentHost: '127.0.0.1',
agentPort: 42699,
tracing: {
stackTraceLength: 10
},
autoProfile: false
};
/**
* Merges the config that was passed to the init function with environment variables and default values.
* @param {import('../types/collector').CollectorConfig} config
* @returns {import('../types/collector').CollectorConfig}
*/
module.exports = function normalizeConfig(config = {}) {
config.agentHost = config.agentHost || process.env.INSTANA_AGENT_HOST || defaults.agentHost;
config.agentPort = config.agentPort || parseToPositiveInteger(process.env.INSTANA_AGENT_PORT, defaults.agentPort);
config.autoProfile = config.autoProfile || process.env.INSTANA_AUTO_PROFILE || defaults.autoProfile;
config.tracing = config.tracing || {};
if (config.tracing.stackTraceLength == null) {
config.tracing.stackTraceLength = defaults.tracing.stackTraceLength;
}
if (config.reportUnhandledPromiseRejections == null) {
config.reportUnhandledPromiseRejections = false;
}
return config;
};
/**
* @param {string | number} value
* @param {number} defaultValue
* @returns {number}
*/
function parseToPositiveInteger(value, defaultValue) {
if (typeof value !== 'string') {
return defaultValue;
}
value = parseInt(value, 10);
if (!isNaN(value)) {
return Math.abs(Math.round(value));
}
return defaultValue;
}