diff --git a/package-lock.json b/package-lock.json index 2157266..0ae5cc7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@redhat-developer/vscode-redhat-telemetry", - "version": "0.10.1", + "version": "0.10.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@redhat-developer/vscode-redhat-telemetry", - "version": "0.10.1", + "version": "0.10.2", "license": "Apache-2.0", "dependencies": { "@segment/analytics-node": "2.3.0", diff --git a/package.json b/package.json index ffb5360..13d66ae 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@redhat-developer/vscode-redhat-telemetry", - "version": "0.10.1", + "version": "0.10.2", "description": "Provides Telemetry APIs for Red Hat applications", "main": "lib/index.js", "types": "lib", diff --git a/src/common/utils/telemetryUtils.ts b/src/common/utils/telemetryUtils.ts index 894ce3b..eda25a3 100644 --- a/src/common/utils/telemetryUtils.ts +++ b/src/common/utils/telemetryUtils.ts @@ -6,11 +6,12 @@ // Regex patterns for path sanitization const NODE_MODULES_REGEX = /[\\\/]?(node_modules|node_modules\.asar)[\\\/]/; -const FILE_REGEX_PATTERN = /(file:\/\/)?([a-zA-Z]:(\\\\|\\|\/)|(\\\\|\\|\/))?([\w-\._]+(\\\\|\\|\/))+[\w-\._]+/g; +const FILE_REGEX_PATTERN = /(file:\/\/?)?([a-zA-Z]:(\\\\|\\|\/)|(\\\\|\\|\/))?([\w-\._%]+(\\\\|\\|\/))+[\w-\._%]+/g; // Default cleanup patterns to preserve common system/library paths const DEFAULT_CLEANUP_PATTERNS: RegExp[] = [ /java\.\S*/, // Java standard library and related packages (any non-whitespace chars) + /\/jdt\.ls-java-project\S*/, // Eclipse JDT Language Server Java project paths ]; /** diff --git a/src/tests/utils/telemetryUtils.test.ts b/src/tests/utils/telemetryUtils.test.ts index 7a02338..a53be9c 100644 --- a/src/tests/utils/telemetryUtils.test.ts +++ b/src/tests/utils/telemetryUtils.test.ts @@ -166,6 +166,18 @@ suite('Test anonymizeFilePaths', () => { assert.strictEqual(result, input); }); + test('should preserve JDT Language Server Java project paths with default patterns', () => { + const input = 'Error at /jdt.ls-java-project/src/main/java/com/example/MyClass.java:45'; + const result = anonymizeFilePaths(input); + assert.strictEqual(result, input); + }); + + test('should anonymize file:/ URLs even with JDT workspace paths', () => { + const input = 'Failed to read package name from file:/Users/someguy/Library/Application%20Support/Code/User/workspaceStorage/4f4553a7f3f79b5e8qa7c889b39fe96b/redhat.java/jdt_ws/Hello.java/'; + const result = anonymizeFilePaths(input); + assert.strictEqual(result, 'Failed to read package name from /'); + }); + test('should anonymize user paths but preserve Java paths with default patterns', () => { const input = 'Error at /Users/john/project/src/main.ts:45 and java.base/java.lang.String.(String.java:123)'; const result = anonymizeFilePaths(input);