From eb1ea207cbb641b5a09b21dcfd9bbdabca6f2228 Mon Sep 17 00:00:00 2001
From: Lansana DIOMANDE <ldiomande@takima.fr>
Date: Wed, 30 Mar 2022 17:26:57 +0200
Subject: [PATCH] feat: add uri handler

---
 .../deadlock-extension/.prettierrc.json       |   8 +
 deadlock-plugins/deadlock-extension/README.md |  12 +-
 .../deadlock-extension/package-lock.json      | 368 ++----------------
 .../deadlock-extension/src/core/controller.ts |   9 +
 .../deadlock-extension/src/extension.ts       |  17 +
 .../src/theia/deadlockPanel.ts                |   2 +-
 .../src/view/webviewBase.ts                   |   2 +-
 7 files changed, 66 insertions(+), 352 deletions(-)
 create mode 100644 deadlock-plugins/deadlock-extension/.prettierrc.json
 create mode 100644 deadlock-plugins/deadlock-extension/src/core/controller.ts

diff --git a/deadlock-plugins/deadlock-extension/.prettierrc.json b/deadlock-plugins/deadlock-extension/.prettierrc.json
new file mode 100644
index 00000000..7c8ac058
--- /dev/null
+++ b/deadlock-plugins/deadlock-extension/.prettierrc.json
@@ -0,0 +1,8 @@
+{
+	"tabWidth": 2,
+	"semi": true,
+	"trailingComma": "all",
+	"singleQuote": true,
+	"printWidth": 120,
+	"useTabs": true
+}
diff --git a/deadlock-plugins/deadlock-extension/README.md b/deadlock-plugins/deadlock-extension/README.md
index c24101e2..f7d2e1b8 100644
--- a/deadlock-plugins/deadlock-extension/README.md
+++ b/deadlock-plugins/deadlock-extension/README.md
@@ -2,14 +2,14 @@
 
 Vscode extension to show a panel with :
 
-- adresses availables for the current challenge pulled from `/home/config/user-challenge.json`
-- challenge instruction pulled from the `README.md`
+-   adresses availables for the current challenge pulled from `/home/config/user-challenge.json`
+-   challenge instruction pulled from the `README.md`
 
 ## Quick start
 
-- Run `setup-dev-env.sh` to mock challenge configuration
-- Run `install.sh`
-- Run `build.sh`
-- Press `F5` (or use `Run and Debug` tab).
+-   Run `setup-dev-env.sh` to mock challenge configuration
+-   Run `install.sh`
+-   Run `build.sh`
+-   Press `F5` (or use `Run and Debug` tab).
 
 If something goes wrong, you may need to kill watch Task terminal between restarts.
