From a16b1bfa457994283d35416881556a0e2a4afbc5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <michael@minelli.me>
Date: Thu, 6 Jul 2023 10:05:59 +0200
Subject: [PATCH] Singletons => Change method to make singleton class

---
 NodeApp/src/commander/CommanderCommand.ts     |  2 --
 NodeApp/src/commander/enonce/EnonceCommand.ts | 22 ++++++-------------
 .../commander/enonce/EnonceCreateCommand.ts   | 16 ++------------
 .../src/commander/exercice/ExerciceCommand.ts | 14 +-----------
 .../exercice/ExerciceCreateCommand.ts         | 14 +-----------
 .../session/App/SessionAppCommand.ts          | 14 +-----------
 .../session/App/SessionAppLoginCommand.ts     | 14 +-----------
 .../session/App/SessionAppLogoutCommand.ts    | 14 +-----------
 .../session/Gitlab/SessionGitlabCommand.ts    | 14 +-----------
 .../Gitlab/SessionGitlabLoginCommand.ts       | 14 +-----------
 .../Gitlab/SessionGitlabLogoutCommand.ts      | 14 +-----------
 .../src/commander/session/SessionCommand.ts   | 14 +-----------
 .../commander/session/SessionTestCommand.ts   | 14 +-----------
 NodeApp/src/config/Config.ts                  | 14 ++----------
 NodeApp/src/config/LocalConfig.ts             | 14 +-----------
 NodeApp/src/managers/DojoBackendManager.ts    | 14 +-----------
 NodeApp/src/managers/GitlabManager.ts         | 14 +-----------
 NodeApp/src/managers/HttpManager.ts           | 14 +-----------
 NodeApp/src/managers/SessionManager.ts        | 14 +-----------
 NodeApp/src/shared                            |  2 +-
 20 files changed, 27 insertions(+), 239 deletions(-)

