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