diff --git a/package.json b/package.json index 5451935efa..544d972104 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ ], "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=18.19.0" }, "contributors": [ { diff --git a/packages/autoprofile/package.json b/packages/autoprofile/package.json index 59d078ee33..3d2d2918c8 100644 --- a/packages/autoprofile/package.json +++ b/packages/autoprofile/package.json @@ -56,7 +56,7 @@ "semver": "^7.7.3" }, "engines": { - "node": ">=18.0.0" + "node": ">=18.19.0" }, "main": "index.js", "files": [ diff --git a/packages/aws-fargate/package.json b/packages/aws-fargate/package.json index 78a9939da8..a98fd38d18 100644 --- a/packages/aws-fargate/package.json +++ b/packages/aws-fargate/package.json @@ -71,6 +71,6 @@ "@instana/serverless": "4.29.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=18.19.0" } } diff --git a/packages/aws-lambda/package.json b/packages/aws-lambda/package.json index 61e297734b..889ee30319 100644 --- a/packages/aws-lambda/package.json +++ b/packages/aws-lambda/package.json @@ -48,7 +48,7 @@ "tracing" ], "engines": { - "node": ">=18.0.0" + "node": ">=18.19.0" }, "contributors": [ { diff --git a/packages/azure-container-services/package.json b/packages/azure-container-services/package.json index d4bd04774a..1a2bce24c6 100644 --- a/packages/azure-container-services/package.json +++ b/packages/azure-container-services/package.json @@ -62,7 +62,7 @@ "url": "https://github.com/instana/nodejs/issues" }, "engines": { - "node": ">=18.0.0" + "node": ">=18.19.0" }, "license": "MIT", "dependencies": { diff --git a/packages/collector/package.json b/packages/collector/package.json index cc8f6e722e..bd8709f0e8 100644 --- a/packages/collector/package.json +++ b/packages/collector/package.json @@ -31,7 +31,7 @@ "url": "git+https://github.com/instana/nodejs.git" }, "engines": { - "node": ">=18.0.0" + "node": ">=18.19.0" }, "scripts": { "audit": "npm audit --omit=dev", diff --git a/packages/core/src/tracing/instrumentation/protocols/nativeFetch.js b/packages/core/src/tracing/instrumentation/protocols/nativeFetch.js index 342c217921..dc4650c992 100644 --- a/packages/core/src/tracing/instrumentation/protocols/nativeFetch.js +++ b/packages/core/src/tracing/instrumentation/protocols/nativeFetch.js @@ -33,8 +33,7 @@ let isActive = false; exports.shouldAddHeadersToOptionsUnconditionally = function () { return ( semver.eq(process.version, '21.0.0') || - (semver.gte(process.version, '20.8.1') && semver.lt(process.version, '20.10.0')) || - (semver.gte(process.version, '18.18.2') && semver.lt(process.version, '18.19.0')) + (semver.gte(process.version, '20.8.1') && semver.lt(process.version, '20.10.0')) ); }; diff --git a/packages/core/src/util/nodeJsVersionCheck.js b/packages/core/src/util/nodeJsVersionCheck.js index 42cc125b3b..5a45716ca7 100644 --- a/packages/core/src/util/nodeJsVersionCheck.js +++ b/packages/core/src/util/nodeJsVersionCheck.js @@ -4,10 +4,11 @@ 'use strict'; +const semver = require('semver'); /** * This is the minimum required Node.js version for all @instana packages. */ -exports.minimumNodeJsVersion = 18; +exports.minimumNodeJsVersion = '18.19.0'; /** * Checks if the value of process.version denotes a Node.js version that is not supported, that is, older than the given @@ -17,12 +18,9 @@ exports.minimumNodeJsVersion = 18; */ exports.isNodeJsTooOld = function isNodeJsTooOld() { const currentVersion = process.version; - if (typeof currentVersion === 'string') { - const majorVersionStr = process.version.split('.')[0]; - if (majorVersionStr.length > 1 && majorVersionStr.charAt(0) === 'v') { - const majorVersion = parseInt(majorVersionStr.substring(1), 10); - return !isNaN(majorVersion) && majorVersion < exports.minimumNodeJsVersion; - } + if (!semver.valid(currentVersion)) { + return false; } - return false; + + return semver.lt(currentVersion, exports.minimumNodeJsVersion); }; diff --git a/packages/core/test/tracing/supportedVersion_test.js b/packages/core/test/tracing/supportedVersion_test.js index efffe33fa1..c643917b43 100644 --- a/packages/core/test/tracing/supportedVersion_test.js +++ b/packages/core/test/tracing/supportedVersion_test.js @@ -11,12 +11,13 @@ const supportedTracingVersion = require('../../src/tracing/supportedVersion'); describe('supported versions for Node.js auto tracing', () => { it('must support various Node.js versions', () => { - expect(supportedTracingVersion('18.1.1')).to.equal(true); + expect(supportedTracingVersion('18.19.0')).to.equal(true); expect(supportedTracingVersion('20.0.0')).to.equal(true); expect(supportedTracingVersion('21.2.0')).to.equal(true); expect(supportedTracingVersion('22.0.0')).to.equal(true); expect(supportedTracingVersion('23.0.0')).to.equal(true); expect(supportedTracingVersion('24.0.0')).to.equal(true); + expect(supportedTracingVersion('25.0.0')).to.equal(true); }); it('must report various Node.js versions as not supported', () => { @@ -45,5 +46,6 @@ describe('supported versions for Node.js auto tracing', () => { expect(supportedTracingVersion('12.0.0')).to.equal(false); expect(supportedTracingVersion('14.0.0')).to.equal(false); expect(supportedTracingVersion('16.1.0')).to.equal(false); + expect(supportedTracingVersion('18.18.0')).to.equal(false); }); }); diff --git a/packages/core/test/util/nodeJsTooOld_test.js b/packages/core/test/util/nodeJsTooOld_test.js index 7e0a9c0722..92c62ac1db 100644 --- a/packages/core/test/util/nodeJsTooOld_test.js +++ b/packages/core/test/util/nodeJsTooOld_test.js @@ -77,6 +77,21 @@ describe('util.nodeJsTooOld', () => { expect(isNodeJsTooOld()).to.be.true; }); + it('should reject Node.js 18.18.0', () => { + setProcessVersion('v18.18.0'); + expect(isNodeJsTooOld()).to.be.true; + }); + + it('should reject Node.js 18.18.9', () => { + setProcessVersion('v18.18.0'); + expect(isNodeJsTooOld()).to.be.true; + }); + + it('should accept Node.js 18.19.0', () => { + setProcessVersion('v18.19.0'); + expect(isNodeJsTooOld()).to.be.false; + }); + it('should accept if process.version is not set', () => { setProcessVersion(undefined); expect(isNodeJsTooOld()).to.be.false; @@ -94,7 +109,7 @@ describe('util.nodeJsTooOld', () => { it('should accept if process.version is in an unexpected format (no v prefix)', () => { setProcessVersion('11.22.33'); - expect(isNodeJsTooOld()).to.be.false; + expect(isNodeJsTooOld()).to.be.true; }); }); diff --git a/packages/google-cloud-run/package.json b/packages/google-cloud-run/package.json index 1f8b692a56..470a17726f 100644 --- a/packages/google-cloud-run/package.json +++ b/packages/google-cloud-run/package.json @@ -71,6 +71,6 @@ "@instana/serverless": "4.29.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=18.19.0" } } diff --git a/packages/metrics-util/package.json b/packages/metrics-util/package.json index a3c61e5f4c..56aa48410a 100644 --- a/packages/metrics-util/package.json +++ b/packages/metrics-util/package.json @@ -59,5 +59,8 @@ "@instana/core": "4.29.0", "@instana/shared-metrics": "4.29.0", "node-fetch": "^2.6.7" + }, + "engines": { + "node": ">=18.19.0" } } diff --git a/packages/opentelemetry-exporter/package.json b/packages/opentelemetry-exporter/package.json index b9eb77dfc9..5335ed89a6 100644 --- a/packages/opentelemetry-exporter/package.json +++ b/packages/opentelemetry-exporter/package.json @@ -21,7 +21,7 @@ "CHANGELOG.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=18.19.0" }, "repository": { "type": "git", diff --git a/packages/opentelemetry-sampler/package.json b/packages/opentelemetry-sampler/package.json index 2153d72b7b..9afc578edd 100644 --- a/packages/opentelemetry-sampler/package.json +++ b/packages/opentelemetry-sampler/package.json @@ -21,7 +21,7 @@ "CHANGELOG.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=18.19.0" }, "repository": { "type": "git", diff --git a/packages/serverless-collector/package.json b/packages/serverless-collector/package.json index 36ad7b1a7d..f1eb7a9018 100644 --- a/packages/serverless-collector/package.json +++ b/packages/serverless-collector/package.json @@ -13,6 +13,9 @@ "esm-loader.mjs", "esm-register.mjs" ], + "engines": { + "node": ">=18.19.0" + }, "publishConfig": { "access": "public" }, diff --git a/packages/serverless/package.json b/packages/serverless/package.json index fdca3f65a8..95a9bcf812 100644 --- a/packages/serverless/package.json +++ b/packages/serverless/package.json @@ -12,6 +12,9 @@ "src", "CHANGELOG.md" ], + "engines": { + "node": ">=18.19.0" + }, "publishConfig": { "access": "public" }, diff --git a/packages/shared-metrics/package.json b/packages/shared-metrics/package.json index b5d2520985..6ddcebe274 100644 --- a/packages/shared-metrics/package.json +++ b/packages/shared-metrics/package.json @@ -13,6 +13,9 @@ "addons/linux", "CHANGELOG.md" ], + "engines": { + "node": ">=18.19.0" + }, "publishConfig": { "access": "public" },