From 517dad7434944ac046b5680c0f24af08b17cf460 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <git@minelli.swiss>
Date: Wed, 2 Apr 2025 17:01:55 +0200
Subject: [PATCH] Sonar => Resolve issues

---
 config/SharedConfig.ts                        |  8 +++---
 helpers/Toolbox.ts                            |  2 +-
 helpers/TypeScriptExtensions.ts               |  2 +-
 .../RecursiveFilesStats.ts                    |  4 +--
 managers/SharedGitlabManager.ts               |  4 +--
 managers/SharedSonarManager.ts                | 27 ++++++++++---------
 6 files changed, 23 insertions(+), 24 deletions(-)

diff --git a/config/SharedConfig.ts b/config/SharedConfig.ts
index 4cbfe89..3754237 100644
--- a/config/SharedConfig.ts
+++ b/config/SharedConfig.ts
@@ -11,14 +11,14 @@ class SharedConfig {
         enabled: boolean
         url: string
         token: string
-    }
+    };
 
     constructor() {
         this.production = process.env.NODE_ENV === 'production';
         this.sonar = {
-            enabled: ['yes', 'true', '1', 'on'].includes(process.env.SONAR_ENABLED?.trim()?.toLowerCase() ?? ''),
-            url: process.env.SONAR_URL || '',
-            token: process.env.SONAR_TOKEN || ''
+            enabled: [ 'yes', 'true', '1', 'on' ].includes(process.env.SONAR_ENABLED?.trim()?.toLowerCase() ?? ''),
+            url    : process.env.SONAR_URL ?? '',
+            token  : process.env.SONAR_TOKEN ?? ''
         };
 
         this.logsFolder = process.env.LOGS_FOLDER ?? '';
diff --git a/helpers/Toolbox.ts b/helpers/Toolbox.ts
index d0fbfd5..8b32f2a 100644
--- a/helpers/Toolbox.ts
+++ b/helpers/Toolbox.ts
@@ -4,7 +4,7 @@ import path from 'path';
 
 class Toolbox {
     public urlToPath(url: string): string {
-        return url.replace(/^([a-z]{3,5}:\/{2})?[a-z.@]+(:[0-9]{1,5})?.(.*)/, '$3').replace('.git', '');
+        return url.replace(/^([a-z]{3,5}:\/{2})?[a-z.@]+(:\d{1,5})?.(.*)/, '$3').replace('.git', '');
     }
 
     /*
diff --git a/helpers/TypeScriptExtensions.ts b/helpers/TypeScriptExtensions.ts
index 0fc9c70..2762964 100644
--- a/helpers/TypeScriptExtensions.ts
+++ b/helpers/TypeScriptExtensions.ts
@@ -64,7 +64,7 @@ function registerStringCapitalizeName() {
 
 function registerStringConvertWithEnvVars() {
     String.prototype.convertWithEnvVars = function (this: string): string {
-        return this.replace(/\${?([a-zA-Z0-9_]+)}?/g, (_match: string, p1: string) => process.env[p1] || '');
+        return this.replace(/\${?(\w+)}?/g, (_match: string, p1: string) => process.env[p1] ?? '');
     };
 }
 
diff --git a/helpers/recursiveFilesStats/RecursiveFilesStats.ts b/helpers/recursiveFilesStats/RecursiveFilesStats.ts
index a71bffd..eb1a01c 100644
--- a/helpers/recursiveFilesStats/RecursiveFilesStats.ts
+++ b/helpers/recursiveFilesStats/RecursiveFilesStats.ts
@@ -57,10 +57,10 @@ class RecursiveFilesStats {
             name: file,
             path: path.join(rootPath, file)
         })).filter(item => {
-            if ( options.include && options.include.test(item.path) ) {
+            if ( options.include?.test(item.path) ) {
                 return true;
             }
-            if ( options.exclude && options.exclude.test(item.path) ) {
+            if ( options.exclude?.test(item.path) ) {
                 return false;
             }
             if ( options.ignored ) {
diff --git a/managers/SharedGitlabManager.ts b/managers/SharedGitlabManager.ts
index 90746ed..3f29985 100644
--- a/managers/SharedGitlabManager.ts
+++ b/managers/SharedGitlabManager.ts
@@ -10,9 +10,7 @@ class SharedGitlabManager {
     private readonly refreshTokenFunction?: () => Promise<string>;
 
     setToken(token: string) {
-        this.api = new Gitlab(Object.assign({
-                                                host: this.gitlabUrl ?? ''
-                                            }, this.refreshTokenFunction ? { oauthToken: token } : { token: token }));
+        this.api = new Gitlab({ host: this.gitlabUrl ?? '', ...(this.refreshTokenFunction ? { oauthToken: token } : { token: token }) });
     }
 
     constructor(public gitlabUrl: string, token: string, public clientId?: string, public urlRedirect?: string, public urlToken?: string, refreshTokenFunction?: () => Promise<string>) {
diff --git a/managers/SharedSonarManager.ts b/managers/SharedSonarManager.ts
index b514161..56a3880 100644
--- a/managers/SharedSonarManager.ts
+++ b/managers/SharedSonarManager.ts
@@ -4,19 +4,19 @@ import SharedConfig from '../config/SharedConfig';
 
 
 class SharedSonarManager {
-
     // Use custom instance to allow self-signed certificates
-    private instance = axios.create({
-        httpsAgent: new https.Agent({
-            rejectUnauthorized: false
-        })
-    });
+    private readonly axiosInstance = axios.create({
+                                                      httpsAgent: new https.Agent({
+                                                                                      rejectUnauthorized: false
+                                                                                  })
+                                                  });
+
     async isSonarSupported(): Promise<boolean> {
-        if (!SharedConfig.sonar.enabled) {
+        if ( !SharedConfig.sonar.enabled ) {
             return false;
         }
         try {
-            const sonar = await this.instance.get(SharedConfig.sonar.url);
+            const sonar = await this.axiosInstance.get(SharedConfig.sonar.url);
             return sonar.status == 200;
         } catch ( error ) {
             return false;
@@ -29,15 +29,16 @@ class SharedSonarManager {
      * @param language
      */
     mapLanguage(language: string): string {
-        switch (language) {
-            case "csharp":
-                return "cs";
-            case "python":
-                return "py";
+        switch ( language ) {
+            case 'csharp':
+                return 'cs';
+            case 'python':
+                return 'py';
             default:
                 return language;
         }
     }
 }
 
+
 export default new SharedSonarManager();
\ No newline at end of file
-- 
GitLab