diff --git a/deadlock-plugins/deadlock-extension/package-lock.json b/deadlock-plugins/deadlock-extension/package-lock.json
index f9cf5f83..731a6293 100644
--- a/deadlock-plugins/deadlock-extension/package-lock.json
+++ b/deadlock-plugins/deadlock-extension/package-lock.json
@@ -152,28 +152,28 @@
 			"integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw=="
 		},
 		"node_modules/@microsoft/fast-element": {
-			"version": "1.8.0",
-			"resolved": "https://registry.npmjs.org/@microsoft/fast-element/-/fast-element-1.8.0.tgz",
-			"integrity": "sha512-92GhkCYcay+vcI2yE+P1yD+v59u8Thprmaqg9PgTstf8jLOrevW/6Hna76tMioQQOFtZ8wm2NiiMHD/4sjrfhQ=="
+			"version": "1.9.0",
+			"resolved": "https://registry.npmjs.org/@microsoft/fast-element/-/fast-element-1.9.0.tgz",
+			"integrity": "sha512-VxDwoLEEQRRxXfLOB5Llzha9WWvjVJHZFHNE1mn2s1QV5IAkOhrYrhFe9vzv50eI6CqazChDyHDy1km3+rn0wg=="
 		},
 		"node_modules/@microsoft/fast-foundation": {
-			"version": "2.40.0",
-			"resolved": "https://registry.npmjs.org/@microsoft/fast-foundation/-/fast-foundation-2.40.0.tgz",
-			"integrity": "sha512-9P9GLxAcRDqGq83AmBL2ZHaiOPGBwsFHtWqzZYq4WO3RWmuXncGA4wN/DkJjx5OPpJl7FC9Z+yJus/2uiRTyFQ==",
+			"version": "2.41.1",
+			"resolved": "https://registry.npmjs.org/@microsoft/fast-foundation/-/fast-foundation-2.41.1.tgz",
+			"integrity": "sha512-q3t43CVsYrLeBbmiY6+GvV0/uUqnz7anmagD8qMBpHIpC6XpEERGBNbyC6AxQrRoBrYBFFhBJRTPn7vCqi4iPA==",
 			"dependencies": {
-				"@microsoft/fast-element": "^1.8.0",
+				"@microsoft/fast-element": "^1.9.0",
 				"@microsoft/fast-web-utilities": "^5.2.0",
 				"tabbable": "^5.2.0",
 				"tslib": "^1.13.0"
 			}
 		},
 		"node_modules/@microsoft/fast-react-wrapper": {
-			"version": "0.1.46",
-			"resolved": "https://registry.npmjs.org/@microsoft/fast-react-wrapper/-/fast-react-wrapper-0.1.46.tgz",
-			"integrity": "sha512-lu9FnXCokoSCP9jsSgn9a24M8mX3rvW+x553O1P29GXslhPFu9YWL0u4WHERTFP+kVez1nBm2Xc2GaOlnWy2QA==",
+			"version": "0.1.48",
+			"resolved": "https://registry.npmjs.org/@microsoft/fast-react-wrapper/-/fast-react-wrapper-0.1.48.tgz",
+			"integrity": "sha512-9NvEjru9Kn5ZKjomAMX6v+eF0DR+eDkxKDwDfi+Wb73kTbrNzcnmlwd4diN15ygH97kldgj2+lpvI4CKLQQWLg==",
 			"dependencies": {
-				"@microsoft/fast-element": "^1.8.0",
-				"@microsoft/fast-foundation": "^2.40.0"
+				"@microsoft/fast-element": "^1.9.0",
+				"@microsoft/fast-foundation": "^2.41.1"
 			},
 			"peerDependencies": {
 				"react": ">=16.9.0"
@@ -1384,84 +1384,6 @@
 				"esbuild-windows-arm64": "0.14.2"
 			}
 		},
