From a3b5086793fe00c7a9fe12046f5eab12bf1a0922 Mon Sep 17 00:00:00 2001 From: Zhiyuan Liang Date: Wed, 27 Aug 2025 11:40:24 +0800 Subject: [PATCH 1/4] collect node.js usage --- src/requestTracing/constants.ts | 3 +++ src/requestTracing/utils.ts | 18 +++++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/requestTracing/constants.ts b/src/requestTracing/constants.ts index 6f9311b4..769bb23c 100644 --- a/src/requestTracing/constants.ts +++ b/src/requestTracing/constants.ts @@ -17,6 +17,9 @@ export const NODEJS_DEV_ENV_VAL = "development"; export const ENV_KEY = "Env"; export const DEV_ENV_VAL = "Dev"; +// Node.js Version +export const NODE_VERSION_KEY = "NODE"; + // Host Type export const HOST_TYPE_KEY = "Host"; export enum HostType { diff --git a/src/requestTracing/utils.ts b/src/requestTracing/utils.ts index a6abe5a7..5253b562 100644 --- a/src/requestTracing/utils.ts +++ b/src/requestTracing/utils.ts @@ -23,6 +23,7 @@ import { FEATURE_FILTER_TYPE_KEY, FF_MAX_VARIANTS_KEY, FF_FEATURES_KEY, + NODE_VERSION_KEY, HOST_TYPE_KEY, HostType, KEY_VAULT_CONFIGURED_TAG, @@ -126,6 +127,7 @@ function createCorrelationContextHeader(requestTracingOptions: RequestTracingOpt keyValues.set(REQUEST_TYPE_KEY, requestTracingOptions.initialLoadCompleted ? RequestType.WATCH : RequestType.STARTUP); keyValues.set(HOST_TYPE_KEY, getHostType()); keyValues.set(ENV_KEY, isDevEnvironment() ? DEV_ENV_VAL : undefined); + keyValues.set(NODE_VERSION_KEY, getNodeVersion()); const appConfigOptions = requestTracingOptions.appConfigOptions; if (appConfigOptions?.keyVaultOptions) { @@ -198,7 +200,7 @@ function createFeaturesString(requestTracingOptions: RequestTracingOptions): str return tags.join(DELIMITER); } -function getEnvironmentVariable(name: string) { +function getEnvironmentVariable(name: string): string | undefined { // Make it compatible with non-Node.js runtime if (typeof process !== "undefined" && typeof process?.env === "object") { return process.env[name]; @@ -207,6 +209,16 @@ function getEnvironmentVariable(name: string) { } } +function getNodeVersion(): string | undefined { + // Make it compatible with non-Node.js runtime + if (typeof process !== "undefined" && typeof process?.versions === "object") { + const version = process.versions.node; + return version ? version.split('.')[0] : undefined; + } else { + return undefined; + } +} + function getHostType(): string | undefined { let hostType: string | undefined; if (getEnvironmentVariable(AZURE_FUNCTION_ENV_VAR)) { @@ -235,7 +247,7 @@ function isDevEnvironment(): boolean { return false; } -export function isBrowser() { +export function isBrowser(): boolean { // https://developer.mozilla.org/en-US/docs/Web/API/Window const isWindowDefinedAsExpected = typeof window === "object" && typeof Window === "function" && window instanceof Window; // https://developer.mozilla.org/en-US/docs/Web/API/Document @@ -244,7 +256,7 @@ export function isBrowser() { return isWindowDefinedAsExpected && isDocumentDefinedAsExpected; } -export function isWebWorker() { +export function isWebWorker(): boolean { // https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope const workerGlobalScopeDefined = typeof WorkerGlobalScope !== "undefined"; // https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator From 6709997496d3bd4324ad12501ace619ba426fddc Mon Sep 17 00:00:00 2001 From: Zhiyuan Liang Date: Wed, 27 Aug 2025 13:03:29 +0800 Subject: [PATCH 2/4] fix lint --- src/requestTracing/utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/requestTracing/utils.ts b/src/requestTracing/utils.ts index 5253b562..172c596f 100644 --- a/src/requestTracing/utils.ts +++ b/src/requestTracing/utils.ts @@ -213,7 +213,7 @@ function getNodeVersion(): string | undefined { // Make it compatible with non-Node.js runtime if (typeof process !== "undefined" && typeof process?.versions === "object") { const version = process.versions.node; - return version ? version.split('.')[0] : undefined; + return version ? version.split(".")[0] : undefined; } else { return undefined; } From 504807aab83b67b18745b733f0968e2a74c58a51 Mon Sep 17 00:00:00 2001 From: Zhiyuan Liang Date: Wed, 27 Aug 2025 16:00:11 +0800 Subject: [PATCH 3/4] update testcase --- test/requestTracing.test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/requestTracing.test.ts b/test/requestTracing.test.ts index f79f571d..a8a0b4af 100644 --- a/test/requestTracing.test.ts +++ b/test/requestTracing.test.ts @@ -56,7 +56,8 @@ describe("request tracing", function () { }); } catch (e) { /* empty */ } expect(headerPolicy.headers).not.undefined; - expect(headerPolicy.headers.get("Correlation-Context")).eq("RequestType=Startup"); + const correlationContext = headerPolicy.headers.get("Correlation-Context"); + expect(correlationContext.includes("RequestType=Startup")).eq(true); }); it("should have key vault tag in correlation-context header", async () => { From b74cc516386f910a9dac1eabddc2147142d67f07 Mon Sep 17 00:00:00 2001 From: zhiyuanliang Date: Tue, 2 Sep 2025 10:54:21 +0800 Subject: [PATCH 4/4] use lowercase tag --- src/requestTracing/constants.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/requestTracing/constants.ts b/src/requestTracing/constants.ts index 769bb23c..7277cd2a 100644 --- a/src/requestTracing/constants.ts +++ b/src/requestTracing/constants.ts @@ -18,7 +18,7 @@ export const ENV_KEY = "Env"; export const DEV_ENV_VAL = "Dev"; // Node.js Version -export const NODE_VERSION_KEY = "NODE"; +export const NODE_VERSION_KEY = "Node"; // Host Type export const HOST_TYPE_KEY = "Host";