From 660267e19c0e41aeca7a1e2de4fd03ecd1849f1a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <michael@minelli.me>
Date: Mon, 11 Dec 2023 15:29:22 +0100
Subject: [PATCH] Login => Change library for open the browser

---
 NodeApp/package-lock.json              | 41 +++++++++++++++-----------
 NodeApp/package.json                   |  3 +-
 NodeApp/src/managers/SessionManager.ts | 20 ++-----------
 3 files changed, 27 insertions(+), 37 deletions(-)

diff --git a/NodeApp/package-lock.json b/NodeApp/package-lock.json
index 79b30bd..348f49d 100644
--- a/NodeApp/package-lock.json
+++ b/NodeApp/package-lock.json
@@ -22,7 +22,7 @@
                 "inquirer": "^8.2.6",
                 "json5": "^2.2.3",
                 "jsonwebtoken": "^8.5.1",
-                "openurl": "^1.1.1",
+                "open": "^8.4.2",
                 "ora": "^5.4.1",
                 "tar-stream": "^3.1.6",
                 "winston": "^3.11.0",
@@ -36,7 +36,6 @@
                 "@types/inquirer": "^8.2.10",
                 "@types/jsonwebtoken": "^8.5.9",
                 "@types/node": "^18.19.2",
-                "@types/openurl": "^1.0.3",
                 "@types/tar-stream": "^3.1.3",
                 "@typescript-eslint/eslint-plugin": "^6.13.2",
                 "@typescript-eslint/parser": "^6.13.2",
@@ -857,15 +856,6 @@
                 "undici-types": "~5.26.4"
             }
         },
-        "node_modules/@types/openurl": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/@types/openurl/-/openurl-1.0.3.tgz",
-            "integrity": "sha512-rdWpxNve8iUBizep3BwjGzcdfk2XeXeeFiMwIgLN6dAKxCusfFC6H9XVvfPeNObRFpSgqI+HVmoG7UOB9HEnBQ==",
-            "dev": true,
-            "dependencies": {
-                "@types/node": "*"
-            }
-        },
         "node_modules/@types/semver": {
             "version": "7.5.6",
             "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz",
@@ -1719,6 +1709,14 @@
                 "url": "https://github.com/sponsors/sindresorhus"
             }
         },
+        "node_modules/define-lazy-prop": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+            "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+            "engines": {
+                "node": ">=8"
+            }
+        },
         "node_modules/delayed-stream": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -2799,7 +2797,6 @@
             "version": "2.2.1",
             "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
             "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
-            "dev": true,
             "bin": {
                 "is-docker": "cli.js"
             },
@@ -2901,7 +2898,6 @@
             "version": "2.2.0",
             "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
             "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
-            "dev": true,
             "dependencies": {
                 "is-docker": "^2.0.0"
             },
@@ -3455,10 +3451,21 @@
                 "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "node_modules/openurl": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz",
-            "integrity": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA=="
+        "node_modules/open": {
+            "version": "8.4.2",
+            "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
+            "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
+            "dependencies": {
+                "define-lazy-prop": "^2.0.0",
+                "is-docker": "^2.1.1",
+                "is-wsl": "^2.2.0"
+            },
+            "engines": {
+                "node": ">=12"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
         },
         "node_modules/optionator": {
             "version": "0.9.3",
diff --git a/NodeApp/package.json b/NodeApp/package.json
index 8fb5b0b..1b72e69 100644
--- a/NodeApp/package.json
+++ b/NodeApp/package.json
@@ -46,7 +46,7 @@
         "inquirer"         : "^8.2.6",
         "json5"            : "^2.2.3",
         "jsonwebtoken"     : "^8.5.1",
-        "openurl"          : "^1.1.1",
+        "open"             : "^8.4.2",
         "ora"              : "^5.4.1",
         "tar-stream"       : "^3.1.6",
         "winston"          : "^3.11.0",
@@ -57,7 +57,6 @@
         "@types/inquirer"                 : "^8.2.10",
         "@types/jsonwebtoken"             : "^8.5.9",
         "@types/node"                     : "^18.19.2",
-        "@types/openurl"                  : "^1.0.3",
         "@types/tar-stream"               : "^3.1.3",
         "@typescript-eslint/eslint-plugin": "^6.13.2",
         "@typescript-eslint/parser"       : "^6.13.2",
diff --git a/NodeApp/src/managers/SessionManager.ts b/NodeApp/src/managers/SessionManager.ts
index 9bbd640..208c2dd 100644
--- a/NodeApp/src/managers/SessionManager.ts
+++ b/NodeApp/src/managers/SessionManager.ts
@@ -12,7 +12,6 @@ import Config                    from '../config/Config';
 import ClientsSharedConfig       from '../sharedByClients/config/ClientsSharedConfig';
 import DojoGitlabCredentials     from '../sharedByClients/types/Dojo/DojoGitlabCredentials';
 import * as http                 from 'http';
-import * as openurl              from 'openurl';
 import EventEmitter              from 'events';
 import SharedConfig              from '../shared/config/SharedConfig';
 import chalk                     from 'chalk';
@@ -20,6 +19,7 @@ import inquirer                  from 'inquirer';
 import SharedGitlabManager       from '../shared/managers/SharedGitlabManager';
 import GitlabManager             from './GitlabManager';
 import GitlabToken               from '../shared/types/Gitlab/GitlabToken';
+import open                      from 'open';
 
 
 class LoginServer {
@@ -153,23 +153,7 @@ class SessionManager {
                                          text  : 'Waiting for user to authorize the application in his web browser',
                                          indent: 4
                                      }).start();
-                openurl.open(Config.login.gitlab.url.code, (error) => {
-                    if ( error ) {
-                        currentSpinner.warn('Error while opening the web browser. Attempting the login in CLI only mode (headless mode).');
-                        currentSpinner = ora({
-                                                 text  : 'Stopping login server',
-                                                 indent: 4
-                                             }).start();
-                        loginServer.events.on('stopped', () => {
-                            try {
-                                resolve(this.getGitlabCodeFromHeadlessEnvironment());
-                            } catch ( error ) {
-                                reject(error);
-                            }
-                        });
-                        loginServer.stop();
-                    }
-                });
+                open(Config.login.gitlab.url.code).then();
             });
             loginServer.events.on('error', (error: string) => {
                 currentSpinner.fail(`Login server error: ${ error }`);
-- 
GitLab