diff --git a/NodeApp/src/commander/CommanderCommand.ts b/NodeApp/src/commander/CommanderCommand.ts
index f4c9bea..7d2c2cc 100644
--- a/NodeApp/src/commander/CommanderCommand.ts
+++ b/NodeApp/src/commander/CommanderCommand.ts
@@ -5,8 +5,6 @@ abstract class CommanderCommand {
     protected abstract commandName: string;
     command: Command = new Command();
 
-    protected constructor() {}
-
     registerOnCommand(parent: Command) {
         this.command = parent.command(this.commandName);
 
diff --git a/NodeApp/src/commander/enonce/EnonceCommand.ts b/NodeApp/src/commander/enonce/EnonceCommand.ts
index 1594e61..dc3a5f3 100644
--- a/NodeApp/src/commander/enonce/EnonceCommand.ts
+++ b/NodeApp/src/commander/enonce/EnonceCommand.ts
@@ -1,22 +1,12 @@
-import CommanderCommand    from '../CommanderCommand';
-import EnonceCreateCommand from './EnonceCreateCommand';
+import CommanderCommand       from '../CommanderCommand';
+import EnonceCreateCommand    from './EnonceCreateCommand';
+import EnoncePublishCommand   from './EnoncePublishCommand';
+import EnonceUnpublishCommand from './EnonceUnpublishCommand';
 
 
 class EnonceCommand extends CommanderCommand {
     protected commandName: string = 'enonce';
 
-    private static _instance: EnonceCommand;
-
-    private constructor() { super(); }
-
-    public static get instance(): EnonceCommand {
-        if ( !EnonceCommand._instance ) {
-            EnonceCommand._instance = new EnonceCommand();
-        }
-
-        return EnonceCommand._instance;
-    }
-
     protected defineCommand() {
         this.command
         .description('manage an enonce');
@@ -24,10 +14,12 @@ class EnonceCommand extends CommanderCommand {
 
     protected defineSubCommands() {
         EnonceCreateCommand.registerOnCommand(this.command);
+        EnoncePublishCommand.registerOnCommand(this.command);
+        EnonceUnpublishCommand.registerOnCommand(this.command);
     }
 
     protected async commandAction(options: any): Promise<void> { }
 }
 
 
-export default EnonceCommand.instance;
\ No newline at end of file
+export default new EnonceCommand();
\ No newline at end of file
diff --git a/NodeApp/src/commander/enonce/EnonceCreateCommand.ts b/NodeApp/src/commander/enonce/EnonceCreateCommand.ts
index 537b899..2ea03fb 100644
--- a/NodeApp/src/commander/enonce/EnonceCreateCommand.ts
+++ b/NodeApp/src/commander/enonce/EnonceCreateCommand.ts
@@ -11,19 +11,7 @@ import Toolbox            from '../../shared/helpers/Toolbox';
 
 class EnonceCreateCommand extends CommanderCommand {
     protected commandName: string = 'create';
-
-    private static _instance: EnonceCreateCommand;
-
-    private constructor() { super(); }
-
-    public static get instance(): EnonceCreateCommand {
-        if ( !EnonceCreateCommand._instance ) {
-            EnonceCreateCommand._instance = new EnonceCreateCommand();
-        }
-
-        return EnonceCreateCommand._instance;
-    }
-
+    
     protected defineCommand() {
         this.command
         .description('create a new repository for an enonce')
@@ -107,4 +95,4 @@ class EnonceCreateCommand extends CommanderCommand {
 }
 
 
-export default EnonceCreateCommand.instance;
\ No newline at end of file
+export default new EnonceCreateCommand();
\ No newline at end of file
diff --git a/NodeApp/src/commander/exercice/ExerciceCommand.ts b/NodeApp/src/commander/exercice/ExerciceCommand.ts
index 7833c57..da670d4 100644
--- a/NodeApp/src/commander/exercice/ExerciceCommand.ts
+++ b/NodeApp/src/commander/exercice/ExerciceCommand.ts
@@ -5,18 +5,6 @@ import ExerciceCreateCommand from './ExerciceCreateCommand';
 class ExerciceCommand extends CommanderCommand {
     protected commandName: string = 'exercice';
 
-    private static _instance: ExerciceCommand;
-
-    private constructor() { super(); }
-
-    public static get instance(): ExerciceCommand {
-        if ( !ExerciceCommand._instance ) {
-            ExerciceCommand._instance = new ExerciceCommand();
-        }
-
-        return ExerciceCommand._instance;
-    }
-
     protected defineCommand() {
         this.command
         .description('manage an exercice');
@@ -30,4 +18,4 @@ class ExerciceCommand extends CommanderCommand {
 }
 
 
-export default ExerciceCommand.instance;
\ No newline at end of file
+export default new ExerciceCommand();
\ No newline at end of file
diff --git a/NodeApp/src/commander/exercice/ExerciceCreateCommand.ts b/NodeApp/src/commander/exercice/ExerciceCreateCommand.ts
index a3c0fdc..015b780 100644
--- a/NodeApp/src/commander/exercice/ExerciceCreateCommand.ts
+++ b/NodeApp/src/commander/exercice/ExerciceCreateCommand.ts
@@ -12,18 +12,6 @@ import Exercice           from '../../types/Exercice';
 class ExerciceCreateCommand extends CommanderCommand {
     protected commandName: string = 'create';
 
-    private static _instance: ExerciceCreateCommand;
-
-    private constructor() { super(); }
-
-    public static get instance(): ExerciceCreateCommand {
-        if ( !ExerciceCreateCommand._instance ) {
-            ExerciceCreateCommand._instance = new ExerciceCreateCommand();
-        }
-
-        return ExerciceCreateCommand._instance;
-    }
-
     protected defineCommand() {
         this.command
         .description('create a new exercice from an enonce')
@@ -111,4 +99,4 @@ class ExerciceCreateCommand extends CommanderCommand {
 }
 
 
-export default ExerciceCreateCommand.instance;
\ No newline at end of file
+export default new ExerciceCreateCommand();
\ No newline at end of file
diff --git a/NodeApp/src/commander/session/App/SessionAppCommand.ts b/NodeApp/src/commander/session/App/SessionAppCommand.ts
index 29b3f08..d0c943b 100644
--- a/NodeApp/src/commander/session/App/SessionAppCommand.ts
+++ b/NodeApp/src/commander/session/App/SessionAppCommand.ts
@@ -6,18 +6,6 @@ import SessionAppLogoutCommand from './SessionAppLogoutCommand';
 class SessionAppCommand extends CommanderCommand {
     protected commandName: string = 'application';
 
-    private static _instance: SessionAppCommand;
-
-    private constructor() { super(); }
-
-    public static get instance(): SessionAppCommand {
-        if ( !SessionAppCommand._instance ) {
-            SessionAppCommand._instance = new SessionAppCommand();
-        }
-
-        return SessionAppCommand._instance;
-    }
-
     protected defineCommand() {
         this.command
         .description('manage application session');
@@ -32,4 +20,4 @@ class SessionAppCommand extends CommanderCommand {
 }
 
 
-export default SessionAppCommand.instance;
\ No newline at end of file
+export default new SessionAppCommand();
\ No newline at end of file
diff --git a/NodeApp/src/commander/session/App/SessionAppLoginCommand.ts b/NodeApp/src/commander/session/App/SessionAppLoginCommand.ts
index 4b03d6c..514353f 100644
--- a/NodeApp/src/commander/session/App/SessionAppLoginCommand.ts
+++ b/NodeApp/src/commander/session/App/SessionAppLoginCommand.ts
@@ -7,18 +7,6 @@ import SessionManager   from '../../../managers/SessionManager';
 class SessionAppLoginCommand extends CommanderCommand {
     protected commandName: string = 'login';
 
-    private static _instance: SessionAppLoginCommand;
-
-    private constructor() { super(); }
-
-    public static get instance(): SessionAppLoginCommand {
-        if ( !SessionAppLoginCommand._instance ) {
-            SessionAppLoginCommand._instance = new SessionAppLoginCommand();
-        }
-
-        return SessionAppLoginCommand._instance;
-    }
-
     protected defineCommand() {
         this.command
         .description('login into the application')
@@ -46,4 +34,4 @@ class SessionAppLoginCommand extends CommanderCommand {
 }
 
 
-export default SessionAppLoginCommand.instance;
\ No newline at end of file
+export default new SessionAppLoginCommand();
\ No newline at end of file
diff --git a/NodeApp/src/commander/session/App/SessionAppLogoutCommand.ts b/NodeApp/src/commander/session/App/SessionAppLogoutCommand.ts
index e91555d..650440d 100644
--- a/NodeApp/src/commander/session/App/SessionAppLogoutCommand.ts
+++ b/NodeApp/src/commander/session/App/SessionAppLogoutCommand.ts
@@ -7,18 +7,6 @@ import ora              from 'ora';
 class SessionAppLogoutCommand extends CommanderCommand {
     protected commandName: string = 'logout';
 
-    private static _instance: SessionAppLogoutCommand;
-
-    private constructor() { super(); }
-
-    public static get instance(): SessionAppLogoutCommand {
-        if ( !SessionAppLogoutCommand._instance ) {
-            SessionAppLogoutCommand._instance = new SessionAppLogoutCommand();
-        }
-
-        return SessionAppLogoutCommand._instance;
-    }
-
     protected defineCommand() {
         this.command
         .description('logout of the application')
@@ -47,4 +35,4 @@ class SessionAppLogoutCommand extends CommanderCommand {
 }
 
 
-export default SessionAppLogoutCommand.instance;
\ No newline at end of file
+export default new SessionAppLogoutCommand();
\ No newline at end of file
diff --git a/NodeApp/src/commander/session/Gitlab/SessionGitlabCommand.ts b/NodeApp/src/commander/session/Gitlab/SessionGitlabCommand.ts
index 58cb860..3662faa 100644
--- a/NodeApp/src/commander/session/Gitlab/SessionGitlabCommand.ts
+++ b/NodeApp/src/commander/session/Gitlab/SessionGitlabCommand.ts
@@ -6,18 +6,6 @@ import SessionGitlabLogoutCommand from './SessionGitlabLogoutCommand';
 class SessionGitlabCommand extends CommanderCommand {
     protected commandName: string = 'gitlab';
 
-    private static _instance: SessionGitlabCommand;
-
-    private constructor() { super(); }
-
-    public static get instance(): SessionGitlabCommand {
-        if ( !SessionGitlabCommand._instance ) {
-            SessionGitlabCommand._instance = new SessionGitlabCommand();
-        }
-
-        return SessionGitlabCommand._instance;
-    }
-
     protected defineCommand() {
         this.command
         .description('manage Gitlab session');
@@ -32,4 +20,4 @@ class SessionGitlabCommand extends CommanderCommand {
 }
 
 
-export default SessionGitlabCommand.instance;
\ No newline at end of file
+export default new SessionGitlabCommand();
\ No newline at end of file
diff --git a/NodeApp/src/commander/session/Gitlab/SessionGitlabLoginCommand.ts b/NodeApp/src/commander/session/Gitlab/SessionGitlabLoginCommand.ts
index 30c9241..33ffe47 100644
--- a/NodeApp/src/commander/session/Gitlab/SessionGitlabLoginCommand.ts
+++ b/NodeApp/src/commander/session/Gitlab/SessionGitlabLoginCommand.ts
@@ -6,18 +6,6 @@ import GitlabManager    from '../../../managers/GitlabManager';
 class SessionGitlabLoginCommand extends CommanderCommand {
     protected commandName: string = 'login';
 
-    private static _instance: SessionGitlabLoginCommand;
-
-    private constructor() { super(); }
-
-    public static get instance(): SessionGitlabLoginCommand {
-        if ( !SessionGitlabLoginCommand._instance ) {
-            SessionGitlabLoginCommand._instance = new SessionGitlabLoginCommand();
-        }
-
-        return SessionGitlabLoginCommand._instance;
-    }
-
     protected defineCommand() {
         this.command
         .description('register the gitlab token')
@@ -35,4 +23,4 @@ class SessionGitlabLoginCommand extends CommanderCommand {
 }
 
 
-export default SessionGitlabLoginCommand.instance;
\ No newline at end of file
+export default new SessionGitlabLoginCommand();
\ No newline at end of file
diff --git a/NodeApp/src/commander/session/Gitlab/SessionGitlabLogoutCommand.ts b/NodeApp/src/commander/session/Gitlab/SessionGitlabLogoutCommand.ts
index edd2b24..6b86883 100644
--- a/NodeApp/src/commander/session/Gitlab/SessionGitlabLogoutCommand.ts
+++ b/NodeApp/src/commander/session/Gitlab/SessionGitlabLogoutCommand.ts
@@ -7,18 +7,6 @@ import GitlabManager    from '../../../managers/GitlabManager';
 class SessionGitlabLogoutCommand extends CommanderCommand {
     protected commandName: string = 'logout';
 
-    private static _instance: SessionGitlabLogoutCommand;
-
-    private constructor() { super(); }
-
-    public static get instance(): SessionGitlabLogoutCommand {
-        if ( !SessionGitlabLogoutCommand._instance ) {
-            SessionGitlabLogoutCommand._instance = new SessionGitlabLogoutCommand();
-        }
-
-        return SessionGitlabLogoutCommand._instance;
-    }
-
     protected defineCommand() {
         this.command
         .description('logout of Gitlab')
@@ -47,4 +35,4 @@ class SessionGitlabLogoutCommand extends CommanderCommand {
 }
 
 
-export default SessionGitlabLogoutCommand.instance;
\ No newline at end of file
+export default new SessionGitlabLogoutCommand();
\ No newline at end of file
diff --git a/NodeApp/src/commander/session/SessionCommand.ts b/NodeApp/src/commander/session/SessionCommand.ts
index 29b8a5a..c7089d6 100644
--- a/NodeApp/src/commander/session/SessionCommand.ts
+++ b/NodeApp/src/commander/session/SessionCommand.ts
@@ -7,18 +7,6 @@ import SessionGitlabCommand from './Gitlab/SessionGitlabCommand';
 class SessionCommand extends CommanderCommand {
     protected commandName: string = 'session';
 
-    private static _instance: SessionCommand;
-
-    private constructor() { super(); }
-
-    public static get instance(): SessionCommand {
-        if ( !SessionCommand._instance ) {
-            SessionCommand._instance = new SessionCommand();
-        }
-
-        return SessionCommand._instance;
-    }
-
     protected defineCommand() {
         this.command
         .description('manage Dojo and Gitlab sessions');
@@ -34,4 +22,4 @@ class SessionCommand extends CommanderCommand {
 }
 
 
-export default SessionCommand.instance;
\ No newline at end of file
+export default new SessionCommand();
\ No newline at end of file
diff --git a/NodeApp/src/commander/session/SessionTestCommand.ts b/NodeApp/src/commander/session/SessionTestCommand.ts
index 890fc03..d0ab1b6 100644
--- a/NodeApp/src/commander/session/SessionTestCommand.ts
+++ b/NodeApp/src/commander/session/SessionTestCommand.ts
@@ -6,18 +6,6 @@ import GitlabManager    from '../../managers/GitlabManager';
 class SessionTestCommand extends CommanderCommand {
     protected commandName: string = 'test';
 
-    private static _instance: SessionTestCommand;
-
-    private constructor() { super(); }
-
-    public static get instance(): SessionTestCommand {
-        if ( !SessionTestCommand._instance ) {
-            SessionTestCommand._instance = new SessionTestCommand();
-        }
-
-        return SessionTestCommand._instance;
-    }
-
     protected defineCommand() {
         this.command
         .description('test availability of registered Dojo API and Gitlab API sessions')
@@ -31,4 +19,4 @@ class SessionTestCommand extends CommanderCommand {
 }
 
 
-export default SessionTestCommand.instance;
\ No newline at end of file
+export default new SessionTestCommand();
\ No newline at end of file
diff --git a/NodeApp/src/config/Config.ts b/NodeApp/src/config/Config.ts
index fc3d3df..f65322a 100644
--- a/NodeApp/src/config/Config.ts
+++ b/NodeApp/src/config/Config.ts
@@ -2,8 +2,6 @@ import getAppDataPath from 'appdata-path';
 
 
 class Config {
-    private static _instance: Config;
-
     public apiURL: string;
 
     public gitlab: {
@@ -15,7 +13,7 @@ class Config {
         folder: string; file: string;
     };
 
-    private constructor() {
+    constructor() {
         this.apiURL = process.env.API_URL || '';
 
         this.gitlab = {
@@ -31,15 +29,7 @@ class Config {
             file  : process.env.LOCAL_CONFIG_FILE || ''
         };
     }
-
-    public static get instance(): Config {
-        if ( !Config._instance ) {
-            Config._instance = new Config();
-        }
-
-        return Config._instance;
-    }
 }
 
 
-export default Config.instance;
+export default new Config();
diff --git a/NodeApp/src/config/LocalConfig.ts b/NodeApp/src/config/LocalConfig.ts
index b150d5e..2f4ae03 100644
--- a/NodeApp/src/config/LocalConfig.ts
+++ b/NodeApp/src/config/LocalConfig.ts
@@ -7,24 +7,12 @@ import GitlabManager   from '../managers/GitlabManager';
 
 
 class LocalConfig {
-    private static _instance: LocalConfig;
-
     private get configPath(): string {
         return `${ Config.localConfig.folder }/${ Config.localConfig.file }`;
     }
 
     private _config: { [key in LocalConfigKeys]?: any } = {};
 
-    private constructor() { }
-
-    public static get instance(): LocalConfig {
-        if ( !LocalConfig._instance ) {
-            LocalConfig._instance = new LocalConfig();
-        }
-
-        return LocalConfig._instance;
-    }
-
     loadConfig() {
         if ( !fs.existsSync(this.configPath) ) {
             fs.mkdirSync(Config.localConfig.folder, { recursive: true });
@@ -56,4 +44,4 @@ class LocalConfig {
 }
 
 
-export default LocalConfig.instance;
\ No newline at end of file
+export default new LocalConfig();
\ No newline at end of file
diff --git a/NodeApp/src/managers/DojoBackendManager.ts b/NodeApp/src/managers/DojoBackendManager.ts
index 013f596..6d85b98 100644
--- a/NodeApp/src/managers/DojoBackendManager.ts
+++ b/NodeApp/src/managers/DojoBackendManager.ts
@@ -10,18 +10,6 @@ import DojoResponse          from '../shared/types/DojoResponse';
 
 
 class DojoBackendManager {
-    constructor() { }
-
-    private static _instance: DojoBackendManager;
-
-    public static get instance(): DojoBackendManager {
-        if ( !DojoBackendManager._instance ) {
-            DojoBackendManager._instance = new DojoBackendManager();
-        }
-
-        return DojoBackendManager._instance;
-    }
-
     public getApiUrl(route: ApiRoutes): string {
         return `${ Config.apiURL }${ route }`;
     }
@@ -144,4 +132,4 @@ class DojoBackendManager {
 }
 
 
-export default DojoBackendManager.instance;
+export default new DojoBackendManager();
diff --git a/NodeApp/src/managers/GitlabManager.ts b/NodeApp/src/managers/GitlabManager.ts
index 775d9c1..b2d71c7 100644
--- a/NodeApp/src/managers/GitlabManager.ts
+++ b/NodeApp/src/managers/GitlabManager.ts
@@ -10,18 +10,6 @@ import GitlabRoutes    from '../shared/types/Gitlab/GitlabRoutes';
 class GitlabManager {
     private _token: string | null = null;
 
-    constructor() { }
-
-    private static _instance: GitlabManager;
-
-    public static get instance(): GitlabManager {
-        if ( !GitlabManager._instance ) {
-            GitlabManager._instance = new GitlabManager();
-        }
-
-        return GitlabManager._instance;
-    }
-
     private getApiUrl(route: GitlabRoutes): string {
         return `${ Config.gitlab.apiURL }${ route }`;
     }
@@ -219,4 +207,4 @@ class GitlabManager {
 }
 
 
-export default GitlabManager.instance;
+export default new GitlabManager();
diff --git a/NodeApp/src/managers/HttpManager.ts b/NodeApp/src/managers/HttpManager.ts
index 1412a99..044d0e1 100644
--- a/NodeApp/src/managers/HttpManager.ts
+++ b/NodeApp/src/managers/HttpManager.ts
@@ -10,18 +10,6 @@ import { StatusCodes }                from 'http-status-codes';
 class HttpManager {
     public handleCommandErrors: boolean = true;
 
-    private static _instance: HttpManager;
-
-    public static get instance(): HttpManager {
-        if ( !HttpManager._instance ) {
-            HttpManager._instance = new HttpManager();
-        }
-
-        return HttpManager._instance;
-    }
-
-    private constructor() { }
-
     registerAxiosInterceptor() {
         this.registerRequestInterceptor();
         this.registerResponseInterceptor();
@@ -86,5 +74,5 @@ class HttpManager {
 }
 
 
-export default HttpManager.instance;
+export default new HttpManager();
 
diff --git a/NodeApp/src/managers/SessionManager.ts b/NodeApp/src/managers/SessionManager.ts
index 8ad0290..aa1420a 100644
--- a/NodeApp/src/managers/SessionManager.ts
+++ b/NodeApp/src/managers/SessionManager.ts
@@ -16,18 +16,6 @@ class SessionManager {
 
     public profile: User = new User();
 
-    constructor() { }
-
-    private static _instance: SessionManager;
-
-    public static get instance(): SessionManager {
-        if ( !SessionManager._instance ) {
-            SessionManager._instance = new SessionManager();
-        }
-
-        return SessionManager._instance;
-    }
-
     get isLogged(): boolean {
         return this._token !== null;
     }
@@ -140,4 +128,4 @@ class SessionManager {
 }
 
 
-export default SessionManager.instance;
+export default new SessionManager();
diff --git a/NodeApp/src/shared b/NodeApp/src/shared
index 0328c67..f20c94b 160000
--- a/NodeApp/src/shared
+++ b/NodeApp/src/shared
@@ -1 +1 @@
-Subproject commit 0328c67fd0cade4b51fbf82afc7a07a7d16abe5d
+Subproject commit f20c94b884f7ab76936b059b712274a35fcc6318
-- 
GitLab