-		"node_modules/esbuild-android-arm64": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.2.tgz",
-			"integrity": "sha512-hEixaKMN3XXCkoe+0WcexO4CcBVU5DCSUT+7P8JZiWZCbAjSkc9b6Yz2X5DSfQmRCtI/cQRU6TfMYrMQ5NBfdw==",
-			"cpu": [
-				"arm64"
-			],
-			"dev": true,
-			"optional": true,
-			"os": [
-				"android"
-			]
-		},
-		"node_modules/esbuild-darwin-64": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.2.tgz",
-			"integrity": "sha512-Uq8t0cbJQkxkQdbUfOl2wZqZ/AtLZjvJulR1HHnc96UgyzG9YlCLSDMiqjM+NANEy7/zzvwKJsy3iNC9wwqLJA==",
-			"cpu": [
-				"x64"
-			],
-			"dev": true,
-			"optional": true,
-			"os": [
-				"darwin"
-			]
-		},
-		"node_modules/esbuild-darwin-arm64": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.2.tgz",
-			"integrity": "sha512-619MSa17sr7YCIrUj88KzQu2ESA4jKYtIYfLU/smX6qNgxQt3Y/gzM4s6sgJ4fPQzirvmXgcHv1ZNQAs/Xh48A==",
-			"cpu": [
-				"arm64"
-			],
-			"dev": true,
-			"optional": true,
-			"os": [
-				"darwin"
-			]
-		},
-		"node_modules/esbuild-freebsd-64": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.2.tgz",
-			"integrity": "sha512-aP6FE/ZsChZpUV6F3HE3x1Pz0paoYXycJ7oLt06g0G9dhJKknPawXCqQg/WMyD+ldCEZfo7F1kavenPdIT/SGQ==",
-			"cpu": [
-				"x64"
-			],
-			"dev": true,
-			"optional": true,
-			"os": [
-				"freebsd"
-			]
-		},
-		"node_modules/esbuild-freebsd-arm64": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.2.tgz",
-			"integrity": "sha512-LSm98WTb1QIhyS83+Po0KTpZNdd2XpVpI9ua5rLWqKWbKeNRFwOsjeiuwBaRNc+O32s9oC2ZMefETxHBV6VNkQ==",
-			"cpu": [
-				"arm64"
-			],
-			"dev": true,
-			"optional": true,
-			"os": [
-				"freebsd"
-			]
-		},
-		"node_modules/esbuild-linux-32": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.2.tgz",
-			"integrity": "sha512-8VxnNEyeUbiGflTKcuVc5JEPTqXfsx2O6ABwUbfS1Hp26lYPRPC7pKQK5Dxa0MBejGc50jy7YZae3EGQUQ8EkQ==",
-			"cpu": [
-				"ia32"
-			],
-			"dev": true,
-			"optional": true,
-			"os": [
-				"linux"
-			]
-		},
 		"node_modules/esbuild-linux-64": {
 			"version": "0.14.2",
 			"resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.2.tgz",
@@ -1475,136 +1397,6 @@
 				"linux"
 			]
 		},
