diff --git a/deadlock-plugins/deadlock-extension/package-lock.json b/deadlock-plugins/deadlock-extension/package-lock.json
index 8e85a2f6f144de1dcd4ffd354e6c40ac71456ece..dbdb2270345f132c406a115f17ecf9cd4e0f8978 100644
--- a/deadlock-plugins/deadlock-extension/package-lock.json
+++ b/deadlock-plugins/deadlock-extension/package-lock.json
@@ -12,8 +12,10 @@
         "async": "^3.2.2",
         "crypto-js": "^4.1.1",
         "date-fns": "^2.27.0",
+        "inversify": "^6.0.1",
         "marked": "^4.0.6",
         "node-fetch": "^3.2.3",
+        "reflect-metadata": "^0.1.13",
         "simple-git": "^2.48.0"
       },
       "devDependencies": {
@@ -2208,6 +2210,11 @@
         "node": ">= 0.10"
       }
     },
+    "node_modules/inversify": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/inversify/-/inversify-6.0.1.tgz",
+      "integrity": "sha512-B3ex30927698TJENHR++8FfEaJGqoWOgI6ZY5Ht/nLUsFCwHn6akbwtnUAPCgUepAnTpe2qHxhDNjoKLyz6rgQ=="
+    },
     "node_modules/is-core-module": {
       "version": "2.8.0",
       "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz",
@@ -3138,6 +3145,11 @@
         "node": ">= 0.10"
       }
     },
+    "node_modules/reflect-metadata": {
+      "version": "0.1.13",
+      "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
+      "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
+    },
     "node_modules/regexpp": {
       "version": "3.2.0",
       "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
@@ -5852,6 +5864,11 @@
       "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==",
       "dev": true
     },
+    "inversify": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/inversify/-/inversify-6.0.1.tgz",
+      "integrity": "sha512-B3ex30927698TJENHR++8FfEaJGqoWOgI6ZY5Ht/nLUsFCwHn6akbwtnUAPCgUepAnTpe2qHxhDNjoKLyz6rgQ=="
+    },
     "is-core-module": {
       "version": "2.8.0",
       "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz",
@@ -6578,6 +6595,11 @@
         "resolve": "^1.9.0"
       }
     },
+    "reflect-metadata": {
+      "version": "0.1.13",
+      "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
+      "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
+    },
     "regexpp": {
       "version": "3.2.0",
       "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
diff --git a/deadlock-plugins/deadlock-extension/package.json b/deadlock-plugins/deadlock-extension/package.json
index a20435897dcdd480cd9f10ff269b214b08079f8f..2e7f61460d7511588c181a60f6ac4be78c33e0e4 100644
--- a/deadlock-plugins/deadlock-extension/package.json
+++ b/deadlock-plugins/deadlock-extension/package.json
@@ -100,8 +100,10 @@
     "async": "^3.2.2",
     "crypto-js": "^4.1.1",
     "date-fns": "^2.27.0",
+    "inversify": "^6.0.1",
     "marked": "^4.0.6",
     "node-fetch": "^3.2.3",
+    "reflect-metadata": "^0.1.13",
     "simple-git": "^2.48.0"
   },
   "devDependencies": {
diff --git a/deadlock-plugins/deadlock-extension/tsconfig.json b/deadlock-plugins/deadlock-extension/tsconfig.json
index 29843480f6efe57e623824787f74700eb29db381..adaa4e495b1fd3b88482adf9b1a89fb97262fbdf 100644
--- a/deadlock-plugins/deadlock-extension/tsconfig.json
+++ b/deadlock-plugins/deadlock-extension/tsconfig.json
@@ -8,7 +8,11 @@
     "strict": true,
     "rootDir": "src",
     "noImplicitAny": false,
-    "allowJs": true
+    "allowJs": true,
+    "types": ["reflect-metadata"],
+    "moduleResolution": "node",
+    "experimentalDecorators": true,
+    "emitDecoratorMetadata": true
   },
-  "exclude": ["node_modules", ".vscode-test", "front", "out", "media"]
+  "exclude": ["node_modules", ".vscode-test", "front", "out", "media", "resources"]
 }