solarwinds-apm
Version:
OpenTelemetry-based SolarWinds APM library
106 lines (91 loc) • 2.63 kB
JavaScript
/* eslint-disable */
;
var fs = require("fs");
var path = require("path");
var process = require("process");
var log = require("./log");
var RELEASED = require("./timestamp");
var NOW = Date.now();
var YEAR = 1000 * 60 * 60 * 24 * 365;
var PACKAGE = null;
try {
PACKAGE = JSON.parse(
fs.readFileSync(path.join(__dirname, "../../package.json"), {
encoding: "utf8"
})
);
} catch (error) {
log(error);
}
try {
if (
typeof process.version !== "string" ||
process.version.substring(0, 2) === "v0"
) {
throw "UPDATE YOUR NODE.JS VERSION IMMEDIATELY.";
}
// By default assume the Node version is too recent to be in the releases list
module.exports = true;
var file =
require.resolve("node-releases/data/release-schedule/release-schedule.json");
var versions = JSON.parse(fs.readFileSync(file, { encoding: "utf8" }));
for (var major in versions) {
if (process.version.substring(0, major.length) !== major) {
continue;
}
var lts = "lts" in versions[major];
var eol = new Date(versions[major].end);
var maintained = NOW - eol <= 0;
var supported = RELEASED - eol <= (lts ? YEAR : 0);
// only try and perform a full semver check on modern Node.js
// so we don't break on old versions that can't run it
if (supported && PACKAGE) {
supported = require("semver/functions/satisfies")(
process.version.slice(1),
PACKAGE.engines.node
);
}
if (!maintained) {
log(
"The detected Node.js version (" +
process.version +
") has reached End Of Life (" +
versions[major].end +
")."
);
log(
"SolarWinds STRONGLY recommends customers use a non-EOL Node.js version receiving security updates."
);
}
if (!supported) {
log(
"The application will not be instrumented to avoid potential compatibility issues."
);
}
module.exports = supported;
break;
}
} catch (error) {
log(error);
module.exports = false;
}
try {
var node = process.versions.node;
log("Node.js " + node);
log("solarwinds-apm " + PACKAGE.version);
function logVersion(module) {
var dir = require.resolve(module);
while (!dir.endsWith(module)) {
dir = path.dirname(dir);
}
var version = JSON.parse(
fs.readFileSync(path.join(dir, "package.json"), {
encoding: "utf8"
})
).version;
log(module + " " + version);
}
logVersion("@opentelemetry/api");
logVersion("@opentelemetry/core");
logVersion("@opentelemetry/instrumentation");
} catch (_error) {}