-		"node_modules/esbuild-linux-arm": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.2.tgz",
-			"integrity": "sha512-PaylahvMHhH8YMfJPMKEqi64qA0Su+d4FNfHKvlKes/2dUe4QxgbwXT9oLVgy8iJdcFMrO7By4R8fS8S0p8aVQ==",
-			"cpu": [
-				"arm"
-			],
-			"dev": true,
-			"optional": true,
-			"os": [
-				"linux"
-			]
-		},
-		"node_modules/esbuild-linux-arm64": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.2.tgz",
-			"integrity": "sha512-RlIVp0RwJrdtasDF1vTFueLYZ8WuFzxoQ1OoRFZOTyJHCGCNgh7xJIC34gd7B7+RT0CzLBB4LcM5n0LS+hIoww==",
-			"cpu": [
-				"arm64"
-			],
-			"dev": true,
-			"optional": true,
-			"os": [
-				"linux"
-			]
-		},
-		"node_modules/esbuild-linux-mips64le": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.2.tgz",
-			"integrity": "sha512-Fdwrq2roFnO5oetIiUQQueZ3+5soCxBSJswg3MvYaXDomj47BN6oAWMZgLrFh1oVrtWrxSDLCJBenYdbm2s+qQ==",
-			"cpu": [
-				"mips64el"
-			],
-			"dev": true,
-			"optional": true,
-			"os": [
-				"linux"
-			]
-		},
-		"node_modules/esbuild-linux-ppc64le": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.2.tgz",
-			"integrity": "sha512-vxptskw8JfCDD9QqpRO0XnsM1osuWeRjPaXX1TwdveLogYsbdFtcuiuK/4FxGiNMUr1ojtnCS2rMPbY8puc5NA==",
-			"cpu": [
-				"ppc64"
-			],
-			"dev": true,
-			"optional": true,
-			"os": [
-				"linux"
-			]
-		},
-		"node_modules/esbuild-netbsd-64": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.2.tgz",
-			"integrity": "sha512-I8+LzYK5iSNpspS9eCV9sW67Rj8FgMHimGri4mKiGAmN0pNfx+hFX146rYtzGtewuxKtTsPywWteHx+hPRLDsw==",
-			"cpu": [
-				"x64"
-			],
-			"dev": true,
-			"optional": true,
-			"os": [
-				"netbsd"
-			]
-		},
-		"node_modules/esbuild-openbsd-64": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.2.tgz",
-			"integrity": "sha512-120HgMe9elidWUvM2E6mMf0csrGwx8sYDqUIJugyMy1oHm+/nT08bTAVXuwYG/rkMIqsEO9AlMxuYnwR6En/3Q==",
-			"cpu": [
-				"x64"
-			],
-			"dev": true,
-			"optional": true,
-			"os": [
-				"openbsd"
-			]
-		},
-		"node_modules/esbuild-sunos-64": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.2.tgz",
-			"integrity": "sha512-Q3xcf9Uyfra9UuCFxoLixVvdigo0daZaKJ97TL2KNA4bxRUPK18wwGUk3AxvgDQZpRmg82w9PnkaNYo7a+24ow==",
-			"cpu": [
-				"x64"
-			],
-			"dev": true,
-			"optional": true,
-			"os": [
-				"sunos"
-			]
-		},
-		"node_modules/esbuild-windows-32": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.2.tgz",
-			"integrity": "sha512-TW7O49tPsrq+N1sW8mb3m24j/iDGa4xzAZH4wHWwoIzgtZAYPKC0hpIhufRRG/LA30bdMChO9pjJZ5mtcybtBQ==",
-			"cpu": [
-				"ia32"
-			],
-			"dev": true,
-			"optional": true,
-			"os": [
-				"win32"
-			]
-		},
-		"node_modules/esbuild-windows-64": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.2.tgz",
-			"integrity": "sha512-Rym6ViMNmi1E2QuQMWy0AFAfdY0wGwZD73BnzlsQBX5hZBuy/L+Speh7ucUZ16gwsrMM9v86icZUDrSN/lNBKg==",
-			"cpu": [
-				"x64"
-			],
-			"dev": true,
-			"optional": true,
-			"os": [
-				"win32"
-			]
-		},
-		"node_modules/esbuild-windows-arm64": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.2.tgz",
-			"integrity": "sha512-ZrLbhr0vX5Em/P1faMnHucjVVWPS+m3tktAtz93WkMZLmbRJevhiW1y4CbulBd2z0MEdXZ6emDa1zFHq5O5bSA==",
-			"cpu": [
-				"arm64"
-			],
-			"dev": true,
-			"optional": true,
-			"os": [
-				"win32"
-			]
-		},
 		"node_modules/escalade": {
 			"version": "3.1.1",
 			"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
@@ -4349,28 +4141,28 @@
 			"integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw=="
 		},
 		"@microsoft/fast-element": {
-			"version": "1.8.0",
-			"resolved": "https://registry.npmjs.org/@microsoft/fast-element/-/fast-element-1.8.0.tgz",
-			"integrity": "sha512-92GhkCYcay+vcI2yE+P1yD+v59u8Thprmaqg9PgTstf8jLOrevW/6Hna76tMioQQOFtZ8wm2NiiMHD/4sjrfhQ=="
+			"version": "1.9.0",
+			"resolved": "https://registry.npmjs.org/@microsoft/fast-element/-/fast-element-1.9.0.tgz",
+			"integrity": "sha512-VxDwoLEEQRRxXfLOB5Llzha9WWvjVJHZFHNE1mn2s1QV5IAkOhrYrhFe9vzv50eI6CqazChDyHDy1km3+rn0wg=="
 		},
 		"@microsoft/fast-foundation": {
-			"version": "2.40.0",
-			"resolved": "https://registry.npmjs.org/@microsoft/fast-foundation/-/fast-foundation-2.40.0.tgz",
-			"integrity": "sha512-9P9GLxAcRDqGq83AmBL2ZHaiOPGBwsFHtWqzZYq4WO3RWmuXncGA4wN/DkJjx5OPpJl7FC9Z+yJus/2uiRTyFQ==",
+			"version": "2.41.1",
+			"resolved": "https://registry.npmjs.org/@microsoft/fast-foundation/-/fast-foundation-2.41.1.tgz",
+			"integrity": "sha512-q3t43CVsYrLeBbmiY6+GvV0/uUqnz7anmagD8qMBpHIpC6XpEERGBNbyC6AxQrRoBrYBFFhBJRTPn7vCqi4iPA==",
 			"requires": {
-				"@microsoft/fast-element": "^1.8.0",
+				"@microsoft/fast-element": "^1.9.0",
 				"@microsoft/fast-web-utilities": "^5.2.0",
 				"tabbable": "^5.2.0",
 				"tslib": "^1.13.0"
 			}
 		},
 		"@microsoft/fast-react-wrapper": {
-			"version": "0.1.46",
-			"resolved": "https://registry.npmjs.org/@microsoft/fast-react-wrapper/-/fast-react-wrapper-0.1.46.tgz",
-			"integrity": "sha512-lu9FnXCokoSCP9jsSgn9a24M8mX3rvW+x553O1P29GXslhPFu9YWL0u4WHERTFP+kVez1nBm2Xc2GaOlnWy2QA==",
+			"version": "0.1.48",
+			"resolved": "https://registry.npmjs.org/@microsoft/fast-react-wrapper/-/fast-react-wrapper-0.1.48.tgz",
+			"integrity": "sha512-9NvEjru9Kn5ZKjomAMX6v+eF0DR+eDkxKDwDfi+Wb73kTbrNzcnmlwd4diN15ygH97kldgj2+lpvI4CKLQQWLg==",
 			"requires": {
-				"@microsoft/fast-element": "^1.8.0",
-				"@microsoft/fast-foundation": "^2.40.0"
+				"@microsoft/fast-element": "^1.9.0",
+				"@microsoft/fast-foundation": "^2.41.1"
 			}
 		},
 		"@microsoft/fast-web-utilities": {
@@ -5298,48 +5090,6 @@
 				"esbuild-windows-arm64": "0.14.2"
 			}
 		},
-		"esbuild-android-arm64": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.2.tgz",
-			"integrity": "sha512-hEixaKMN3XXCkoe+0WcexO4CcBVU5DCSUT+7P8JZiWZCbAjSkc9b6Yz2X5DSfQmRCtI/cQRU6TfMYrMQ5NBfdw==",
-			"dev": true,
-			"optional": true
-		},
-		"esbuild-darwin-64": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.2.tgz",
-			"integrity": "sha512-Uq8t0cbJQkxkQdbUfOl2wZqZ/AtLZjvJulR1HHnc96UgyzG9YlCLSDMiqjM+NANEy7/zzvwKJsy3iNC9wwqLJA==",
-			"dev": true,
-			"optional": true
-		},
-		"esbuild-darwin-arm64": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.2.tgz",
-			"integrity": "sha512-619MSa17sr7YCIrUj88KzQu2ESA4jKYtIYfLU/smX6qNgxQt3Y/gzM4s6sgJ4fPQzirvmXgcHv1ZNQAs/Xh48A==",
-			"dev": true,
-			"optional": true
-		},
-		"esbuild-freebsd-64": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.2.tgz",
-			"integrity": "sha512-aP6FE/ZsChZpUV6F3HE3x1Pz0paoYXycJ7oLt06g0G9dhJKknPawXCqQg/WMyD+ldCEZfo7F1kavenPdIT/SGQ==",
-			"dev": true,
-			"optional": true
-		},
-		"esbuild-freebsd-arm64": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.2.tgz",
-			"integrity": "sha512-LSm98WTb1QIhyS83+Po0KTpZNdd2XpVpI9ua5rLWqKWbKeNRFwOsjeiuwBaRNc+O32s9oC2ZMefETxHBV6VNkQ==",
-			"dev": true,
-			"optional": true
-		},
-		"esbuild-linux-32": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.2.tgz",
-			"integrity": "sha512-8VxnNEyeUbiGflTKcuVc5JEPTqXfsx2O6ABwUbfS1Hp26lYPRPC7pKQK5Dxa0MBejGc50jy7YZae3EGQUQ8EkQ==",
-			"dev": true,
-			"optional": true
-		},
 		"esbuild-linux-64": {
 			"version": "0.14.2",
 			"resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.2.tgz",
@@ -5347,76 +5097,6 @@
 			"dev": true,
 			"optional": true
 		},
-		"esbuild-linux-arm": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.2.tgz",
-			"integrity": "sha512-PaylahvMHhH8YMfJPMKEqi64qA0Su+d4FNfHKvlKes/2dUe4QxgbwXT9oLVgy8iJdcFMrO7By4R8fS8S0p8aVQ==",
-			"dev": true,
-			"optional": true
-		},
-		"esbuild-linux-arm64": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.2.tgz",
-			"integrity": "sha512-RlIVp0RwJrdtasDF1vTFueLYZ8WuFzxoQ1OoRFZOTyJHCGCNgh7xJIC34gd7B7+RT0CzLBB4LcM5n0LS+hIoww==",
-			"dev": true,
-			"optional": true
-		},
-		"esbuild-linux-mips64le": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.2.tgz",
-			"integrity": "sha512-Fdwrq2roFnO5oetIiUQQueZ3+5soCxBSJswg3MvYaXDomj47BN6oAWMZgLrFh1oVrtWrxSDLCJBenYdbm2s+qQ==",
-			"dev": true,
-			"optional": true
-		},
-		"esbuild-linux-ppc64le": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.2.tgz",
-			"integrity": "sha512-vxptskw8JfCDD9QqpRO0XnsM1osuWeRjPaXX1TwdveLogYsbdFtcuiuK/4FxGiNMUr1ojtnCS2rMPbY8puc5NA==",
-			"dev": true,
-			"optional": true
-		},
-		"esbuild-netbsd-64": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.2.tgz",
-			"integrity": "sha512-I8+LzYK5iSNpspS9eCV9sW67Rj8FgMHimGri4mKiGAmN0pNfx+hFX146rYtzGtewuxKtTsPywWteHx+hPRLDsw==",
-			"dev": true,
-			"optional": true
-		},
-		"esbuild-openbsd-64": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.2.tgz",
-			"integrity": "sha512-120HgMe9elidWUvM2E6mMf0csrGwx8sYDqUIJugyMy1oHm+/nT08bTAVXuwYG/rkMIqsEO9AlMxuYnwR6En/3Q==",
-			"dev": true,
-			"optional": true
-		},
-		"esbuild-sunos-64": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.2.tgz",
-			"integrity": "sha512-Q3xcf9Uyfra9UuCFxoLixVvdigo0daZaKJ97TL2KNA4bxRUPK18wwGUk3AxvgDQZpRmg82w9PnkaNYo7a+24ow==",
-			"dev": true,
-			"optional": true
-		},
-		"esbuild-windows-32": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.2.tgz",
-			"integrity": "sha512-TW7O49tPsrq+N1sW8mb3m24j/iDGa4xzAZH4wHWwoIzgtZAYPKC0hpIhufRRG/LA30bdMChO9pjJZ5mtcybtBQ==",
-			"dev": true,
-			"optional": true
-		},
-		"esbuild-windows-64": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.2.tgz",
-			"integrity": "sha512-Rym6ViMNmi1E2QuQMWy0AFAfdY0wGwZD73BnzlsQBX5hZBuy/L+Speh7ucUZ16gwsrMM9v86icZUDrSN/lNBKg==",
-			"dev": true,
-			"optional": true
-		},
-		"esbuild-windows-arm64": {
-			"version": "0.14.2",
-			"resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.2.tgz",
-			"integrity": "sha512-ZrLbhr0vX5Em/P1faMnHucjVVWPS+m3tktAtz93WkMZLmbRJevhiW1y4CbulBd2z0MEdXZ6emDa1zFHq5O5bSA==",
-			"dev": true,
-			"optional": true
-		},
 		"escalade": {
 			"version": "3.1.1",
 			"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
diff --git a/deadlock-plugins/deadlock-extension/src/core/controller.ts b/deadlock-plugins/deadlock-extension/src/core/controller.ts
new file mode 100644
index 00000000..6fd9cdfb
--- /dev/null
+++ b/deadlock-plugins/deadlock-extension/src/core/controller.ts
@@ -0,0 +1,9 @@
+import * as vscode from 'vscode';
+
+export default class Controller {
+	static launchMission(missionId: string | null) {
+		if (missionId) {
+			vscode.window.showInformationMessage(`vous lancez la mission ${missionId}`);
+		}
+	}
+}
diff --git a/deadlock-plugins/deadlock-extension/src/extension.ts b/deadlock-plugins/deadlock-extension/src/extension.ts
index 141eab4e..9682ef90 100644
--- a/deadlock-plugins/deadlock-extension/src/extension.ts
+++ b/deadlock-plugins/deadlock-extension/src/extension.ts
@@ -1,6 +1,7 @@
 import * as vscode from 'vscode';
 import { CommandHandler } from './core/commandHandler';
 import { SERVICES_PATHS_PATH } from './core/config';
+import Controller from './core/controller';
 import ExtensionStore from './core/extensionStore';
 import MetadataProvider from './core/metadataProvider';
 import { error } from './recorder/utils';
@@ -24,6 +25,22 @@ export async function activate(context: vscode.ExtensionContext) {
 	vscode.window.showInformationMessage('Bienvenue sur Deadlock!');
 	ExtensionStore.createInstance(context);
 
+	vscode.window.registerUriHandler({
+		handleUri(uri: vscode.Uri) {
+			const queryParams: URLSearchParams = new URLSearchParams(uri.query);
+			const action: string | null = queryParams.get('action');
+
+			switch (action) {
+				case 'open-challenge':
+					Controller.launchMission(queryParams.get('missionId'));
+					break;
+
+				default:
+					vscode.window.showInformationMessage('Aucune action trouvée!');
+			}
+		},
+	});
+
 	try {
 		await userConfig.init();
 	} catch (e) {
diff --git a/deadlock-plugins/deadlock-extension/src/theia/deadlockPanel.ts b/deadlock-plugins/deadlock-extension/src/theia/deadlockPanel.ts
index 782e717c..7a4ee0f2 100644
--- a/deadlock-plugins/deadlock-extension/src/theia/deadlockPanel.ts
+++ b/deadlock-plugins/deadlock-extension/src/theia/deadlockPanel.ts
@@ -1,5 +1,5 @@
-import * as vscode from 'vscode';
 import * as path from 'path';
+import * as vscode from 'vscode';
 import { TreeItemCollapsibleState } from 'vscode';
 import { OPEN_BRIEFING_COMMAND } from './command';
 
diff --git a/deadlock-plugins/deadlock-extension/src/view/webviewBase.ts b/deadlock-plugins/deadlock-extension/src/view/webviewBase.ts
index 8f2c5f9f..213f99c0 100644
--- a/deadlock-plugins/deadlock-extension/src/view/webviewBase.ts
+++ b/deadlock-plugins/deadlock-extension/src/view/webviewBase.ts
@@ -2,12 +2,12 @@
 import {
 	commands,
 	Disposable,
+	Uri,
 	ViewColumn,
 	Webview,
 	WebviewPanel,
 	WebviewPanelOnDidChangeViewStateEvent,
 	window,
-	Uri,
 } from 'vscode';
 import { Command } from '../theia/command';
 
-- 
GitLab