From 7f318adc157e9923e4d0220c557977cf89255987 Mon Sep 17 00:00:00 2001
From: Surbhi-sharma1 <surbhi.sharma1@sourcefuse.com>
Date: Wed, 31 Jul 2024 16:54:38 +0530
Subject: [PATCH] fix(payment-service): fix payment service issues

fix payment service issues

BREAKING CHANGE:
Added mandatory authentication and authorization checks to API endpoints

GH-2138
---
 package-lock.json                             | 1569 ++++++++++-------
 services/payment-service/README.md            |   22 +-
 services/payment-service/openapi.json         |   75 +-
 services/payment-service/openapi.md           |  121 +-
 services/payment-service/src/component.ts     |    3 +-
 .../subscriptions-transactions.controller.ts  |   11 +-
 .../transactions-subscriptions.controller.ts  |   14 +-
 .../controllers/transactions.controller.ts    |  146 +-
 .../src/enums/response.enum.ts                |    4 +-
 .../paypal/paypal-provider.service.ts         |   13 +-
 .../providers/razorpay/razorpay.provider.ts   |   10 +-
 .../src/providers/stripe/stripe.provider.ts   |    6 +-
 12 files changed, 1342 insertions(+), 652 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index ea6f6b085c..b056416622 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -398,17 +398,17 @@
       }
     },
     "node_modules/@aws-sdk/client-s3": {
-      "version": "3.629.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.629.0.tgz",
-      "integrity": "sha512-Q0YXKdUA7NboPl94JOKD4clHHuERG1Kwy0JPbU+3Hvmz/UuwUGBmlfaRAqd9y4LXsTv/2xKtFPW9R+nBfy9mwA==",
+      "version": "3.633.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.633.0.tgz",
+      "integrity": "sha512-KPwNGlZlCRUADNTvwPJmvDvlh8N/jxjcv5e71M/mWxLXwSPdlHlRjVSBL1/CPSXUr86XRAsPL+BCRkdiytUhbg==",
       "dependencies": {
         "@aws-crypto/sha1-browser": "5.2.0",
         "@aws-crypto/sha256-browser": "5.2.0",
         "@aws-crypto/sha256-js": "5.2.0",
-        "@aws-sdk/client-sso-oidc": "3.629.0",
-        "@aws-sdk/client-sts": "3.629.0",
+        "@aws-sdk/client-sso-oidc": "3.632.0",
+        "@aws-sdk/client-sts": "3.632.0",
         "@aws-sdk/core": "3.629.0",
-        "@aws-sdk/credential-provider-node": "3.629.0",
+        "@aws-sdk/credential-provider-node": "3.632.0",
         "@aws-sdk/middleware-bucket-endpoint": "3.620.0",
         "@aws-sdk/middleware-expect-continue": "3.620.0",
         "@aws-sdk/middleware-flexible-checksums": "3.620.0",
@@ -416,13 +416,13 @@
         "@aws-sdk/middleware-location-constraint": "3.609.0",
         "@aws-sdk/middleware-logger": "3.609.0",
         "@aws-sdk/middleware-recursion-detection": "3.620.0",
-        "@aws-sdk/middleware-sdk-s3": "3.629.0",
+        "@aws-sdk/middleware-sdk-s3": "3.633.0",
         "@aws-sdk/middleware-ssec": "3.609.0",
-        "@aws-sdk/middleware-user-agent": "3.620.0",
+        "@aws-sdk/middleware-user-agent": "3.632.0",
         "@aws-sdk/region-config-resolver": "3.614.0",
-        "@aws-sdk/signature-v4-multi-region": "3.629.0",
+        "@aws-sdk/signature-v4-multi-region": "3.633.0",
         "@aws-sdk/types": "3.609.0",
-        "@aws-sdk/util-endpoints": "3.614.0",
+        "@aws-sdk/util-endpoints": "3.632.0",
         "@aws-sdk/util-user-agent-browser": "3.609.0",
         "@aws-sdk/util-user-agent-node": "3.614.0",
         "@aws-sdk/xml-builder": "3.609.0",
@@ -466,9 +466,9 @@
       }
     },
     "node_modules/@aws-sdk/client-sso": {
-      "version": "3.629.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.629.0.tgz",
-      "integrity": "sha512-2w8xU4O0Grca5HmT2dXZ5fF0g39RxODtmoqHJDsK5DSt750LqDG4w3ktmBvQs3+SrpkkJOjlX5v/hb2PCxVbww==",
+      "version": "3.632.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.632.0.tgz",
+      "integrity": "sha512-iYWHiKBz44m3chCFvtvHnvCpL2rALzyr1e6tOZV3dLlOKtQtDUlPy6OtnXDu4y+wyJCniy8ivG3+LAe4klzn1Q==",
       "dependencies": {
         "@aws-crypto/sha256-browser": "5.2.0",
         "@aws-crypto/sha256-js": "5.2.0",
@@ -476,10 +476,10 @@
         "@aws-sdk/middleware-host-header": "3.620.0",
         "@aws-sdk/middleware-logger": "3.609.0",
         "@aws-sdk/middleware-recursion-detection": "3.620.0",
-        "@aws-sdk/middleware-user-agent": "3.620.0",
+        "@aws-sdk/middleware-user-agent": "3.632.0",
         "@aws-sdk/region-config-resolver": "3.614.0",
         "@aws-sdk/types": "3.609.0",
-        "@aws-sdk/util-endpoints": "3.614.0",
+        "@aws-sdk/util-endpoints": "3.632.0",
         "@aws-sdk/util-user-agent-browser": "3.609.0",
         "@aws-sdk/util-user-agent-node": "3.614.0",
         "@smithy/config-resolver": "^3.0.5",
@@ -514,21 +514,21 @@
       }
     },
     "node_modules/@aws-sdk/client-sso-oidc": {
-      "version": "3.629.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.629.0.tgz",
-      "integrity": "sha512-3if0LauNJPqubGYf8vnlkp+B3yAeKRuRNxfNbHlE6l510xWGcKK/ZsEmiFmfePzKKSRrDh/cxMFMScgOrXptNg==",
+      "version": "3.632.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.632.0.tgz",
+      "integrity": "sha512-Oh1fIWaoZluihOCb/zDEpRTi+6an82fgJz7fyRBugyLhEtDjmvpCQ3oKjzaOhoN+4EvXAm1ZS/ZgpvXBlIRTgw==",
       "dependencies": {
         "@aws-crypto/sha256-browser": "5.2.0",
         "@aws-crypto/sha256-js": "5.2.0",
         "@aws-sdk/core": "3.629.0",
-        "@aws-sdk/credential-provider-node": "3.629.0",
+        "@aws-sdk/credential-provider-node": "3.632.0",
         "@aws-sdk/middleware-host-header": "3.620.0",
         "@aws-sdk/middleware-logger": "3.609.0",
         "@aws-sdk/middleware-recursion-detection": "3.620.0",
-        "@aws-sdk/middleware-user-agent": "3.620.0",
+        "@aws-sdk/middleware-user-agent": "3.632.0",
         "@aws-sdk/region-config-resolver": "3.614.0",
         "@aws-sdk/types": "3.609.0",
-        "@aws-sdk/util-endpoints": "3.614.0",
+        "@aws-sdk/util-endpoints": "3.632.0",
         "@aws-sdk/util-user-agent-browser": "3.609.0",
         "@aws-sdk/util-user-agent-node": "3.614.0",
         "@smithy/config-resolver": "^3.0.5",
@@ -562,26 +562,26 @@
         "node": ">=16.0.0"
       },
       "peerDependencies": {
-        "@aws-sdk/client-sts": "^3.629.0"
+        "@aws-sdk/client-sts": "^3.632.0"
       }
     },
     "node_modules/@aws-sdk/client-sts": {
-      "version": "3.629.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.629.0.tgz",
-      "integrity": "sha512-RjOs371YwnSVGxhPjuluJKaxl4gcPYTAky0nPjwBime0i9/iS9nI8R8l5j7k7ec9tpFWjBPvNnThCU07pvjdzw==",
+      "version": "3.632.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.632.0.tgz",
+      "integrity": "sha512-Ss5cBH09icpTvT+jtGGuQlRdwtO7RyE9BF4ZV/CEPATdd9whtJt4Qxdya8BUnkWR7h5HHTrQHqai3YVYjku41A==",
       "dependencies": {
         "@aws-crypto/sha256-browser": "5.2.0",
         "@aws-crypto/sha256-js": "5.2.0",
-        "@aws-sdk/client-sso-oidc": "3.629.0",
+        "@aws-sdk/client-sso-oidc": "3.632.0",
         "@aws-sdk/core": "3.629.0",
-        "@aws-sdk/credential-provider-node": "3.629.0",
+        "@aws-sdk/credential-provider-node": "3.632.0",
         "@aws-sdk/middleware-host-header": "3.620.0",
         "@aws-sdk/middleware-logger": "3.609.0",
         "@aws-sdk/middleware-recursion-detection": "3.620.0",
-        "@aws-sdk/middleware-user-agent": "3.620.0",
+        "@aws-sdk/middleware-user-agent": "3.632.0",
         "@aws-sdk/region-config-resolver": "3.614.0",
         "@aws-sdk/types": "3.609.0",
-        "@aws-sdk/util-endpoints": "3.614.0",
+        "@aws-sdk/util-endpoints": "3.632.0",
         "@aws-sdk/util-user-agent-browser": "3.609.0",
         "@aws-sdk/util-user-agent-node": "3.614.0",
         "@smithy/config-resolver": "^3.0.5",
@@ -669,14 +669,14 @@
       }
     },
     "node_modules/@aws-sdk/credential-provider-ini": {
-      "version": "3.629.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.629.0.tgz",
-      "integrity": "sha512-r9fI7BABARvVDp77DBUImQzYdvarAIdhbvpCEZib0rlpvfWu3zxE9KZcapCAAi0MPjxeDfb7RMehFQIkAP7mYw==",
+      "version": "3.632.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.632.0.tgz",
+      "integrity": "sha512-m6epoW41xa1ajU5OiHcmQHoGVtrbXBaRBOUhlCLZmcaqMLYsboM4iD/WZP8aatKEON5tTnVXh/4StV8D/+wemw==",
       "dependencies": {
         "@aws-sdk/credential-provider-env": "3.620.1",
         "@aws-sdk/credential-provider-http": "3.622.0",
         "@aws-sdk/credential-provider-process": "3.620.1",
-        "@aws-sdk/credential-provider-sso": "3.629.0",
+        "@aws-sdk/credential-provider-sso": "3.632.0",
         "@aws-sdk/credential-provider-web-identity": "3.621.0",
         "@aws-sdk/types": "3.609.0",
         "@smithy/credential-provider-imds": "^3.2.0",
@@ -689,19 +689,19 @@
         "node": ">=16.0.0"
       },
       "peerDependencies": {
-        "@aws-sdk/client-sts": "^3.629.0"
+        "@aws-sdk/client-sts": "^3.632.0"
       }
     },
     "node_modules/@aws-sdk/credential-provider-node": {
-      "version": "3.629.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.629.0.tgz",
-      "integrity": "sha512-868hnVOLlXOBHk91Rl0jZIRgr/M4WJCa0nOrW9A9yidsQxuZp9P0vshDmm4hMvNZadmPIfo0Rra2MpA4RELoCw==",
+      "version": "3.632.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.632.0.tgz",
+      "integrity": "sha512-cL8fuJWm/xQBO4XJPkeuZzl3XinIn9EExWgzpG48NRMKR5us1RI/ucv7xFbBBaG+r/sDR2HpYBIA3lVIpm1H3Q==",
       "dependencies": {
         "@aws-sdk/credential-provider-env": "3.620.1",
         "@aws-sdk/credential-provider-http": "3.622.0",
-        "@aws-sdk/credential-provider-ini": "3.629.0",
+        "@aws-sdk/credential-provider-ini": "3.632.0",
         "@aws-sdk/credential-provider-process": "3.620.1",
-        "@aws-sdk/credential-provider-sso": "3.629.0",
+        "@aws-sdk/credential-provider-sso": "3.632.0",
         "@aws-sdk/credential-provider-web-identity": "3.621.0",
         "@aws-sdk/types": "3.609.0",
         "@smithy/credential-provider-imds": "^3.2.0",
@@ -730,11 +730,11 @@
       }
     },
     "node_modules/@aws-sdk/credential-provider-sso": {
-      "version": "3.629.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.629.0.tgz",
-      "integrity": "sha512-Lf4XOuj6jamxgGZGrVojERh5S+NS2t2S4CUOnAu6tJ5U0GPlpjhINUKlcVxJBpsIXudMGW1nkumAd3+kazCPig==",
+      "version": "3.632.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.632.0.tgz",
+      "integrity": "sha512-P/4wB6j7ym5QCPTL2xlMfvf2NcXSh+z0jmsZP4WW/tVwab4hvgabPPbLeEZDSWZ0BpgtxKGvRq0GSHuGeirQbA==",
       "dependencies": {
-        "@aws-sdk/client-sso": "3.629.0",
+        "@aws-sdk/client-sso": "3.632.0",
         "@aws-sdk/token-providers": "3.614.0",
         "@aws-sdk/types": "3.609.0",
         "@smithy/property-provider": "^3.1.3",
@@ -764,9 +764,9 @@
       }
     },
     "node_modules/@aws-sdk/lib-storage": {
-      "version": "3.629.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.629.0.tgz",
-      "integrity": "sha512-o7gyawMHSeDKCiMLPArr5nR0bf6wM/lH9+wzCxmBkRQMvrHcUfbHMrzughcQACHEQJqna+uxby2zk2KjSAbRmA==",
+      "version": "3.633.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.633.0.tgz",
+      "integrity": "sha512-bc+o95CWgyY9BwY6BmmvM+SfmOTNzkvszE8jSNtw4RO8rhhy+cDkwMOpyHe2mBWMUEq2LMXW3TvIrPZT1bvTyA==",
       "dependencies": {
         "@smithy/abort-controller": "^3.1.1",
         "@smithy/middleware-endpoint": "^3.1.0",
@@ -780,7 +780,7 @@
         "node": ">=16.0.0"
       },
       "peerDependencies": {
-        "@aws-sdk/client-s3": "^3.629.0"
+        "@aws-sdk/client-s3": "^3.633.0"
       }
     },
     "node_modules/@aws-sdk/lib-storage/node_modules/buffer": {
@@ -904,9 +904,9 @@
       }
     },
     "node_modules/@aws-sdk/middleware-sdk-s3": {
-      "version": "3.629.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.629.0.tgz",
-      "integrity": "sha512-FRXLcnPWXBoq/T9mnGnrpqhrSKNSm22rqJ0L7P14KESmbGuwhF/7ELYYxXIpgnIpb/CIUVmIU5EE8lsW1VTe8A==",
+      "version": "3.633.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.633.0.tgz",
+      "integrity": "sha512-7jjmWVw28wIHOdrHyTCvwKr1EYGrZI13DviwAOwRC0y9dB8gGCdRiA4fNczripUBxolCCE9mpqLrqy5pXtTzvA==",
       "dependencies": {
         "@aws-sdk/core": "3.629.0",
         "@aws-sdk/types": "3.609.0",
@@ -941,12 +941,12 @@
       }
     },
     "node_modules/@aws-sdk/middleware-user-agent": {
-      "version": "3.620.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.620.0.tgz",
-      "integrity": "sha512-bvS6etn+KsuL32ubY5D3xNof1qkenpbJXf/ugGXbg0n98DvDFQ/F+SMLxHgbnER5dsKYchNnhmtI6/FC3HFu/A==",
+      "version": "3.632.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.632.0.tgz",
+      "integrity": "sha512-yY/sFsHKwG9yzSf/DTclqWJaGPI2gPBJDCGBujSqTG1zlS7Ot4fqi91DZ6088BFWzbOorDzJFcAhAEFzc6LuQg==",
       "dependencies": {
         "@aws-sdk/types": "3.609.0",
-        "@aws-sdk/util-endpoints": "3.614.0",
+        "@aws-sdk/util-endpoints": "3.632.0",
         "@smithy/protocol-http": "^4.1.0",
         "@smithy/types": "^3.3.0",
         "tslib": "^2.6.2"
@@ -972,11 +972,11 @@
       }
     },
     "node_modules/@aws-sdk/s3-request-presigner": {
-      "version": "3.629.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.629.0.tgz",
-      "integrity": "sha512-6lVgK9Y5m+AqisPNLs1Low5oJHFg/lfsuEsQMKG5y0/uqR1KVLswiaY1mhp0cprMEXRN2DDMAhP7i+jy5/WLNw==",
+      "version": "3.633.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.633.0.tgz",
+      "integrity": "sha512-WUcBSdBenzA65y8MCDPcOaKWYhU0+AuocI1hm46TaPcPhE4E2oVoYbk1MeufkaSavR741iM4fm+b16ESUF963A==",
       "dependencies": {
-        "@aws-sdk/signature-v4-multi-region": "3.629.0",
+        "@aws-sdk/signature-v4-multi-region": "3.633.0",
         "@aws-sdk/types": "3.609.0",
         "@aws-sdk/util-format-url": "3.609.0",
         "@smithy/middleware-endpoint": "^3.1.0",
@@ -990,11 +990,11 @@
       }
     },
     "node_modules/@aws-sdk/signature-v4-multi-region": {
-      "version": "3.629.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.629.0.tgz",
-      "integrity": "sha512-GPX6dnmuLGDFp7CsGqGCzleEoNyr9ekgOzSBtcL5nKX++NruxO7f1QzJAbcYvz0gdKvz958UO0EKsGM6hnkTSg==",
+      "version": "3.633.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.633.0.tgz",
+      "integrity": "sha512-96F7Mx4lybMZdE0TTEkw6EKpeB0hxqp3J8fUJasesekTnO7jsklc47GHL5R3whyS/L4/JaPazm0Pi2DEH3kw1w==",
       "dependencies": {
-        "@aws-sdk/middleware-sdk-s3": "3.629.0",
+        "@aws-sdk/middleware-sdk-s3": "3.633.0",
         "@aws-sdk/types": "3.609.0",
         "@smithy/protocol-http": "^4.1.0",
         "@smithy/signature-v4": "^4.1.0",
@@ -1047,9 +1047,9 @@
       }
     },
     "node_modules/@aws-sdk/util-endpoints": {
-      "version": "3.614.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.614.0.tgz",
-      "integrity": "sha512-wK2cdrXHH4oz4IomV/yrGkftU9A+ITB6nFL+rxxyO78is2ifHJpFdV4aqk4LSkXYPi6CXWNru/Dqc7yiKXgJPw==",
+      "version": "3.632.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.632.0.tgz",
+      "integrity": "sha512-LlYMU8pAbcEQphOpE6xaNLJ8kPGhklZZTVzZVpVW477NaaGgoGTMYNXTABYHcxeF5E2lLrxql9OmVpvr8GWN8Q==",
       "dependencies": {
         "@aws-sdk/types": "3.609.0",
         "@smithy/types": "^3.3.0",
@@ -1290,7 +1290,7 @@
       "version": "7.24.8",
       "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
       "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
-      "dev": true,
+      "devOptional": true,
       "engines": {
         "node": ">=6.9.0"
       }
@@ -1407,7 +1407,7 @@
       "version": "7.25.3",
       "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz",
       "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==",
-      "dev": true,
+      "devOptional": true,
       "dependencies": {
         "@babel/types": "^7.25.2"
       },
@@ -1670,7 +1670,7 @@
       "version": "7.25.2",
       "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz",
       "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==",
-      "dev": true,
+      "devOptional": true,
       "dependencies": {
         "@babel/helper-string-parser": "^7.24.8",
         "@babel/helper-validator-identifier": "^7.24.7",
@@ -3905,6 +3905,18 @@
       "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz",
       "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg=="
     },
+    "node_modules/@jsdoc/salty": {
+      "version": "0.2.8",
+      "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.8.tgz",
+      "integrity": "sha512-5e+SFVavj1ORKlKaKr2BmTOekmXbelU7dC0cDkQLqag7xfuTPuGMUFx7KWJuv4bYZrTsoL2Z18VVCOKYxzoHcg==",
+      "optional": true,
+      "dependencies": {
+        "lodash": "^4.17.21"
+      },
+      "engines": {
+        "node": ">=v12.0.0"
+      }
+    },
     "node_modules/@koa/cors": {
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/@koa/cors/-/cors-5.0.0.tgz",
@@ -4804,17 +4816,17 @@
       }
     },
     "node_modules/@loopback/boot": {
-      "version": "7.0.4",
-      "resolved": "https://registry.npmjs.org/@loopback/boot/-/boot-7.0.4.tgz",
-      "integrity": "sha512-LWF2EOMu2U5uoJGGx6eA0fbvztWSmlmjaCag+xVbB2yAohW6QMwVXpjlk0WauGGlwmGwKfKSbGUScdFKl2VeEQ==",
+      "version": "7.0.5",
+      "resolved": "https://registry.npmjs.org/@loopback/boot/-/boot-7.0.5.tgz",
+      "integrity": "sha512-8uMRdFDOe1QGU5K1p9Yvlk9dsYvZAcN1b+3dqsX4yFZDCStBF6LhFe4lvFN2GEZlXKTNwz1EX6XCG2rEJyvWNQ==",
       "dependencies": {
-        "@loopback/model-api-builder": "^6.0.4",
-        "@loopback/repository": "^7.0.4",
-        "@loopback/service-proxy": "^7.0.4",
+        "@loopback/model-api-builder": "^6.0.5",
+        "@loopback/repository": "^7.0.5",
+        "@loopback/service-proxy": "^7.0.5",
         "@types/debug": "^4.1.12",
         "@types/glob": "^8.1.0",
         "debug": "^4.3.5",
-        "glob": "^10.4.2",
+        "glob": "^10.4.5",
         "tslib": "^2.6.3"
       },
       "engines": {
@@ -4825,23 +4837,23 @@
       }
     },
     "node_modules/@loopback/build": {
-      "version": "11.0.4",
-      "resolved": "https://registry.npmjs.org/@loopback/build/-/build-11.0.4.tgz",
-      "integrity": "sha512-Ilm7GabuRqinsyZDh/rLJc0PeY0X7gbFZ3LZnuwfok0ywrFA38DnP6/PU24A+2XkypufJOm0MaWVgiHJRGWu2w==",
+      "version": "11.0.5",
+      "resolved": "https://registry.npmjs.org/@loopback/build/-/build-11.0.5.tgz",
+      "integrity": "sha512-gCjJEuSrU46ZWYiBgibi77Xu6TNxHn+neTetLQ6fcmw0aGSyb65kNeu+jCKafaj1/NiVjxsI2M9H9yOBw0OaaQ==",
       "dev": true,
       "dependencies": {
-        "@loopback/eslint-config": "^15.0.3",
+        "@loopback/eslint-config": "^15.0.4",
         "@types/mocha": "^10.0.7",
         "@types/node": "^16.18.101",
         "cross-spawn": "^7.0.3",
         "debug": "^4.3.5",
         "eslint": "^8.57.0",
         "fs-extra": "^11.2.0",
-        "glob": "^10.4.2",
+        "glob": "^10.4.5",
         "lodash": "^4.17.21",
         "mocha": "^10.6.0",
         "nyc": "^17.0.0",
-        "prettier": "^3.2.5",
+        "prettier": "^3.3.2",
         "rimraf": "^5.0.7",
         "source-map-support": "^0.5.21",
         "typescript": "~5.2.2"
@@ -5021,11 +5033,11 @@
       }
     },
     "node_modules/@loopback/context": {
-      "version": "7.0.4",
-      "resolved": "https://registry.npmjs.org/@loopback/context/-/context-7.0.4.tgz",
-      "integrity": "sha512-NWtXJ2mH3Akj+Qlj4hPd4RZXyIkF4vS0DOZZXsHorPFAmvMdNi32SOXjUm/Je59k5xHBMQEW53tey8P+9iJXHQ==",
+      "version": "7.0.5",
+      "resolved": "https://registry.npmjs.org/@loopback/context/-/context-7.0.5.tgz",
+      "integrity": "sha512-+2jFBrDT+5LLfbFUno1Bun7VqiOOZQKF6mkpylbpsspSVhXigsNrcYwmktg/11sVlrZXcrbsVh2gbr3WinFOLg==",
       "dependencies": {
-        "@loopback/metadata": "^7.0.4",
+        "@loopback/metadata": "^7.0.5",
         "@types/debug": "^4.1.12",
         "debug": "^4.3.5",
         "hyperid": "^3.2.0",
@@ -5050,11 +5062,11 @@
       }
     },
     "node_modules/@loopback/core": {
-      "version": "6.1.1",
-      "resolved": "https://registry.npmjs.org/@loopback/core/-/core-6.1.1.tgz",
-      "integrity": "sha512-gphIDW8sT1+0f6QqPc1h+P3l92oaMfMd1VK8DHtyCZwrbBGJkbuZC2BgzGOQyPXhgoLbIVO07shjmjgygaV2sg==",
+      "version": "6.1.2",
+      "resolved": "https://registry.npmjs.org/@loopback/core/-/core-6.1.2.tgz",
+      "integrity": "sha512-P1V4IGEM/f9fnQ81AfiRsZKYYndzb19KJ4VRpiZq3agzo229GOCi+um3f2CB2ak3xNmFV9Mgl9CmzSlFSW3w8w==",
       "dependencies": {
-        "@loopback/context": "^7.0.4",
+        "@loopback/context": "^7.0.5",
         "debug": "^4.3.5",
         "tslib": "^2.6.3"
       },
@@ -5063,13 +5075,13 @@
       }
     },
     "node_modules/@loopback/eslint-config": {
-      "version": "15.0.3",
-      "resolved": "https://registry.npmjs.org/@loopback/eslint-config/-/eslint-config-15.0.3.tgz",
-      "integrity": "sha512-Rv/o0qtEXMTIhLU2IFY9Mgp2eKDv732bG3UuVPXYROrM5P3AJkCO6tuonCDDrm6w4KTAL2xoJ9V+Fzcb8opxog==",
+      "version": "15.0.4",
+      "resolved": "https://registry.npmjs.org/@loopback/eslint-config/-/eslint-config-15.0.4.tgz",
+      "integrity": "sha512-ZmCd/2qoSQrKzvM4pBmSJJ1KAecVvFFimGQjZgafmxe7J5Jfb1bamLoDYMcMI1DmKCRxd77nweX1PJHC4AmGtg==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/eslint-plugin": "^7.10.0",
-        "@typescript-eslint/parser": "^7.10.0",
+        "@typescript-eslint/eslint-plugin": "^7.16.0",
+        "@typescript-eslint/parser": "^7.16.0",
         "eslint-config-prettier": "^9.1.0",
         "eslint-plugin-eslint-plugin": "^5.5.1",
         "eslint-plugin-mocha": "^10.4.3"
@@ -5287,11 +5299,11 @@
       }
     },
     "node_modules/@loopback/express": {
-      "version": "7.0.4",
-      "resolved": "https://registry.npmjs.org/@loopback/express/-/express-7.0.4.tgz",
-      "integrity": "sha512-JraWV1WD5FHX3/8HEMfu7BC7GcS5kK/o4NwV0fuNiiv9sD+4mnWy7mgo+w3TbyfDSxq5BKspPWSoGMsUXYnwAw==",
+      "version": "7.0.5",
+      "resolved": "https://registry.npmjs.org/@loopback/express/-/express-7.0.5.tgz",
+      "integrity": "sha512-yHy7mAOFtsHFFZneujhknAHmQoTPaucJI4kM2kyqVVN/25wbpfuMfmmFb5niRllbbnqj4ujLrYLRG33n+xAP/Q==",
       "dependencies": {
-        "@loopback/http-server": "^6.0.4",
+        "@loopback/http-server": "^6.0.5",
         "@types/body-parser": "^1.19.5",
         "@types/express": "^4.17.21",
         "@types/express-serve-static-core": "^4.17.37",
@@ -5312,9 +5324,9 @@
       }
     },
     "node_modules/@loopback/filter": {
-      "version": "5.0.4",
-      "resolved": "https://registry.npmjs.org/@loopback/filter/-/filter-5.0.4.tgz",
-      "integrity": "sha512-16SdyFe+mh8b6JIgbnS1NIiop+6vhh62BQ0hOBfRVnffCf1NEE3mrERNsbMNou9eMx/OOIBMfhoAoFwfSfyJdw==",
+      "version": "5.0.5",
+      "resolved": "https://registry.npmjs.org/@loopback/filter/-/filter-5.0.5.tgz",
+      "integrity": "sha512-0mEwNWkNHQvao1C6BOkj0eXkklZ8SwM4TYz+0WNWxVdE/3C9EjAQOzvzrkEgECf992abQylfZGHAxjWOuo1PVw==",
       "dependencies": {
         "tslib": "^2.6.3"
       },
@@ -5323,9 +5335,9 @@
       }
     },
     "node_modules/@loopback/http-server": {
-      "version": "6.0.4",
-      "resolved": "https://registry.npmjs.org/@loopback/http-server/-/http-server-6.0.4.tgz",
-      "integrity": "sha512-e5QyUeX4ime9mbnPOO8la7AccRCJ9Iyw/+HSRDoFV0ufOCZFwVkzu8NLM/NJPyFTPcMe+jTddvgH0+KcmBYCwA==",
+      "version": "6.0.5",
+      "resolved": "https://registry.npmjs.org/@loopback/http-server/-/http-server-6.0.5.tgz",
+      "integrity": "sha512-AQz0AyfTIiICpZejQ0Ph5UBuRvOtvc02MoY+TyAY2OTqFHocUXzq26mPyrnkjWQycQO78X0Jkxr+QwogCjyHGA==",
       "dependencies": {
         "debug": "^4.3.5",
         "stoppable": "^1.1.0",
@@ -5336,9 +5348,9 @@
       }
     },
     "node_modules/@loopback/metadata": {
-      "version": "7.0.4",
-      "resolved": "https://registry.npmjs.org/@loopback/metadata/-/metadata-7.0.4.tgz",
-      "integrity": "sha512-PMR9FYnWbx9FcnF/oy5ukY852l2xl7eUU1WMOVeiYU66vpXdCXb1bOoTZjMOAuqZcSlQUjqwk15cZzydU/ITxw==",
+      "version": "7.0.5",
+      "resolved": "https://registry.npmjs.org/@loopback/metadata/-/metadata-7.0.5.tgz",
+      "integrity": "sha512-Likq4nLftj58mPrkgtlSEGS78FPOsFMFYpqc67WMw/ISFzfjSJhCJr9KNOoZZS8DapPk55+35gh4MEUgydYRGA==",
       "dependencies": {
         "debug": "^4.3.5",
         "lodash": "^4.17.21",
@@ -5355,9 +5367,9 @@
       "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q=="
     },
     "node_modules/@loopback/model-api-builder": {
-      "version": "6.0.4",
-      "resolved": "https://registry.npmjs.org/@loopback/model-api-builder/-/model-api-builder-6.0.4.tgz",
-      "integrity": "sha512-Or3vS/q76FPZ3voLkvLTP0j3kewa+gM4A3sf0wzGVFEe2/mq2Kkvx2e5hMe/siKEe9VfythQ2SSvf4uJz0zFhg==",
+      "version": "6.0.5",
+      "resolved": "https://registry.npmjs.org/@loopback/model-api-builder/-/model-api-builder-6.0.5.tgz",
+      "integrity": "sha512-lI0iQdaiGWMLlQiGdktQ+J1UVVutmpmafvksppHeuSjODgeWkDpM6DCxpBPCdXjXAxSjn7mlkrajSzMOg5CqmQ==",
       "dependencies": {
         "tslib": "^2.6.3"
       },
@@ -5370,11 +5382,11 @@
       }
     },
     "node_modules/@loopback/openapi-v3": {
-      "version": "10.0.4",
-      "resolved": "https://registry.npmjs.org/@loopback/openapi-v3/-/openapi-v3-10.0.4.tgz",
-      "integrity": "sha512-ZZSKd7pMNDP7BgvHcWUeAV3DqTA9g89C6Ra4wCmCHnpvQdxoqoNWI10wupRFKFgbLr/x9YK/Pf9CnwN+WZQIMQ==",
+      "version": "10.0.5",
+      "resolved": "https://registry.npmjs.org/@loopback/openapi-v3/-/openapi-v3-10.0.5.tgz",
+      "integrity": "sha512-dLGcu0dyMfA4GRCy3PwPzSkYDUkzGC+5gQRGR4gqUA6QdbU/nUwr/8oR5nYjlXsGpP8y+RGvecAMkCt1UAzpmg==",
       "dependencies": {
-        "@loopback/repository-json-schema": "^8.0.4",
+        "@loopback/repository-json-schema": "^8.0.5",
         "debug": "^4.3.5",
         "http-status": "^1.7.4",
         "json-merge-patch": "^1.0.2",
@@ -5390,11 +5402,11 @@
       }
     },
     "node_modules/@loopback/repository": {
-      "version": "7.0.4",
-      "resolved": "https://registry.npmjs.org/@loopback/repository/-/repository-7.0.4.tgz",
-      "integrity": "sha512-SP9i/38N/S3p8eBhrWSv2or+hRXFkZ6o5bFFr2QvuZtMEFP6OUR1bTUfSlElWGddOAUOpwh7COnn5evezwRhdQ==",
+      "version": "7.0.5",
+      "resolved": "https://registry.npmjs.org/@loopback/repository/-/repository-7.0.5.tgz",
+      "integrity": "sha512-TKlrRu/6NEQ0/zjOrCOWC6ZmFoZ8My9uqJL3vHAYsQ3cffv5hXDshlUq2NJLkMLkaIzhIwvflMLsO3TfyJo1qw==",
       "dependencies": {
-        "@loopback/filter": "^5.0.4",
+        "@loopback/filter": "^5.0.5",
         "@types/debug": "^4.1.12",
         "debug": "^4.3.5",
         "lodash": "^4.17.21",
@@ -5409,9 +5421,9 @@
       }
     },
     "node_modules/@loopback/repository-json-schema": {
-      "version": "8.0.4",
-      "resolved": "https://registry.npmjs.org/@loopback/repository-json-schema/-/repository-json-schema-8.0.4.tgz",
-      "integrity": "sha512-WUWEQIw66rsw6EHVcsel7Bty/MV93E0HUvn8dcSHexKhoGv/9oae1EYUsaThkjb4hnG2iYZt4ZNDL4SyMJ6aXg==",
+      "version": "8.0.5",
+      "resolved": "https://registry.npmjs.org/@loopback/repository-json-schema/-/repository-json-schema-8.0.5.tgz",
+      "integrity": "sha512-iLFfLltQrUeasUaYHQRXcCHpVOeBd1xnzfwbuJXMtKxnexU4tiO5i50nXXdlyryIXlDyJAaqx8ItLJ5VKNa0lw==",
       "dependencies": {
         "@types/json-schema": "^7.0.15",
         "debug": "^4.3.5",
@@ -5426,11 +5438,11 @@
       }
     },
     "node_modules/@loopback/repository-tests": {
-      "version": "0.24.4",
-      "resolved": "https://registry.npmjs.org/@loopback/repository-tests/-/repository-tests-0.24.4.tgz",
-      "integrity": "sha512-vVeYwg5mAqNwfnN9ihb+Abun+yGEH8Olh6bc5FMaLc4hehYk29WvvvHGUxApooeKauDrCH9GQ/nWtwSomTA4/w==",
+      "version": "0.24.5",
+      "resolved": "https://registry.npmjs.org/@loopback/repository-tests/-/repository-tests-0.24.5.tgz",
+      "integrity": "sha512-CMUccO5toR6v17CV9zwZeBcxEYEoVu0DdmgQ44yhokiC5HyvexUTZB8L7/GVKlnqgvORxuPUz7vXJoErPEGVnA==",
       "dependencies": {
-        "@loopback/testlab": "^7.0.4",
+        "@loopback/testlab": "^7.0.5",
         "@types/debug": "^4.1.12",
         "debug": "^4.3.5",
         "tslib": "^2.6.3"
@@ -5444,13 +5456,13 @@
       }
     },
     "node_modules/@loopback/rest": {
-      "version": "14.0.4",
-      "resolved": "https://registry.npmjs.org/@loopback/rest/-/rest-14.0.4.tgz",
-      "integrity": "sha512-1oQBJ1J+i7i4NsA9WzhGZJ2R9CK/aK2VTbQb6wlIgeSg5t65uSqUYUYgcY/Gt1wOJudZQ6l0CQJKhK1sdZj7+A==",
+      "version": "14.0.5",
+      "resolved": "https://registry.npmjs.org/@loopback/rest/-/rest-14.0.5.tgz",
+      "integrity": "sha512-x9YdU5eeojOK/dfdtyTgth6MgSb0JBK7w/WaCEVWWZEo6+x1Xonv0Zv8DE0tU1P/wjMTWIC6587nDjFcQq95cg==",
       "dependencies": {
-        "@loopback/express": "^7.0.4",
-        "@loopback/http-server": "^6.0.4",
-        "@loopback/openapi-v3": "^10.0.4",
+        "@loopback/express": "^7.0.5",
+        "@loopback/http-server": "^6.0.5",
+        "@loopback/openapi-v3": "^10.0.5",
         "@openapi-contrib/openapi-schema-to-json-schema": "^5.1.0",
         "@types/body-parser": "^1.19.5",
         "@types/cors": "^2.8.17",
@@ -5474,7 +5486,7 @@
         "lodash": "^4.17.21",
         "on-finished": "^2.4.1",
         "path-to-regexp": "^6.2.2",
-        "qs": "^6.12.2",
+        "qs": "^6.12.3",
         "strong-error-handler": "^5.0.10",
         "tslib": "^2.6.3",
         "type-is": "^1.6.18",
@@ -5488,9 +5500,9 @@
       }
     },
     "node_modules/@loopback/rest-explorer": {
-      "version": "7.0.4",
-      "resolved": "https://registry.npmjs.org/@loopback/rest-explorer/-/rest-explorer-7.0.4.tgz",
-      "integrity": "sha512-qz9gdjVIQ7YzH48iDBaL/lW4B40faR+Peg6AnJE0yetLG6DBi2Sm4yjzSFU7IGz4PbPG5wt1lDxdrutWK632lA==",
+      "version": "7.0.5",
+      "resolved": "https://registry.npmjs.org/@loopback/rest-explorer/-/rest-explorer-7.0.5.tgz",
+      "integrity": "sha512-As+GsbWoZdOH4gX2JRgiA79H/0nBmm1hfYhsQKMEL8cYaghGJbDa/7uwOMnIz/3S8VXToaFY/GXaRuTJ6HtkpQ==",
       "dependencies": {
         "ejs": "^3.1.10",
         "swagger-ui-dist": "5.17.14",
@@ -5524,23 +5536,10 @@
         "node": ">=14.0.0"
       }
     },
-    "node_modules/@loopback/rest/node_modules/@types/node": {
-      "version": "20.14.15",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.15.tgz",
-      "integrity": "sha512-Fz1xDMCF/B00/tYSVMlmK7hVeLh7jE5f3B7X1/hmV0MJBwE27KlS7EvD/Yp+z1lm8mVhwV5w+n8jOZG8AfTlKw==",
-      "dependencies": {
-        "undici-types": "~5.26.4"
-      }
-    },
-    "node_modules/@loopback/rest/node_modules/undici-types": {
-      "version": "5.26.5",
-      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
-      "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
-    },
     "node_modules/@loopback/sequelize": {
-      "version": "0.6.4",
-      "resolved": "https://registry.npmjs.org/@loopback/sequelize/-/sequelize-0.6.4.tgz",
-      "integrity": "sha512-zjQRhmQUWoKxT9zVdmgICfbWofWJlg0ITcWKz703qYUz6lkKHSHww4M84kWjn2AQ01QcJXVAHhnQ6UHa5SrHzA==",
+      "version": "0.6.5",
+      "resolved": "https://registry.npmjs.org/@loopback/sequelize/-/sequelize-0.6.5.tgz",
+      "integrity": "sha512-PrUDelocU1nRFkwLbmUWubOrCKc4P+OupPB0rJIA2RqyEMKsHeycy2uAsqEAXHzvmXrodhmUGwCUrakRsDKP8Q==",
       "dependencies": {
         "debug": "^4.3.5",
         "sequelize": "^6.37.3",
@@ -5555,9 +5554,9 @@
       }
     },
     "node_modules/@loopback/service-proxy": {
-      "version": "7.0.4",
-      "resolved": "https://registry.npmjs.org/@loopback/service-proxy/-/service-proxy-7.0.4.tgz",
-      "integrity": "sha512-Nw1S71eqNszN874AwmoRLQcT7aocD7E6aomB0Nff5jTTDONkZpIE+Zancyn0EtVp58DTVa2K+x9sPfiaL1XwYQ==",
+      "version": "7.0.5",
+      "resolved": "https://registry.npmjs.org/@loopback/service-proxy/-/service-proxy-7.0.5.tgz",
+      "integrity": "sha512-vMJSBdGANxdpvJ3l4bpsl7grJ+LIXPMbmr+ru6XfujDw4YoU/sWa/oAJp1fip+cncSGV552rbBZDXAoJBhOmfw==",
       "dependencies": {
         "loopback-datasource-juggler": "^5.0.11",
         "tslib": "^2.6.3"
@@ -5570,9 +5569,9 @@
       }
     },
     "node_modules/@loopback/testlab": {
-      "version": "7.0.4",
-      "resolved": "https://registry.npmjs.org/@loopback/testlab/-/testlab-7.0.4.tgz",
-      "integrity": "sha512-8ZuiyMpdSuIHyA3Hxe+XyH9vEEndKTr093uPsSwevmks+oInCwMB9Y7Op5t2Ef9SEU+p8iSpfW8ikf2cp8VJ0g==",
+      "version": "7.0.5",
+      "resolved": "https://registry.npmjs.org/@loopback/testlab/-/testlab-7.0.5.tgz",
+      "integrity": "sha512-YF8sKq/BwRptmj0TLwOATP6VELXlhs+dzE8EsK8xKgVCGAFf2VOz1VnwC4cjOPW0uMmRApJQIKF1cyM3zFMpVQ==",
       "dependencies": {
         "@hapi/shot": "^6.0.1",
         "@types/express": "^4.17.21",
@@ -6173,6 +6172,20 @@
         "@nestjs/core": "^9.0.0"
       }
     },
+    "node_modules/@nestjs/platform-express/node_modules/concat-stream": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+      "engines": [
+        "node >= 0.8"
+      ],
+      "dependencies": {
+        "buffer-from": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.2.2",
+        "typedarray": "^0.0.6"
+      }
+    },
     "node_modules/@nestjs/platform-express/node_modules/cookie": {
       "version": "0.5.0",
       "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
@@ -6253,11 +6266,39 @@
         "npm": "1.2.8000 || >= 1.4.16"
       }
     },
+    "node_modules/@nestjs/platform-express/node_modules/mkdirp": {
+      "version": "0.5.6",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+      "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+      "dependencies": {
+        "minimist": "^1.2.6"
+      },
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      }
+    },
     "node_modules/@nestjs/platform-express/node_modules/ms": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
       "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
     },
+    "node_modules/@nestjs/platform-express/node_modules/multer": {
+      "version": "1.4.4-lts.1",
+      "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4-lts.1.tgz",
+      "integrity": "sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==",
+      "dependencies": {
+        "append-field": "^1.0.0",
+        "busboy": "^1.0.0",
+        "concat-stream": "^1.5.2",
+        "mkdirp": "^0.5.4",
+        "object-assign": "^4.1.1",
+        "type-is": "^1.6.4",
+        "xtend": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 6.0.0"
+      }
+    },
     "node_modules/@nestjs/platform-express/node_modules/path-to-regexp": {
       "version": "0.1.7",
       "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
@@ -6291,6 +6332,38 @@
         "node": ">= 0.8"
       }
     },
+    "node_modules/@nestjs/platform-express/node_modules/readable-stream": {
+      "version": "2.3.8",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+      "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+      "dependencies": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      }
+    },
+    "node_modules/@nestjs/platform-express/node_modules/readable-stream/node_modules/safe-buffer": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+    },
+    "node_modules/@nestjs/platform-express/node_modules/string_decoder": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+      "dependencies": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "node_modules/@nestjs/platform-express/node_modules/string_decoder/node_modules/safe-buffer": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+    },
     "node_modules/@nestjs/platform-express/node_modules/tslib": {
       "version": "2.5.3",
       "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz",
@@ -9297,19 +9370,6 @@
         "openapi-typescript": "^5.4.1"
       }
     },
-    "node_modules/@openapi-contrib/openapi-schema-to-json-schema/node_modules/@types/node": {
-      "version": "20.14.15",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.15.tgz",
-      "integrity": "sha512-Fz1xDMCF/B00/tYSVMlmK7hVeLh7jE5f3B7X1/hmV0MJBwE27KlS7EvD/Yp+z1lm8mVhwV5w+n8jOZG8AfTlKw==",
-      "dependencies": {
-        "undici-types": "~5.26.4"
-      }
-    },
-    "node_modules/@openapi-contrib/openapi-schema-to-json-schema/node_modules/undici-types": {
-      "version": "5.26.5",
-      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
-      "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
-    },
     "node_modules/@opentelemetry/api": {
       "version": "1.9.0",
       "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz",
@@ -10297,17 +10357,19 @@
       }
     },
     "node_modules/@smithy/core": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.3.2.tgz",
-      "integrity": "sha512-in5wwt6chDBcUv1Lw1+QzZxN9fBffi+qOixfb65yK4sDuKG7zAUO9HAFqmVzsZM3N+3tTyvZjtnDXePpvp007Q==",
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.4.0.tgz",
+      "integrity": "sha512-cHXq+FneIF/KJbt4q4pjN186+Jf4ZB0ZOqEaZMBhT79srEyGDDBV31NqBRBjazz8ppQ1bJbDJMY9ba5wKFV36w==",
       "dependencies": {
         "@smithy/middleware-endpoint": "^3.1.0",
-        "@smithy/middleware-retry": "^3.0.14",
+        "@smithy/middleware-retry": "^3.0.15",
         "@smithy/middleware-serde": "^3.0.3",
         "@smithy/protocol-http": "^4.1.0",
-        "@smithy/smithy-client": "^3.1.12",
+        "@smithy/smithy-client": "^3.2.0",
         "@smithy/types": "^3.3.0",
+        "@smithy/util-body-length-browser": "^3.0.0",
         "@smithy/util-middleware": "^3.0.3",
+        "@smithy/util-utf8": "^3.0.0",
         "tslib": "^2.6.2"
       },
       "engines": {
@@ -10502,14 +10564,14 @@
       }
     },
     "node_modules/@smithy/middleware-retry": {
-      "version": "3.0.14",
-      "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.14.tgz",
-      "integrity": "sha512-7ZaWZJOjUxa5hgmuMspyt8v/zVsh0GXYuF7OvCmdcbVa/xbnKQoYC+uYKunAqRGTkxjOyuOCw9rmFUFOqqC0eQ==",
+      "version": "3.0.15",
+      "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.15.tgz",
+      "integrity": "sha512-iTMedvNt1ApdvkaoE8aSDuwaoc+BhvHqttbA/FO4Ty+y/S5hW6Ci/CTScG7vam4RYJWZxdTElc3MEfHRVH6cgQ==",
       "dependencies": {
         "@smithy/node-config-provider": "^3.1.4",
         "@smithy/protocol-http": "^4.1.0",
         "@smithy/service-error-classification": "^3.0.3",
-        "@smithy/smithy-client": "^3.1.12",
+        "@smithy/smithy-client": "^3.2.0",
         "@smithy/types": "^3.3.0",
         "@smithy/util-middleware": "^3.0.3",
         "@smithy/util-retry": "^3.0.3",
@@ -10676,9 +10738,9 @@
       }
     },
     "node_modules/@smithy/smithy-client": {
-      "version": "3.1.12",
-      "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.1.12.tgz",
-      "integrity": "sha512-wtm8JtsycthkHy1YA4zjIh2thJgIQ9vGkoR639DBx5lLlLNU0v4GARpQZkr2WjXue74nZ7MiTSWfVrLkyD8RkA==",
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.2.0.tgz",
+      "integrity": "sha512-pDbtxs8WOhJLJSeaF/eAbPgXg4VVYFlRcL/zoNYA5WbG3wBL06CHtBSg53ppkttDpAJ/hdiede+xApip1CwSLw==",
       "dependencies": {
         "@smithy/middleware-endpoint": "^3.1.0",
         "@smithy/middleware-stack": "^3.0.3",
@@ -10768,12 +10830,12 @@
       }
     },
     "node_modules/@smithy/util-defaults-mode-browser": {
-      "version": "3.0.14",
-      "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.14.tgz",
-      "integrity": "sha512-0iwTgKKmAIf+vFLV8fji21Jb2px11ktKVxbX6LIDPAUJyWQqGqBVfwba7xwa1f2FZUoolYQgLvxQEpJycXuQ5w==",
+      "version": "3.0.15",
+      "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.15.tgz",
+      "integrity": "sha512-FZ4Psa3vjp8kOXcd3HJOiDPBCWtiilLl57r0cnNtq/Ga9RSDrM5ERL6xt+tO43+2af6Pn5Yp92x2n5vPuduNfg==",
       "dependencies": {
         "@smithy/property-provider": "^3.1.3",
-        "@smithy/smithy-client": "^3.1.12",
+        "@smithy/smithy-client": "^3.2.0",
         "@smithy/types": "^3.3.0",
         "bowser": "^2.11.0",
         "tslib": "^2.6.2"
@@ -10783,15 +10845,15 @@
       }
     },
     "node_modules/@smithy/util-defaults-mode-node": {
-      "version": "3.0.14",
-      "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.14.tgz",
-      "integrity": "sha512-e9uQarJKfXApkTMMruIdxHprhcXivH1flYCe8JRDTzkkLx8dA3V5J8GZlST9yfDiRWkJpZJlUXGN9Rc9Ade3OQ==",
+      "version": "3.0.15",
+      "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.15.tgz",
+      "integrity": "sha512-KSyAAx2q6d0t6f/S4XB2+3+6aQacm3aLMhs9aLMqn18uYGUepbdssfogW5JQZpc6lXNBnp0tEnR5e9CEKmEd7A==",
       "dependencies": {
         "@smithy/config-resolver": "^3.0.5",
         "@smithy/credential-provider-imds": "^3.2.0",
         "@smithy/node-config-provider": "^3.1.4",
         "@smithy/property-provider": "^3.1.3",
-        "@smithy/smithy-client": "^3.1.12",
+        "@smithy/smithy-client": "^3.2.0",
         "@smithy/types": "^3.3.0",
         "tslib": "^2.6.2"
       },
@@ -11730,6 +11792,12 @@
         "@types/koa": "*"
       }
     },
+    "node_modules/@types/linkify-it": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz",
+      "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==",
+      "optional": true
+    },
     "node_modules/@types/lodash": {
       "version": "4.17.7",
       "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz",
@@ -11741,6 +11809,22 @@
       "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==",
       "optional": true
     },
+    "node_modules/@types/markdown-it": {
+      "version": "14.1.2",
+      "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz",
+      "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==",
+      "optional": true,
+      "dependencies": {
+        "@types/linkify-it": "^5",
+        "@types/mdurl": "^2"
+      }
+    },
+    "node_modules/@types/mdurl": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz",
+      "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==",
+      "optional": true
+    },
     "node_modules/@types/mem-fs": {
       "version": "1.1.5",
       "resolved": "https://registry.npmjs.org/@types/mem-fs/-/mem-fs-1.1.5.tgz",
@@ -11857,11 +11941,11 @@
       }
     },
     "node_modules/@types/node": {
-      "version": "22.3.0",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-22.3.0.tgz",
-      "integrity": "sha512-nrWpWVaDZuaVc5X84xJ0vNrLvomM205oQyLsRt7OHNZbSHslcWsvgFR7O7hire2ZonjLrWBbedmotmIlJDVd6g==",
+      "version": "20.16.1",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.1.tgz",
+      "integrity": "sha512-zJDo7wEadFtSyNz5QITDfRcrhqDvQI1xQNQ0VoizPjM/dVAODqqIUWbJPkvsxmTI0MYRGRikcdjMPhOssnPejQ==",
       "dependencies": {
-        "undici-types": "~6.18.2"
+        "undici-types": "~6.19.2"
       }
     },
     "node_modules/@types/node-fetch": {
@@ -11898,9 +11982,9 @@
       }
     },
     "node_modules/@types/oidc-provider": {
-      "version": "8.5.1",
-      "resolved": "https://registry.npmjs.org/@types/oidc-provider/-/oidc-provider-8.5.1.tgz",
-      "integrity": "sha512-NS8tBPOj9GG6SxyrUHWBzglOtAYNDX41J4cRE45oeK0iSqI6V6tDW70aPWg25pJFNSC1evccXFm9evfwjxm7HQ==",
+      "version": "8.5.2",
+      "resolved": "https://registry.npmjs.org/@types/oidc-provider/-/oidc-provider-8.5.2.tgz",
+      "integrity": "sha512-NiD3VG49+cRCAAe8+uZLM4onOcX8y9+cwaml8JG1qlgc98rWoCRgsnOB4Ypx+ysays5jiwzfUgT0nWyXPB/9uQ==",
       "dev": true,
       "dependencies": {
         "@types/koa": "*",
@@ -12114,6 +12198,16 @@
         "@types/node": "*"
       }
     },
+    "node_modules/@types/rimraf": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-3.0.2.tgz",
+      "integrity": "sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ==",
+      "optional": true,
+      "dependencies": {
+        "@types/glob": "*",
+        "@types/node": "*"
+      }
+    },
     "node_modules/@types/semver": {
       "version": "7.5.8",
       "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
@@ -13525,9 +13619,9 @@
       "integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw=="
     },
     "node_modules/aws-sdk": {
-      "version": "2.1674.0",
-      "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1674.0.tgz",
-      "integrity": "sha512-VTijN8+pKrf4sfM2t+ISXjypJ+k3AiP6OMzyLoWJ7jfMBtBfWbQc1rN07OndNb0CZRBBukOHoBhYDPuyae+/1Q==",
+      "version": "2.1677.0",
+      "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1677.0.tgz",
+      "integrity": "sha512-hIwHr+sfKwS40+AA6yNGR4I0xYGK6tZ9wrg1YmhQRQ5q12KmdXgau6rFNa2VizUxdMlwumgixncvNk4m8Ffx8g==",
       "hasInstallScript": true,
       "dependencies": {
         "buffer": "4.9.2",
@@ -14187,9 +14281,9 @@
       }
     },
     "node_modules/boxen/node_modules/type-fest": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.24.0.tgz",
-      "integrity": "sha512-spAaHzc6qre0TlZQQ2aA/nGMe+2Z/wyGk5Z+Ru2VUfdNwT6kWO6TjevOlpebsATEG1EIQ2sOiDszud3lO5mt/Q==",
+      "version": "4.25.0",
+      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.25.0.tgz",
+      "integrity": "sha512-bRkIGlXsnGBRBQRAY56UXBm//9qH4bmJfFvq83gSz41N282df+fjy8ofcEgc1sM8geNt5cl6mC2g9Fht1cs8Aw==",
       "engines": {
         "node": ">=16"
       },
@@ -14922,6 +15016,18 @@
       "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
       "dev": true
     },
+    "node_modules/catharsis": {
+      "version": "0.9.0",
+      "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz",
+      "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==",
+      "optional": true,
+      "dependencies": {
+        "lodash": "^4.17.15"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
     "node_modules/cbor-js": {
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/cbor-js/-/cbor-js-0.1.0.tgz",
@@ -15775,6 +15881,18 @@
         "node": ">= 10"
       }
     },
+    "node_modules/compressible": {
+      "version": "2.0.18",
+      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
+      "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+      "optional": true,
+      "dependencies": {
+        "mime-db": ">= 1.43.0 < 2"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
     "node_modules/concat-map": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -15841,9 +15959,9 @@
       }
     },
     "node_modules/configstore/node_modules/type-fest": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.24.0.tgz",
-      "integrity": "sha512-spAaHzc6qre0TlZQQ2aA/nGMe+2Z/wyGk5Z+Ru2VUfdNwT6kWO6TjevOlpebsATEG1EIQ2sOiDszud3lO5mt/Q==",
+      "version": "4.25.0",
+      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.25.0.tgz",
+      "integrity": "sha512-bRkIGlXsnGBRBQRAY56UXBm//9qH4bmJfFvq83gSz41N282df+fjy8ofcEgc1sM8geNt5cl6mC2g9Fht1cs8Aw==",
       "engines": {
         "node": ">=16"
       },
@@ -17547,9 +17665,9 @@
       }
     },
     "node_modules/electron-to-chromium": {
-      "version": "1.5.7",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.7.tgz",
-      "integrity": "sha512-6FTNWIWMxMy/ZY6799nBlPtF1DFDQ6VQJ7yyDP27SJNt5lwtQ5ufqVvHylb3fdQefvRcgA3fKcFMJi9OLwBRNw==",
+      "version": "1.5.11",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.11.tgz",
+      "integrity": "sha512-R1CccCDYqndR25CaXFd6hp/u9RaaMcftMkphmvuepXr5b1vfLkRml6aWVeBhXJ7rbevHkKEMJtz8XqPf7ffmew==",
       "dev": true
     },
     "node_modules/emittery": {
@@ -17676,6 +17794,24 @@
         "node": ">=8.6"
       }
     },
+    "node_modules/ent": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.1.tgz",
+      "integrity": "sha512-QHuXVeZx9d+tIQAz/XztU0ZwZf2Agg9CcXcgE1rurqvdBeDBrpSwjl8/6XUqMg7tw2Y7uAdKb2sRv+bSEFqQ5A==",
+      "optional": true,
+      "dependencies": {
+        "punycode": "^1.4.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/ent/node_modules/punycode": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+      "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
+      "optional": true
+    },
     "node_modules/entities": {
       "version": "4.5.0",
       "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
@@ -18679,6 +18815,12 @@
       "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
       "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA=="
     },
+    "node_modules/fast-text-encoding": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz",
+      "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==",
+      "optional": true
+    },
     "node_modules/fast-uri": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz",
@@ -19017,6 +19159,14 @@
         "@google-cloud/storage": "^7.7.0"
       }
     },
+    "node_modules/firebase-admin/node_modules/@types/node": {
+      "version": "22.4.1",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-22.4.1.tgz",
+      "integrity": "sha512-1tbpb9325+gPnKK0dMm+/LMriX0vKxf6RnB0SZUqfyVkQ4fMgUSySqhxE/y8Jvs4NyF1yHzTfG9KlnkIODxPKg==",
+      "dependencies": {
+        "undici-types": "~6.19.2"
+      }
+    },
     "node_modules/firebase-admin/node_modules/uuid": {
       "version": "10.0.0",
       "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz",
@@ -20472,6 +20622,22 @@
         "uuid": "dist/bin/uuid"
       }
     },
+    "node_modules/google-p12-pem": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz",
+      "integrity": "sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==",
+      "deprecated": "Package is no longer maintained",
+      "optional": true,
+      "dependencies": {
+        "node-forge": "^1.3.1"
+      },
+      "bin": {
+        "gp12-pem": "build/src/bin/gp12-pem.js"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
     "node_modules/gopd": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
@@ -22123,6 +22289,12 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/is-stream-ended": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz",
+      "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==",
+      "optional": true
+    },
     "node_modules/is-string": {
       "version": "1.0.7",
       "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
@@ -23977,6 +24149,109 @@
       "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
       "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A=="
     },
+    "node_modules/jsdoc": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.3.tgz",
+      "integrity": "sha512-Nu7Sf35kXJ1MWDZIMAuATRQTg1iIPdzh7tqJ6jjvaU/GfDf+qi5UV8zJR3Mo+/pYFvm8mzay4+6O5EWigaQBQw==",
+      "optional": true,
+      "dependencies": {
+        "@babel/parser": "^7.20.15",
+        "@jsdoc/salty": "^0.2.1",
+        "@types/markdown-it": "^14.1.1",
+        "bluebird": "^3.7.2",
+        "catharsis": "^0.9.0",
+        "escape-string-regexp": "^2.0.0",
+        "js2xmlparser": "^4.0.2",
+        "klaw": "^3.0.0",
+        "markdown-it": "^14.1.0",
+        "markdown-it-anchor": "^8.6.7",
+        "marked": "^4.0.10",
+        "mkdirp": "^1.0.4",
+        "requizzle": "^0.2.3",
+        "strip-json-comments": "^3.1.0",
+        "underscore": "~1.13.2"
+      },
+      "bin": {
+        "jsdoc": "jsdoc.js"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
+    "node_modules/jsdoc/node_modules/escape-string-regexp": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+      "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+      "optional": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jsdoc/node_modules/js2xmlparser": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz",
+      "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==",
+      "optional": true,
+      "dependencies": {
+        "xmlcreate": "^2.0.4"
+      }
+    },
+    "node_modules/jsdoc/node_modules/linkify-it": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz",
+      "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==",
+      "optional": true,
+      "dependencies": {
+        "uc.micro": "^2.0.0"
+      }
+    },
+    "node_modules/jsdoc/node_modules/markdown-it": {
+      "version": "14.1.0",
+      "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz",
+      "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==",
+      "optional": true,
+      "dependencies": {
+        "argparse": "^2.0.1",
+        "entities": "^4.4.0",
+        "linkify-it": "^5.0.0",
+        "mdurl": "^2.0.0",
+        "punycode.js": "^2.3.1",
+        "uc.micro": "^2.1.0"
+      },
+      "bin": {
+        "markdown-it": "bin/markdown-it.mjs"
+      }
+    },
+    "node_modules/jsdoc/node_modules/mdurl": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
+      "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==",
+      "optional": true
+    },
+    "node_modules/jsdoc/node_modules/mkdirp": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+      "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+      "optional": true,
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/jsdoc/node_modules/uc.micro": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
+      "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==",
+      "optional": true
+    },
+    "node_modules/jsdoc/node_modules/underscore": {
+      "version": "1.13.7",
+      "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz",
+      "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==",
+      "optional": true
+    },
     "node_modules/jsdom": {
       "version": "19.0.0",
       "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz",
@@ -24408,6 +24683,15 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/klaw": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz",
+      "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==",
+      "optional": true,
+      "dependencies": {
+        "graceful-fs": "^4.1.9"
+      }
+    },
     "node_modules/klaw-sync": {
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz",
@@ -24521,9 +24805,9 @@
       }
     },
     "node_modules/ky": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/ky/-/ky-1.6.0.tgz",
-      "integrity": "sha512-MG7hlH26oShC4Lysk5TYzXshHLfEY52IJ0ofOeCsifquqTymbXCSTx+g4rXO30XYxoM6Y1ed5pNnpULe9Rx19A==",
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/ky/-/ky-1.7.0.tgz",
+      "integrity": "sha512-g+S6ZMESSMuxrrbcDioBKSjBj8Xvam2WmLso+q1Ub7TTYCGS68XbSEM+eA3VSTmXJfR1uQjsTooC2tCsC3bW6g==",
       "engines": {
         "node": ">=18"
       },
@@ -25732,7 +26016,7 @@
       "version": "3.0.3",
       "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz",
       "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==",
-      "dev": true,
+      "devOptional": true,
       "dependencies": {
         "uc.micro": "^1.0.1"
       }
@@ -26723,7 +27007,7 @@
       "version": "12.3.2",
       "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz",
       "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==",
-      "dev": true,
+      "devOptional": true,
       "dependencies": {
         "argparse": "^2.0.1",
         "entities": "~2.1.0",
@@ -26735,6 +27019,16 @@
         "markdown-it": "bin/markdown-it.js"
       }
     },
+    "node_modules/markdown-it-anchor": {
+      "version": "8.6.7",
+      "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz",
+      "integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==",
+      "optional": true,
+      "peerDependencies": {
+        "@types/markdown-it": "*",
+        "markdown-it": "*"
+      }
+    },
     "node_modules/markdown-it-emoji": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz",
@@ -26745,7 +27039,7 @@
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
       "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
-      "dev": true,
+      "devOptional": true,
       "funding": {
         "url": "https://github.com/fb55/entities?sponsor=1"
       }
@@ -26754,7 +27048,7 @@
       "version": "4.3.0",
       "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz",
       "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==",
-      "dev": true,
+      "devOptional": true,
       "bin": {
         "marked": "bin/marked.js"
       },
@@ -26789,7 +27083,7 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
       "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
-      "dev": true
+      "devOptional": true
     },
     "node_modules/media-typer": {
       "version": "0.3.0",
@@ -27229,7 +27523,7 @@
       "version": "1.53.0",
       "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz",
       "integrity": "sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==",
-      "dev": true,
+      "devOptional": true,
       "engines": {
         "node": ">= 0.6"
       }
@@ -27845,9 +28139,9 @@
       }
     },
     "node_modules/multer": {
-      "version": "1.4.4-lts.1",
-      "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4-lts.1.tgz",
-      "integrity": "sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==",
+      "version": "1.4.5-lts.1",
+      "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz",
+      "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==",
       "dependencies": {
         "append-field": "^1.0.0",
         "busboy": "^1.0.0",
@@ -31935,9 +32229,9 @@
       "integrity": "sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w=="
     },
     "node_modules/postman-request": {
-      "version": "2.88.1-postman.38",
-      "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.38.tgz",
-      "integrity": "sha512-gQpK/jjTreGGv7VKeCzwlPa8dulOBANpXfLFuYUEu7sTWQTC6Kv60kfW0z047p7ujMmVwsZkrre/QP/u3DkdnQ==",
+      "version": "2.88.1-postman.39",
+      "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.39.tgz",
+      "integrity": "sha512-rsncxxDlbn1YpygXSgJqbJzIjGlHFcZjbYDzeBPTQHMDfLuSTzZz735JHV8i1+lOROuJ7MjNap4eaSD3UijHzQ==",
       "dev": true,
       "dependencies": {
         "@postman/form-data": "~3.1.1",
@@ -32508,6 +32802,15 @@
         "node": ">=6"
       }
     },
+    "node_modules/punycode.js": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
+      "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==",
+      "optional": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
     "node_modules/pupa": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz",
@@ -33724,6 +34027,15 @@
       "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
       "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
     },
+    "node_modules/requizzle": {
+      "version": "0.2.4",
+      "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz",
+      "integrity": "sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==",
+      "optional": true,
+      "dependencies": {
+        "lodash": "^4.17.21"
+      }
+    },
     "node_modules/resolve": {
       "version": "1.22.8",
       "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
@@ -36026,7 +36338,7 @@
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
       "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
-      "dev": true,
+      "devOptional": true,
       "engines": {
         "node": ">=8"
       },
@@ -36960,6 +37272,11 @@
         "node": "*"
       }
     },
+    "node_modules/text-decoding": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/text-decoding/-/text-decoding-1.0.0.tgz",
+      "integrity": "sha512-/0TJD42KDnVwKmDK6jj3xP7E2MG7SHAOG4tyTgyUCRPdHwvkquYNLEQltmdMa3owq3TkddCVcTsoctJI8VQNKA=="
+    },
     "node_modules/text-extensions": {
       "version": "1.9.0",
       "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz",
@@ -37081,7 +37398,7 @@
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
       "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
-      "dev": true,
+      "devOptional": true,
       "engines": {
         "node": ">=4"
       }
@@ -38299,7 +38616,7 @@
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
       "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
-      "dev": true
+      "devOptional": true
     },
     "node_modules/uglify-js": {
       "version": "3.19.2",
@@ -38365,9 +38682,9 @@
       }
     },
     "node_modules/undici-types": {
-      "version": "6.18.2",
-      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.18.2.tgz",
-      "integrity": "sha512-5ruQbENj95yDYJNS3TvcaxPMshV7aizdv/hWYjGIKoANWKjhWNBsr2YEuYZKodQulB1b8l7ILOuDQep3afowQQ=="
+      "version": "6.19.6",
+      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.6.tgz",
+      "integrity": "sha512-e/vggGopEfTKSvj4ihnOLTsqhrKRN3LeO6qSN/GxohhuRv8qH9bNQ4B8W7e/vFL+0XTnmHPB4/kegunZGA4Org=="
     },
     "node_modules/undici/node_modules/@fastify/busboy": {
       "version": "2.1.1",
@@ -39284,9 +39601,9 @@
       }
     },
     "node_modules/winston": {
-      "version": "3.14.1",
-      "resolved": "https://registry.npmjs.org/winston/-/winston-3.14.1.tgz",
-      "integrity": "sha512-CJi4Il/msz8HkdDfXOMu+r5Au/oyEjFiOZzbX2d23hRLY0narGjqfE5lFlrT5hfYJhPtM8b85/GNFsxIML/RVA==",
+      "version": "3.14.2",
+      "resolved": "https://registry.npmjs.org/winston/-/winston-3.14.2.tgz",
+      "integrity": "sha512-CO8cdpBB2yqzEf8v895L+GNKYJiEq8eKlHU38af3snQBQ+sdAIUepjMSguOIJC7ICbzm0ZI+Af2If4vIJrtmOg==",
       "dependencies": {
         "@colors/colors": "^1.6.0",
         "@dabh/diagnostics": "^2.0.2",
@@ -41302,15 +41619,6 @@
         "@loopback/core": "^6.0.2"
       }
     },
-    "packages/cache/node_modules/@types/node": {
-      "version": "20.14.15",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.15.tgz",
-      "integrity": "sha512-Fz1xDMCF/B00/tYSVMlmK7hVeLh7jE5f3B7X1/hmV0MJBwE27KlS7EvD/Yp+z1lm8mVhwV5w+n8jOZG8AfTlKw==",
-      "dev": true,
-      "dependencies": {
-        "undici-types": "~5.26.4"
-      }
-    },
     "packages/cache/node_modules/typescript": {
       "version": "5.5.4",
       "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
@@ -41324,12 +41632,6 @@
         "node": ">=14.17"
       }
     },
-    "packages/cache/node_modules/undici-types": {
-      "version": "5.26.5",
-      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
-      "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
-      "dev": true
-    },
     "packages/cli": {
       "name": "@sourceloop/cli",
       "version": "9.1.0",
@@ -41390,8 +41692,9 @@
     },
     "packages/cli/node_modules/@loopback/eslint-config": {
       "version": "14.0.5",
+      "resolved": "https://registry.npmjs.org/@loopback/eslint-config/-/eslint-config-14.0.5.tgz",
+      "integrity": "sha512-8siWnjPzQhx016YkvFNS4Y4wyK9gR2wRCwKfIHdXcD9AwQlqPCRb4H1YagYdx3QEQ5vycW3cpTA1nwZReN2D8A==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "@typescript-eslint/eslint-plugin": "^6.8.0",
         "@typescript-eslint/parser": "^6.8.0",
@@ -41408,8 +41711,9 @@
     },
     "packages/cli/node_modules/ansi-styles": {
       "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "color-convert": "^1.9.0"
       },
@@ -41419,16 +41723,18 @@
     },
     "packages/cli/node_modules/argparse": {
       "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "sprintf-js": "~1.0.2"
       }
     },
     "packages/cli/node_modules/brace-expansion": {
       "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "balanced-match": "^1.0.0",
         "concat-map": "0.0.1"
@@ -41445,8 +41751,9 @@
     },
     "packages/cli/node_modules/chalk": {
       "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "ansi-styles": "^3.2.1",
         "escape-string-regexp": "^1.0.5",
@@ -41469,34 +41776,39 @@
     },
     "packages/cli/node_modules/color-convert": {
       "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "color-name": "1.1.3"
       }
     },
     "packages/cli/node_modules/color-name": {
       "version": "1.1.3",
-      "dev": true,
-      "license": "MIT"
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+      "dev": true
     },
     "packages/cli/node_modules/commander": {
       "version": "2.20.3",
-      "dev": true,
-      "license": "MIT"
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+      "dev": true
     },
     "packages/cli/node_modules/diff": {
       "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
+      "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
       "dev": true,
-      "license": "BSD-3-Clause",
       "engines": {
         "node": ">=0.3.1"
       }
     },
     "packages/cli/node_modules/escape-string-regexp": {
       "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
       "dev": true,
-      "license": "MIT",
       "engines": {
         "node": ">=0.8.0"
       }
@@ -41529,8 +41841,10 @@
     },
     "packages/cli/node_modules/glob": {
       "version": "7.2.3",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+      "deprecated": "Glob versions prior to v9 are no longer supported",
       "dev": true,
-      "license": "ISC",
       "dependencies": {
         "fs.realpath": "^1.0.0",
         "inflight": "^1.0.4",
@@ -41548,8 +41862,9 @@
     },
     "packages/cli/node_modules/has-flag": {
       "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
       "dev": true,
-      "license": "MIT",
       "engines": {
         "node": ">=4"
       }
@@ -41571,8 +41886,9 @@
     },
     "packages/cli/node_modules/js-yaml": {
       "version": "3.14.1",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "argparse": "^1.0.7",
         "esprima": "^4.0.0"
@@ -41595,8 +41911,9 @@
     },
     "packages/cli/node_modules/minimatch": {
       "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
       "dev": true,
-      "license": "ISC",
       "dependencies": {
         "brace-expansion": "^1.1.7"
       },
@@ -41606,8 +41923,9 @@
     },
     "packages/cli/node_modules/mkdirp": {
       "version": "0.5.6",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+      "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "minimist": "^1.2.6"
       },
@@ -41713,13 +42031,15 @@
     },
     "packages/cli/node_modules/sprintf-js": {
       "version": "1.0.3",
-      "dev": true,
-      "license": "BSD-3-Clause"
+      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+      "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+      "dev": true
     },
     "packages/cli/node_modules/supports-color": {
       "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "has-flag": "^3.0.0"
       },
@@ -41729,8 +42049,10 @@
     },
     "packages/cli/node_modules/tslint": {
       "version": "6.1.3",
+      "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz",
+      "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==",
+      "deprecated": "TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint/issues/4534 for more information.",
       "dev": true,
-      "license": "Apache-2.0",
       "dependencies": {
         "@babel/code-frame": "^7.0.0",
         "builtin-modules": "^1.1.1",
@@ -41758,13 +42080,15 @@
     },
     "packages/cli/node_modules/tslint/node_modules/tslib": {
       "version": "1.14.1",
-      "dev": true,
-      "license": "0BSD"
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+      "dev": true
     },
     "packages/cli/node_modules/typescript": {
       "version": "4.7.4",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
+      "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -41931,9 +42255,9 @@
       }
     },
     "packages/core/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -41941,8 +42265,9 @@
     },
     "packages/core/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -42007,14 +42332,16 @@
     },
     "packages/feature-toggle/node_modules/@sinonjs/commons": {
       "version": "2.0.0",
-      "license": "BSD-3-Clause",
+      "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz",
+      "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==",
       "dependencies": {
         "type-detect": "4.0.8"
       }
     },
     "packages/feature-toggle/node_modules/@sinonjs/samsam": {
       "version": "7.0.1",
-      "license": "BSD-3-Clause",
+      "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-7.0.1.tgz",
+      "integrity": "sha512-zsAk2Jkiq89mhZovB2LLOdTCxJF4hqqTToGP0ASWlhp4I1hqOjcfmZGafXntCN7MDC6yySH0mFHrYtHceOeLmw==",
       "dependencies": {
         "@sinonjs/commons": "^2.0.0",
         "lodash.get": "^4.4.2",
@@ -42022,9 +42349,9 @@
       }
     },
     "packages/feature-toggle/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -42032,7 +42359,9 @@
     },
     "packages/feature-toggle/node_modules/sinon": {
       "version": "14.0.2",
-      "license": "BSD-3-Clause",
+      "resolved": "https://registry.npmjs.org/sinon/-/sinon-14.0.2.tgz",
+      "integrity": "sha512-PDpV0ZI3ZCS3pEqx0vpNp6kzPhHrLx72wA0G+ZLaaJjLIYeE0n8INlgaohKuGy7hP0as5tbUd23QWu5U233t+w==",
+      "deprecated": "16.1.1",
       "dependencies": {
         "@sinonjs/commons": "^2.0.0",
         "@sinonjs/fake-timers": "^9.1.2",
@@ -42048,7 +42377,8 @@
     },
     "packages/feature-toggle/node_modules/supports-color": {
       "version": "7.2.0",
-      "license": "MIT",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
       "dependencies": {
         "has-flag": "^4.0.0"
       },
@@ -42058,15 +42388,17 @@
     },
     "packages/feature-toggle/node_modules/type-detect": {
       "version": "4.0.8",
-      "license": "MIT",
+      "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+      "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
       "engines": {
         "node": ">=4"
       }
     },
     "packages/feature-toggle/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -42123,87 +42455,11 @@
         "@loopback/core": "^6.0.2"
       }
     },
-    "packages/file-utils/node_modules/@types/node": {
-      "version": "20.14.15",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "undici-types": "~5.26.4"
-      }
-    },
-    "packages/file-utils/node_modules/concat-stream": {
-      "version": "1.6.2",
-      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
-      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
-      "engines": [
-        "node >= 0.8"
-      ],
-      "dependencies": {
-        "buffer-from": "^1.0.0",
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.2.2",
-        "typedarray": "^0.0.6"
-      }
-    },
-    "packages/file-utils/node_modules/mkdirp": {
-      "version": "0.5.6",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
-      "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
-      "dependencies": {
-        "minimist": "^1.2.6"
-      },
-      "bin": {
-        "mkdirp": "bin/cmd.js"
-      }
-    },
-    "packages/file-utils/node_modules/multer": {
-      "version": "1.4.5-lts.1",
-      "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz",
-      "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==",
-      "dependencies": {
-        "append-field": "^1.0.0",
-        "busboy": "^1.0.0",
-        "concat-stream": "^1.5.2",
-        "mkdirp": "^0.5.4",
-        "object-assign": "^4.1.1",
-        "type-is": "^1.6.4",
-        "xtend": "^4.0.0"
-      },
-      "engines": {
-        "node": ">= 6.0.0"
-      }
-    },
-    "packages/file-utils/node_modules/readable-stream": {
-      "version": "2.3.8",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
-      "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
-      "dependencies": {
-        "core-util-is": "~1.0.0",
-        "inherits": "~2.0.3",
-        "isarray": "~1.0.0",
-        "process-nextick-args": "~2.0.0",
-        "safe-buffer": "~5.1.1",
-        "string_decoder": "~1.1.1",
-        "util-deprecate": "~1.0.1"
-      }
-    },
-    "packages/file-utils/node_modules/safe-buffer": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
-    },
-    "packages/file-utils/node_modules/string_decoder": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-      "dependencies": {
-        "safe-buffer": "~5.1.0"
-      }
-    },
     "packages/file-utils/node_modules/typescript": {
       "version": "5.5.4",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
+      "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -42212,12 +42468,6 @@
         "node": ">=14.17"
       }
     },
-    "packages/file-utils/node_modules/undici-types": {
-      "version": "5.26.5",
-      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
-      "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
-      "dev": true
-    },
     "sandbox/audit-ms-example": {
       "name": "@sourceloop/audit-ms-example",
       "version": "0.8.0",
@@ -42260,9 +42510,9 @@
       }
     },
     "sandbox/audit-ms-example/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -42270,8 +42520,9 @@
     },
     "sandbox/audit-ms-example/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -42335,9 +42586,9 @@
       }
     },
     "sandbox/auth-mfa-example/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -42557,8 +42808,9 @@
     },
     "sandbox/auth-mfa-example/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -42673,9 +42925,9 @@
       }
     },
     "sandbox/auth-ms-basic-example/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -42683,8 +42935,9 @@
     },
     "sandbox/auth-ms-basic-example/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -42747,9 +43000,9 @@
       }
     },
     "sandbox/auth-multitenant-example/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -42757,8 +43010,9 @@
     },
     "sandbox/auth-multitenant-example/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -42823,9 +43077,9 @@
       }
     },
     "sandbox/auth-public-private-client/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -43045,8 +43299,9 @@
     },
     "sandbox/auth-public-private-client/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -43172,9 +43427,9 @@
       }
     },
     "sandbox/cache-example/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -43182,8 +43437,9 @@
     },
     "sandbox/cache-example/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -43235,9 +43491,9 @@
       }
     },
     "sandbox/feature-toggle-example/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -43245,8 +43501,9 @@
     },
     "sandbox/feature-toggle-example/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -43298,9 +43555,9 @@
       }
     },
     "sandbox/in-mail-example/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -43308,8 +43565,9 @@
     },
     "sandbox/in-mail-example/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -43369,8 +43627,9 @@
     },
     "sandbox/nestjs-auth-ms-example/node_modules/@jest/expect-utils": {
       "version": "28.1.3",
+      "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz",
+      "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "jest-get-type": "^28.0.2"
       },
@@ -43380,17 +43639,18 @@
     },
     "sandbox/nestjs-auth-ms-example/node_modules/@types/jest": {
       "version": "28.1.8",
+      "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.8.tgz",
+      "integrity": "sha512-8TJkV++s7B6XqnDrzR1m/TT0A0h948Pnl/097veySPN67VRAgQ4gZ7n2KfJo2rVq6njQjdxU3GCCyDvAeuHoiw==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "expect": "^28.0.0",
         "pretty-format": "^28.0.0"
       }
     },
     "sandbox/nestjs-auth-ms-example/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -43398,8 +43658,9 @@
     },
     "sandbox/nestjs-auth-ms-example/node_modules/@typescript-eslint/eslint-plugin": {
       "version": "7.18.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz",
+      "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "@eslint-community/regexpp": "^4.10.0",
         "@typescript-eslint/scope-manager": "7.18.0",
@@ -43430,8 +43691,9 @@
     },
     "sandbox/nestjs-auth-ms-example/node_modules/@typescript-eslint/parser": {
       "version": "7.18.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz",
+      "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==",
       "dev": true,
-      "license": "BSD-2-Clause",
       "dependencies": {
         "@typescript-eslint/scope-manager": "7.18.0",
         "@typescript-eslint/types": "7.18.0",
@@ -43457,8 +43719,9 @@
     },
     "sandbox/nestjs-auth-ms-example/node_modules/@typescript-eslint/scope-manager": {
       "version": "7.18.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz",
+      "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "@typescript-eslint/types": "7.18.0",
         "@typescript-eslint/visitor-keys": "7.18.0"
@@ -43473,8 +43736,9 @@
     },
     "sandbox/nestjs-auth-ms-example/node_modules/@typescript-eslint/type-utils": {
       "version": "7.18.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz",
+      "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "@typescript-eslint/typescript-estree": "7.18.0",
         "@typescript-eslint/utils": "7.18.0",
@@ -43499,8 +43763,9 @@
     },
     "sandbox/nestjs-auth-ms-example/node_modules/@typescript-eslint/types": {
       "version": "7.18.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz",
+      "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==",
       "dev": true,
-      "license": "MIT",
       "engines": {
         "node": "^18.18.0 || >=20.0.0"
       },
@@ -43511,8 +43776,9 @@
     },
     "sandbox/nestjs-auth-ms-example/node_modules/@typescript-eslint/typescript-estree": {
       "version": "7.18.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz",
+      "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==",
       "dev": true,
-      "license": "BSD-2-Clause",
       "dependencies": {
         "@typescript-eslint/types": "7.18.0",
         "@typescript-eslint/visitor-keys": "7.18.0",
@@ -43538,8 +43804,9 @@
     },
     "sandbox/nestjs-auth-ms-example/node_modules/@typescript-eslint/utils": {
       "version": "7.18.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz",
+      "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.4.0",
         "@typescript-eslint/scope-manager": "7.18.0",
@@ -43559,8 +43826,9 @@
     },
     "sandbox/nestjs-auth-ms-example/node_modules/@typescript-eslint/visitor-keys": {
       "version": "7.18.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz",
+      "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "@typescript-eslint/types": "7.18.0",
         "eslint-visitor-keys": "^3.4.3"
@@ -43575,8 +43843,9 @@
     },
     "sandbox/nestjs-auth-ms-example/node_modules/ansi-styles": {
       "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+      "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
       "dev": true,
-      "license": "MIT",
       "engines": {
         "node": ">=10"
       },
@@ -43586,16 +43855,18 @@
     },
     "sandbox/nestjs-auth-ms-example/node_modules/diff-sequences": {
       "version": "28.1.1",
+      "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz",
+      "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==",
       "dev": true,
-      "license": "MIT",
       "engines": {
         "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
       }
     },
     "sandbox/nestjs-auth-ms-example/node_modules/expect": {
       "version": "28.1.3",
+      "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz",
+      "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "@jest/expect-utils": "^28.1.3",
         "jest-get-type": "^28.0.2",
@@ -43609,8 +43880,9 @@
     },
     "sandbox/nestjs-auth-ms-example/node_modules/globby": {
       "version": "11.1.0",
+      "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+      "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "array-union": "^2.1.0",
         "dir-glob": "^3.0.1",
@@ -43628,8 +43900,9 @@
     },
     "sandbox/nestjs-auth-ms-example/node_modules/jest-diff": {
       "version": "28.1.3",
+      "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz",
+      "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "chalk": "^4.0.0",
         "diff-sequences": "^28.1.1",
@@ -43642,16 +43915,18 @@
     },
     "sandbox/nestjs-auth-ms-example/node_modules/jest-get-type": {
       "version": "28.0.2",
+      "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz",
+      "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==",
       "dev": true,
-      "license": "MIT",
       "engines": {
         "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
       }
     },
     "sandbox/nestjs-auth-ms-example/node_modules/jest-matcher-utils": {
       "version": "28.1.3",
+      "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz",
+      "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "chalk": "^4.0.0",
         "jest-diff": "^28.1.3",
@@ -43664,8 +43939,9 @@
     },
     "sandbox/nestjs-auth-ms-example/node_modules/jest-message-util": {
       "version": "28.1.3",
+      "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz",
+      "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "@babel/code-frame": "^7.12.13",
         "@jest/types": "^28.1.3",
@@ -43683,8 +43959,9 @@
     },
     "sandbox/nestjs-auth-ms-example/node_modules/jest-util": {
       "version": "28.1.3",
+      "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz",
+      "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "@jest/types": "^28.1.3",
         "@types/node": "*",
@@ -43699,8 +43976,9 @@
     },
     "sandbox/nestjs-auth-ms-example/node_modules/pretty-format": {
       "version": "28.1.3",
+      "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz",
+      "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "@jest/schemas": "^28.1.3",
         "ansi-regex": "^5.0.1",
@@ -43713,8 +43991,9 @@
     },
     "sandbox/nestjs-auth-ms-example/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -43768,9 +44047,9 @@
       }
     },
     "sandbox/notification-socket-example/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -43778,8 +44057,9 @@
     },
     "sandbox/notification-socket-example/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -43829,9 +44109,9 @@
       }
     },
     "sandbox/oauth-example/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -43839,8 +44119,9 @@
     },
     "sandbox/oauth-example/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -43884,9 +44165,9 @@
       }
     },
     "sandbox/oidc-basic-example/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -43894,8 +44175,9 @@
     },
     "sandbox/oidc-basic-example/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -43946,9 +44228,9 @@
       }
     },
     "sandbox/payment-example/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -43956,8 +44238,9 @@
     },
     "sandbox/payment-example/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -44017,7 +44300,8 @@
     },
     "sandbox/pubnub-example/node_modules/@fastify/busboy": {
       "version": "1.2.1",
-      "license": "MIT",
+      "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-1.2.1.tgz",
+      "integrity": "sha512-7PQA7EH43S0CxcOa9OeAnaeA0oQ+e/DHNPZwSQM9CQHW76jle5+OvLdibRp/Aafs9KXbLhxyjOTkRjWUbQEd3Q==",
       "dependencies": {
         "text-decoding": "^1.0.0"
       },
@@ -44027,15 +44311,18 @@
     },
     "sandbox/pubnub-example/node_modules/@firebase/app-types": {
       "version": "0.9.0",
-      "license": "Apache-2.0"
+      "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.0.tgz",
+      "integrity": "sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q=="
     },
     "sandbox/pubnub-example/node_modules/@firebase/auth-interop-types": {
       "version": "0.2.1",
-      "license": "Apache-2.0"
+      "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.1.tgz",
+      "integrity": "sha512-VOaGzKp65MY6P5FI84TfYKBXEPi6LmOCSMMzys6o2BN2LOsqy7pCuZCup7NYnfbk5OkkQKzvIfHOzTm0UDpkyg=="
     },
     "sandbox/pubnub-example/node_modules/@firebase/component": {
       "version": "0.6.4",
-      "license": "Apache-2.0",
+      "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.4.tgz",
+      "integrity": "sha512-rLMyrXuO9jcAUCaQXCMjCMUsWrba5fzHlNK24xz5j2W6A/SRmK8mZJ/hn7V0fViLbxC0lPMtrK1eYzk6Fg03jA==",
       "dependencies": {
         "@firebase/util": "1.9.3",
         "tslib": "^2.1.0"
@@ -44043,7 +44330,8 @@
     },
     "sandbox/pubnub-example/node_modules/@firebase/database": {
       "version": "0.14.4",
-      "license": "Apache-2.0",
+      "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.14.4.tgz",
+      "integrity": "sha512-+Ea/IKGwh42jwdjCyzTmeZeLM3oy1h0mFPsTy6OqCWzcu/KFqRAr5Tt1HRCOBlNOdbh84JPZC47WLU18n2VbxQ==",
       "dependencies": {
         "@firebase/auth-interop-types": "0.2.1",
         "@firebase/component": "0.6.4",
@@ -44055,7 +44343,8 @@
     },
     "sandbox/pubnub-example/node_modules/@firebase/database-compat": {
       "version": "0.3.4",
-      "license": "Apache-2.0",
+      "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-0.3.4.tgz",
+      "integrity": "sha512-kuAW+l+sLMUKBThnvxvUZ+Q1ZrF/vFJ58iUY9kAcbX48U03nVzIF6Tmkf0p3WVQwMqiXguSgtOPIB6ZCeF+5Gg==",
       "dependencies": {
         "@firebase/component": "0.6.4",
         "@firebase/database": "0.14.4",
@@ -44067,7 +44356,8 @@
     },
     "sandbox/pubnub-example/node_modules/@firebase/database-types": {
       "version": "0.10.4",
-      "license": "Apache-2.0",
+      "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.10.4.tgz",
+      "integrity": "sha512-dPySn0vJ/89ZeBac70T+2tWWPiJXWbmRygYv0smT5TfE3hDrQ09eKMF3Y+vMlTdrMWq7mUdYW5REWPSGH4kAZQ==",
       "dependencies": {
         "@firebase/app-types": "0.9.0",
         "@firebase/util": "1.9.3"
@@ -44075,21 +44365,24 @@
     },
     "sandbox/pubnub-example/node_modules/@firebase/logger": {
       "version": "0.4.0",
-      "license": "Apache-2.0",
+      "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.0.tgz",
+      "integrity": "sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA==",
       "dependencies": {
         "tslib": "^2.1.0"
       }
     },
     "sandbox/pubnub-example/node_modules/@firebase/util": {
       "version": "1.9.3",
-      "license": "Apache-2.0",
+      "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.3.tgz",
+      "integrity": "sha512-DY02CRhOZwpzO36fHpuVysz6JZrscPiBXD0fXp6qSrL9oNOx5KWICKdR95C0lSITzxp0TZosVyHqzatE8JbcjA==",
       "dependencies": {
         "tslib": "^2.1.0"
       }
     },
     "sandbox/pubnub-example/node_modules/@google-cloud/firestore": {
       "version": "6.8.0",
-      "license": "Apache-2.0",
+      "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-6.8.0.tgz",
+      "integrity": "sha512-JRpk06SmZXLGz0pNx1x7yU3YhkUXheKgH5hbDZ4kMsdhtfV5qPLJLRI4wv69K0cZorIk+zTMOwptue7hizo0eA==",
       "optional": true,
       "dependencies": {
         "fast-deep-equal": "^3.1.1",
@@ -44103,7 +44396,8 @@
     },
     "sandbox/pubnub-example/node_modules/@google-cloud/paginator": {
       "version": "3.0.7",
-      "license": "Apache-2.0",
+      "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.7.tgz",
+      "integrity": "sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ==",
       "optional": true,
       "dependencies": {
         "arrify": "^2.0.0",
@@ -44115,7 +44409,8 @@
     },
     "sandbox/pubnub-example/node_modules/@google-cloud/projectify": {
       "version": "3.0.0",
-      "license": "Apache-2.0",
+      "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-3.0.0.tgz",
+      "integrity": "sha512-HRkZsNmjScY6Li8/kb70wjGlDDyLkVk3KvoEo9uIoxSjYLJasGiCch9+PqRVDOCGUFvEIqyogl+BeqILL4OJHA==",
       "optional": true,
       "engines": {
         "node": ">=12.0.0"
@@ -44123,7 +44418,8 @@
     },
     "sandbox/pubnub-example/node_modules/@google-cloud/promisify": {
       "version": "3.0.1",
-      "license": "Apache-2.0",
+      "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-3.0.1.tgz",
+      "integrity": "sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA==",
       "optional": true,
       "engines": {
         "node": ">=12"
@@ -44131,7 +44427,8 @@
     },
     "sandbox/pubnub-example/node_modules/@google-cloud/storage": {
       "version": "6.12.0",
-      "license": "Apache-2.0",
+      "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-6.12.0.tgz",
+      "integrity": "sha512-78nNAY7iiZ4O/BouWMWTD/oSF2YtYgYB3GZirn0To6eBOugjXVoK+GXgUXOl+HlqbAOyHxAVXOlsj3snfbQ1dw==",
       "optional": true,
       "dependencies": {
         "@google-cloud/paginator": "^3.0.7",
@@ -44159,7 +44456,8 @@
     },
     "sandbox/pubnub-example/node_modules/@grpc/grpc-js": {
       "version": "1.8.22",
-      "license": "Apache-2.0",
+      "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.22.tgz",
+      "integrity": "sha512-oAjDdN7fzbUi+4hZjKG96MR6KTEubAeMpQEb+77qy+3r0Ua5xTFuie6JOLr4ZZgl5g+W5/uRTS2M1V8mVAFPuA==",
       "optional": true,
       "dependencies": {
         "@grpc/proto-loader": "^0.7.0",
@@ -44170,16 +44468,17 @@
       }
     },
     "sandbox/pubnub-example/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dependencies": {
         "undici-types": "~5.26.4"
       }
     },
     "sandbox/pubnub-example/node_modules/escodegen": {
       "version": "1.14.3",
-      "license": "BSD-2-Clause",
+      "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz",
+      "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==",
       "optional": true,
       "dependencies": {
         "esprima": "^4.0.1",
@@ -44200,7 +44499,8 @@
     },
     "sandbox/pubnub-example/node_modules/escodegen/node_modules/estraverse": {
       "version": "4.3.0",
-      "license": "BSD-2-Clause",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
       "optional": true,
       "engines": {
         "node": ">=4.0"
@@ -44208,7 +44508,8 @@
     },
     "sandbox/pubnub-example/node_modules/firebase-admin": {
       "version": "11.11.1",
-      "license": "Apache-2.0",
+      "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-11.11.1.tgz",
+      "integrity": "sha512-UyEbq+3u6jWzCYbUntv/HuJiTixwh36G1R9j0v71mSvGAx/YZEWEW7uSGLYxBYE6ckVRQoKMr40PYUEzrm/4dg==",
       "dependencies": {
         "@fastify/busboy": "^1.2.1",
         "@firebase/database-compat": "^0.3.4",
@@ -44229,18 +44530,20 @@
     },
     "sandbox/pubnub-example/node_modules/firebase-admin/node_modules/uuid": {
       "version": "9.0.1",
+      "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+      "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
       "funding": [
         "https://github.com/sponsors/broofa",
         "https://github.com/sponsors/ctavan"
       ],
-      "license": "MIT",
       "bin": {
         "uuid": "dist/bin/uuid"
       }
     },
     "sandbox/pubnub-example/node_modules/gaxios": {
       "version": "5.1.3",
-      "license": "Apache-2.0",
+      "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz",
+      "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==",
       "optional": true,
       "dependencies": {
         "extend": "^3.0.2",
@@ -44254,7 +44557,8 @@
     },
     "sandbox/pubnub-example/node_modules/gcp-metadata": {
       "version": "5.3.0",
-      "license": "Apache-2.0",
+      "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz",
+      "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==",
       "optional": true,
       "dependencies": {
         "gaxios": "^5.0.0",
@@ -44266,7 +44570,9 @@
     },
     "sandbox/pubnub-example/node_modules/glob": {
       "version": "8.1.0",
-      "license": "ISC",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+      "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+      "deprecated": "Glob versions prior to v9 are no longer supported",
       "optional": true,
       "dependencies": {
         "fs.realpath": "^1.0.0",
@@ -44284,7 +44590,8 @@
     },
     "sandbox/pubnub-example/node_modules/google-auth-library": {
       "version": "8.9.0",
-      "license": "Apache-2.0",
+      "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.9.0.tgz",
+      "integrity": "sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg==",
       "optional": true,
       "dependencies": {
         "arrify": "^2.0.0",
@@ -44303,7 +44610,8 @@
     },
     "sandbox/pubnub-example/node_modules/google-gax": {
       "version": "3.6.1",
-      "license": "Apache-2.0",
+      "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-3.6.1.tgz",
+      "integrity": "sha512-g/lcUjGcB6DSw2HxgEmCDOrI/CByOwqRvsuUvNalHUK2iPPPlmAIpbMbl62u0YufGMr8zgE3JL7th6dCb1Ry+w==",
       "optional": true,
       "dependencies": {
         "@grpc/grpc-js": "~1.8.0",
@@ -44332,8 +44640,9 @@
     },
     "sandbox/pubnub-example/node_modules/google-gax/node_modules/protobufjs": {
       "version": "7.2.4",
+      "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.4.tgz",
+      "integrity": "sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ==",
       "hasInstallScript": true,
-      "license": "BSD-3-Clause",
       "optional": true,
       "dependencies": {
         "@protobufjs/aspromise": "^1.1.2",
@@ -44355,7 +44664,8 @@
     },
     "sandbox/pubnub-example/node_modules/google-gax/node_modules/protobufjs-cli": {
       "version": "1.1.1",
-      "license": "BSD-3-Clause",
+      "resolved": "https://registry.npmjs.org/protobufjs-cli/-/protobufjs-cli-1.1.1.tgz",
+      "integrity": "sha512-VPWMgIcRNyQwWUv8OLPyGQ/0lQY/QTQAVN5fh+XzfDwsVw1FZ2L3DM/bcBf8WPiRz2tNpaov9lPZfNcmNo6LXA==",
       "optional": true,
       "dependencies": {
         "chalk": "^4.0.0",
@@ -44382,7 +44692,8 @@
     },
     "sandbox/pubnub-example/node_modules/gtoken": {
       "version": "6.1.2",
-      "license": "MIT",
+      "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz",
+      "integrity": "sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==",
       "optional": true,
       "dependencies": {
         "gaxios": "^5.0.1",
@@ -44395,7 +44706,8 @@
     },
     "sandbox/pubnub-example/node_modules/levn": {
       "version": "0.3.0",
-      "license": "MIT",
+      "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+      "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
       "optional": true,
       "dependencies": {
         "prelude-ls": "~1.1.2",
@@ -44407,7 +44719,8 @@
     },
     "sandbox/pubnub-example/node_modules/lru-cache": {
       "version": "6.0.0",
-      "license": "ISC",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
       "optional": true,
       "dependencies": {
         "yallist": "^4.0.0"
@@ -44418,7 +44731,8 @@
     },
     "sandbox/pubnub-example/node_modules/minimatch": {
       "version": "5.1.6",
-      "license": "ISC",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+      "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
       "optional": true,
       "dependencies": {
         "brace-expansion": "^2.0.1"
@@ -44429,7 +44743,8 @@
     },
     "sandbox/pubnub-example/node_modules/optionator": {
       "version": "0.8.3",
-      "license": "MIT",
+      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+      "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
       "optional": true,
       "dependencies": {
         "deep-is": "~0.1.3",
@@ -44445,6 +44760,8 @@
     },
     "sandbox/pubnub-example/node_modules/prelude-ls": {
       "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+      "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
       "optional": true,
       "engines": {
         "node": ">= 0.8.0"
@@ -44452,7 +44769,8 @@
     },
     "sandbox/pubnub-example/node_modules/proto3-json-serializer": {
       "version": "1.1.1",
-      "license": "Apache-2.0",
+      "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-1.1.1.tgz",
+      "integrity": "sha512-AwAuY4g9nxx0u52DnSMkqqgyLHaW/XaPLtaAo3y/ZCfeaQB/g4YDH4kb8Wc/mWzWvu0YjOznVnfn373MVZZrgw==",
       "optional": true,
       "dependencies": {
         "protobufjs": "^7.0.0"
@@ -44463,7 +44781,8 @@
     },
     "sandbox/pubnub-example/node_modules/retry-request": {
       "version": "5.0.2",
-      "license": "MIT",
+      "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-5.0.2.tgz",
+      "integrity": "sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ==",
       "optional": true,
       "dependencies": {
         "debug": "^4.1.1",
@@ -44475,7 +44794,8 @@
     },
     "sandbox/pubnub-example/node_modules/source-map": {
       "version": "0.6.1",
-      "license": "BSD-3-Clause",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
       "optional": true,
       "engines": {
         "node": ">=0.10.0"
@@ -44483,7 +44803,8 @@
     },
     "sandbox/pubnub-example/node_modules/teeny-request": {
       "version": "8.0.3",
-      "license": "Apache-2.0",
+      "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-8.0.3.tgz",
+      "integrity": "sha512-jJZpA5He2y52yUhA7pyAGZlgQpcB+xLjcN0eUFxr9c8hP/H7uOXbBNVo/O0C/xVfJLJs680jvkFgVJEEvk9+ww==",
       "optional": true,
       "dependencies": {
         "http-proxy-agent": "^5.0.0",
@@ -44498,11 +44819,12 @@
     },
     "sandbox/pubnub-example/node_modules/teeny-request/node_modules/uuid": {
       "version": "9.0.1",
+      "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+      "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
       "funding": [
         "https://github.com/sponsors/broofa",
         "https://github.com/sponsors/ctavan"
       ],
-      "license": "MIT",
       "optional": true,
       "bin": {
         "uuid": "dist/bin/uuid"
@@ -44510,7 +44832,8 @@
     },
     "sandbox/pubnub-example/node_modules/type-check": {
       "version": "0.3.2",
-      "license": "MIT",
+      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+      "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
       "optional": true,
       "dependencies": {
         "prelude-ls": "~1.1.2"
@@ -44521,8 +44844,9 @@
     },
     "sandbox/pubnub-example/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -44574,9 +44898,9 @@
       }
     },
     "sandbox/scheduler-example/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -44584,8 +44908,9 @@
     },
     "sandbox/scheduler-example/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -44640,9 +44965,9 @@
       }
     },
     "sandbox/search-ms-example/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -44650,8 +44975,9 @@
     },
     "sandbox/search-ms-example/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -44705,9 +45031,9 @@
       }
     },
     "sandbox/task-example/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -44715,8 +45041,9 @@
     },
     "sandbox/task-example/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -44780,9 +45107,9 @@
       }
     },
     "sandbox/user-tenant-example/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -45002,8 +45329,9 @@
     },
     "sandbox/user-tenant-example/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -45113,9 +45441,9 @@
       }
     },
     "sandbox/video-conferencing-ms-example/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -45123,8 +45451,9 @@
     },
     "sandbox/video-conferencing-ms-example/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -45181,9 +45510,9 @@
       }
     },
     "sandbox/workflow-ms-example/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -45191,8 +45520,9 @@
     },
     "sandbox/workflow-ms-example/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -45255,9 +45585,9 @@
       }
     },
     "services/audit-service/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -45265,8 +45595,9 @@
     },
     "services/audit-service/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -45367,8 +45698,9 @@
     },
     "services/authentication-service/node_modules/@sinonjs/samsam": {
       "version": "6.1.3",
+      "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.3.tgz",
+      "integrity": "sha512-nhOb2dWPeb1sd3IQXL/dVPnKHDOAFfvichtBf4xV00/rU1QbPCQqKMbvIheIjqwVjh7qIgf2AHTHi391yMOMpQ==",
       "dev": true,
-      "license": "BSD-3-Clause",
       "dependencies": {
         "@sinonjs/commons": "^1.6.0",
         "lodash.get": "^4.4.2",
@@ -45376,9 +45708,9 @@
       }
     },
     "services/authentication-service/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -45598,8 +45930,10 @@
     },
     "services/authentication-service/node_modules/sinon": {
       "version": "13.0.2",
+      "resolved": "https://registry.npmjs.org/sinon/-/sinon-13.0.2.tgz",
+      "integrity": "sha512-KvOrztAVqzSJWMDoxM4vM+GPys1df2VBoXm+YciyB/OLMamfS3VXh3oGh5WtrAGSzrgczNWFFY22oKb7Fi5eeA==",
+      "deprecated": "16.1.1",
       "dev": true,
-      "license": "BSD-3-Clause",
       "dependencies": {
         "@sinonjs/commons": "^1.8.3",
         "@sinonjs/fake-timers": "^9.1.2",
@@ -45615,8 +45949,9 @@
     },
     "services/authentication-service/node_modules/supports-color": {
       "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "has-flag": "^4.0.0"
       },
@@ -45626,8 +45961,9 @@
     },
     "services/authentication-service/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -45749,9 +46085,9 @@
       }
     },
     "services/bpmn-service/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -45759,8 +46095,9 @@
     },
     "services/bpmn-service/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -45825,9 +46162,9 @@
       }
     },
     "services/chat-service/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -46047,8 +46384,9 @@
     },
     "services/chat-service/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -46170,16 +46508,17 @@
     },
     "services/feature-toggle-service/node_modules/@types/jsonwebtoken": {
       "version": "8.5.9",
+      "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz",
+      "integrity": "sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "@types/node": "*"
       }
     },
     "services/feature-toggle-service/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -46187,8 +46526,9 @@
     },
     "services/feature-toggle-service/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -46248,9 +46588,9 @@
       }
     },
     "services/in-mail-service/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -46470,8 +46810,9 @@
     },
     "services/in-mail-service/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -46603,16 +46944,18 @@
     },
     "services/notification-service/node_modules/@sinonjs/fake-timers": {
       "version": "8.1.0",
+      "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz",
+      "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==",
       "dev": true,
-      "license": "BSD-3-Clause",
       "dependencies": {
         "@sinonjs/commons": "^1.7.0"
       }
     },
     "services/notification-service/node_modules/@sinonjs/samsam": {
       "version": "6.1.3",
+      "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.3.tgz",
+      "integrity": "sha512-nhOb2dWPeb1sd3IQXL/dVPnKHDOAFfvichtBf4xV00/rU1QbPCQqKMbvIheIjqwVjh7qIgf2AHTHi391yMOMpQ==",
       "dev": true,
-      "license": "BSD-3-Clause",
       "dependencies": {
         "@sinonjs/commons": "^1.6.0",
         "lodash.get": "^4.4.2",
@@ -46620,9 +46963,9 @@
       }
     },
     "services/notification-service/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -46842,8 +47185,10 @@
     },
     "services/notification-service/node_modules/sinon": {
       "version": "12.0.1",
+      "resolved": "https://registry.npmjs.org/sinon/-/sinon-12.0.1.tgz",
+      "integrity": "sha512-iGu29Xhym33ydkAT+aNQFBINakjq69kKO6ByPvTsm3yyIACfyQttRTP03aBP/I8GfhFmLzrnKwNNkr0ORb1udg==",
+      "deprecated": "16.1.1",
       "dev": true,
-      "license": "BSD-3-Clause",
       "dependencies": {
         "@sinonjs/commons": "^1.8.3",
         "@sinonjs/fake-timers": "^8.1.0",
@@ -46859,8 +47204,9 @@
     },
     "services/notification-service/node_modules/supports-color": {
       "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "has-flag": "^4.0.0"
       },
@@ -46870,8 +47216,9 @@
     },
     "services/notification-service/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -47025,8 +47372,9 @@
     },
     "services/oidc-service/node_modules/@sinonjs/samsam": {
       "version": "6.1.3",
+      "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.3.tgz",
+      "integrity": "sha512-nhOb2dWPeb1sd3IQXL/dVPnKHDOAFfvichtBf4xV00/rU1QbPCQqKMbvIheIjqwVjh7qIgf2AHTHi391yMOMpQ==",
       "dev": true,
-      "license": "BSD-3-Clause",
       "dependencies": {
         "@sinonjs/commons": "^1.6.0",
         "lodash.get": "^4.4.2",
@@ -47035,16 +47383,17 @@
     },
     "services/oidc-service/node_modules/@types/jsonwebtoken": {
       "version": "8.5.9",
+      "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz",
+      "integrity": "sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "@types/node": "*"
       }
     },
     "services/oidc-service/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -47264,8 +47613,10 @@
     },
     "services/oidc-service/node_modules/sinon": {
       "version": "13.0.2",
+      "resolved": "https://registry.npmjs.org/sinon/-/sinon-13.0.2.tgz",
+      "integrity": "sha512-KvOrztAVqzSJWMDoxM4vM+GPys1df2VBoXm+YciyB/OLMamfS3VXh3oGh5WtrAGSzrgczNWFFY22oKb7Fi5eeA==",
+      "deprecated": "16.1.1",
       "dev": true,
-      "license": "BSD-3-Clause",
       "dependencies": {
         "@sinonjs/commons": "^1.8.3",
         "@sinonjs/fake-timers": "^9.1.2",
@@ -47281,8 +47632,9 @@
     },
     "services/oidc-service/node_modules/supports-color": {
       "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "has-flag": "^4.0.0"
       },
@@ -47292,8 +47644,9 @@
     },
     "services/oidc-service/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -47417,9 +47770,9 @@
       }
     },
     "services/payment-service/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -47427,8 +47780,9 @@
     },
     "services/payment-service/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -47485,9 +47839,9 @@
       }
     },
     "services/reporting-service/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -47495,8 +47849,9 @@
     },
     "services/reporting-service/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -47564,8 +47919,9 @@
     },
     "services/scheduler-service/node_modules/@sinonjs/samsam": {
       "version": "6.1.3",
+      "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.3.tgz",
+      "integrity": "sha512-nhOb2dWPeb1sd3IQXL/dVPnKHDOAFfvichtBf4xV00/rU1QbPCQqKMbvIheIjqwVjh7qIgf2AHTHi391yMOMpQ==",
       "dev": true,
-      "license": "BSD-3-Clause",
       "dependencies": {
         "@sinonjs/commons": "^1.6.0",
         "lodash.get": "^4.4.2",
@@ -47573,9 +47929,9 @@
       }
     },
     "services/scheduler-service/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -47795,8 +48151,10 @@
     },
     "services/scheduler-service/node_modules/sinon": {
       "version": "13.0.2",
+      "resolved": "https://registry.npmjs.org/sinon/-/sinon-13.0.2.tgz",
+      "integrity": "sha512-KvOrztAVqzSJWMDoxM4vM+GPys1df2VBoXm+YciyB/OLMamfS3VXh3oGh5WtrAGSzrgczNWFFY22oKb7Fi5eeA==",
+      "deprecated": "16.1.1",
       "dev": true,
-      "license": "BSD-3-Clause",
       "dependencies": {
         "@sinonjs/commons": "^1.8.3",
         "@sinonjs/fake-timers": "^9.1.2",
@@ -47812,8 +48170,9 @@
     },
     "services/scheduler-service/node_modules/supports-color": {
       "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "has-flag": "^4.0.0"
       },
@@ -47823,8 +48182,9 @@
     },
     "services/scheduler-service/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -47946,8 +48306,9 @@
     },
     "services/search-service/node_modules/@sinonjs/samsam": {
       "version": "6.1.3",
+      "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.3.tgz",
+      "integrity": "sha512-nhOb2dWPeb1sd3IQXL/dVPnKHDOAFfvichtBf4xV00/rU1QbPCQqKMbvIheIjqwVjh7qIgf2AHTHi391yMOMpQ==",
       "dev": true,
-      "license": "BSD-3-Clause",
       "dependencies": {
         "@sinonjs/commons": "^1.6.0",
         "lodash.get": "^4.4.2",
@@ -47955,9 +48316,9 @@
       }
     },
     "services/search-service/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -48177,8 +48538,10 @@
     },
     "services/search-service/node_modules/sinon": {
       "version": "13.0.2",
+      "resolved": "https://registry.npmjs.org/sinon/-/sinon-13.0.2.tgz",
+      "integrity": "sha512-KvOrztAVqzSJWMDoxM4vM+GPys1df2VBoXm+YciyB/OLMamfS3VXh3oGh5WtrAGSzrgczNWFFY22oKb7Fi5eeA==",
+      "deprecated": "16.1.1",
       "dev": true,
-      "license": "BSD-3-Clause",
       "dependencies": {
         "@sinonjs/commons": "^1.8.3",
         "@sinonjs/fake-timers": "^9.1.2",
@@ -48194,8 +48557,9 @@
     },
     "services/search-service/node_modules/supports-color": {
       "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "has-flag": "^4.0.0"
       },
@@ -48205,8 +48569,9 @@
     },
     "services/search-service/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -48330,9 +48695,9 @@
       }
     },
     "services/survey-service/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -48552,8 +48917,9 @@
     },
     "services/survey-service/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -48684,9 +49050,9 @@
       }
     },
     "services/task-service/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -48694,8 +49060,9 @@
     },
     "services/task-service/node_modules/@types/uuid": {
       "version": "9.0.8",
-      "dev": true,
-      "license": "MIT"
+      "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz",
+      "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==",
+      "dev": true
     },
     "services/task-service/node_modules/brace-expansion": {
       "version": "1.1.11",
@@ -48911,8 +49278,9 @@
     },
     "services/task-service/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -48929,11 +49297,12 @@
     },
     "services/task-service/node_modules/uuid": {
       "version": "9.0.1",
+      "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+      "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
       "funding": [
         "https://github.com/sponsors/broofa",
         "https://github.com/sponsors/ctavan"
       ],
-      "license": "MIT",
       "bin": {
         "uuid": "dist/bin/uuid"
       }
@@ -49045,9 +49414,9 @@
       }
     },
     "services/user-tenant-service/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -49055,8 +49424,9 @@
     },
     "services/user-tenant-service/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -49141,8 +49511,9 @@
     },
     "services/video-conferencing-service/node_modules/@sinonjs/samsam": {
       "version": "6.1.3",
+      "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.3.tgz",
+      "integrity": "sha512-nhOb2dWPeb1sd3IQXL/dVPnKHDOAFfvichtBf4xV00/rU1QbPCQqKMbvIheIjqwVjh7qIgf2AHTHi391yMOMpQ==",
       "dev": true,
-      "license": "BSD-3-Clause",
       "dependencies": {
         "@sinonjs/commons": "^1.6.0",
         "lodash.get": "^4.4.2",
@@ -49150,9 +49521,9 @@
       }
     },
     "services/video-conferencing-service/node_modules/@types/node": {
-      "version": "18.19.44",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
-      "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+      "version": "18.19.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz",
+      "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==",
       "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
@@ -49160,8 +49531,9 @@
     },
     "services/video-conferencing-service/node_modules/axios-mock-adapter": {
       "version": "1.20.0",
+      "resolved": "https://registry.npmjs.org/axios-mock-adapter/-/axios-mock-adapter-1.20.0.tgz",
+      "integrity": "sha512-shZRhTjLP0WWdcvHKf3rH3iW9deb3UdKbdnKUoHmmsnBhVXN3sjPJM6ZvQ2r/ywgvBVQrMnjrSyQab60G1sr2w==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "fast-deep-equal": "^3.1.3",
         "is-blob": "^2.1.0",
@@ -49173,8 +49545,9 @@
     },
     "services/video-conferencing-service/node_modules/axios-mock-adapter/node_modules/is-blob": {
       "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-blob/-/is-blob-2.1.0.tgz",
+      "integrity": "sha512-SZ/fTft5eUhQM6oF/ZaASFDEdbFVe89Imltn9uZr03wdKMcWNVYSMjQPFtg05QuNkt5l5c135ElvXEQG0rk4tw==",
       "dev": true,
-      "license": "MIT",
       "engines": {
         "node": ">=6"
       },
@@ -49396,8 +49769,10 @@
     },
     "services/video-conferencing-service/node_modules/sinon": {
       "version": "13.0.2",
+      "resolved": "https://registry.npmjs.org/sinon/-/sinon-13.0.2.tgz",
+      "integrity": "sha512-KvOrztAVqzSJWMDoxM4vM+GPys1df2VBoXm+YciyB/OLMamfS3VXh3oGh5WtrAGSzrgczNWFFY22oKb7Fi5eeA==",
+      "deprecated": "16.1.1",
       "dev": true,
-      "license": "BSD-3-Clause",
       "dependencies": {
         "@sinonjs/commons": "^1.8.3",
         "@sinonjs/fake-timers": "^9.1.2",
@@ -49413,8 +49788,9 @@
     },
     "services/video-conferencing-service/node_modules/supports-color": {
       "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "has-flag": "^4.0.0"
       },
@@ -49424,8 +49800,9 @@
     },
     "services/video-conferencing-service/node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
       "dev": true,
-      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
diff --git a/services/payment-service/README.md b/services/payment-service/README.md
index f2765d6183..ce44cd4afc 100644
--- a/services/payment-service/README.md
+++ b/services/payment-service/README.md
@@ -16,6 +16,7 @@ any client application.
 - Users can seamlessly integrate PayPal for payment transactions.
 - The microservice supports Stripe as a preferred payment gateway option.
 - Razorpay integration is also available for users seeking diverse payment methods.
+
 ## Installation
 
 ```bash
@@ -41,12 +42,10 @@ npm i @sourceloop/payment-service
 - Bind any of the custom [providers](#providers) you need.
 - **Using Paypal payment Gateway**
   Bind the PayPalHelper and PayPalConfig as shown below
+
   ```typescript
   //import Providers
-  import {
-    PayPalBindings,
-    PaypalProvider
-  } from 'payment-service/dist/providers';
+  import {PayPalBindings, PaypalProvider} from 'payment-service/dist/providers';
   //Bind the providers
   this.bind(PayPalBindings.PayPalHelper.key).toProvider(PaypalProvider);
   this.bind(PayPalBindings.PayPalConfig).to({
@@ -56,15 +55,11 @@ npm i @sourceloop/payment-service
   ```
 
 - **Using Stripe payment Gateway**
-    Bind the StripeHelper and Config as shown below
-
+  Bind the StripeHelper and Config as shown below
 
   ```typescript
   //import Providers
-  import {
-    StripeBindings,
-    StripeProvider,
-  } from 'payment-service/dist/providers';
+  import {StripeBindings, StripeProvider} from 'payment-service/dist/providers';
   //Bind the providers
   this.bind(StripeBindings.Config).to({dataKey: '', publishKey: ''});
   this.bind(StripeBindings.StripeHelper).toProvider(StripeProvider);
@@ -72,7 +67,7 @@ npm i @sourceloop/payment-service
 
 - **Using RazorPay payment Gateway**
   Bind the RazorPayHelper and RazorPayConfig as shown below
-  
+
   ```typescript
   //import Providers
   import {
@@ -183,6 +178,7 @@ JWT_ISSUER=https://authentication.service
 | `DB_SCHEMA`   | Y        | `public`      | Database schema used for the data source. In PostgreSQL, this will be `public` unless a schema is made explicitly for the service. |
 | `JWT_SECRET`  | Y        |               | Symmetric signing key of the JWT token.                                                                                            |
 | `JWT_ISSUER`  | Y        |               | Issuer of the JWT token.                                                                                                           |
+
 ### Providers
 
 You can find documentation for some of the providers available in this service [here](./src/providers/README.md)
@@ -227,6 +223,10 @@ Create a payment gateway.
 
 Create an order and initiate transaction for the selected payment gateway, this will create order and initiate payment process.
 
+##### POST /transactions/charge
+
+The transactionscharge endpoint handles incoming charge requests. It extracts the order ID from the request, calls the charge helper method of selected payment gateway,and redirects the user to a success or failure URL based on the charge outcome.
+
 ##### POST /orders
 
 Creating orders manually.
diff --git a/services/payment-service/openapi.json b/services/payment-service/openapi.json
index 38dbdcf2f4..6bad53013c 100644
--- a/services/payment-service/openapi.json
+++ b/services/payment-service/openapi.json
@@ -731,6 +731,11 @@
         "tags": [
           "TransactionsController"
         ],
+        "security": [
+          {
+            "HTTPBearer": []
+          }
+        ],
         "responses": {
           "302": {
             "description": "Order model instance",
@@ -739,11 +744,12 @@
             }
           }
         },
+        "description": "\n\n| Permissions |\n| ------- |\n| CreateOrder   |\n| 6   |\n",
         "requestBody": {
           "content": {
             "application/json": {
               "schema": {
-                "type": "object"
+                "$ref": "#/components/schemas/NewMessage"
               }
             }
           }
@@ -758,6 +764,11 @@
         "tags": [
           "SubscriptionTransactionsController"
         ],
+        "security": [
+          {
+            "HTTPBearer": []
+          }
+        ],
         "responses": {
           "200": {
             "description": "Subscription model instance",
@@ -766,6 +777,7 @@
             }
           }
         },
+        "description": "\n\n| Permissions |\n| ------- |\n| UpdateTransaction   |\n| 20   |\n",
         "requestBody": {
           "content": {
             "application/x-www-form-urlencoded": {
@@ -1445,6 +1457,11 @@
         "tags": [
           "TransactionsController"
         ],
+        "security": [
+          {
+            "HTTPBearer": []
+          }
+        ],
         "responses": {
           "200": {
             "description": "Transacttion Gateway Request",
@@ -1453,6 +1470,7 @@
             }
           }
         },
+        "description": "\n\n| Permissions |\n| ------- |\n| CreateTransaction   |\n| 18   |\n",
         "requestBody": {
           "content": {
             "application/x-www-form-urlencoded": {
@@ -1516,6 +1534,11 @@
         "tags": [
           "TransactionsController"
         ],
+        "security": [
+          {
+            "HTTPBearer": []
+          }
+        ],
         "responses": {
           "200": {
             "description": "HTML response for payment gateway interface.",
@@ -1528,6 +1551,7 @@
             }
           }
         },
+        "description": "\n\n| Permissions |\n| ------- |\n| CreateOrder   |\n| 6   |\n",
         "parameters": [
           {
             "name": "id",
@@ -1548,6 +1572,11 @@
         "tags": [
           "TransactionsController"
         ],
+        "security": [
+          {
+            "HTTPBearer": []
+          }
+        ],
         "responses": {
           "200": {
             "description": "Refund Object from payment gateway",
@@ -1576,6 +1605,11 @@
         "tags": [
           "TransactionsController"
         ],
+        "security": [
+          {
+            "HTTPBearer": []
+          }
+        ],
         "responses": {
           "200": {
             "description": "Refund Object from payment gateway",
@@ -1604,6 +1638,11 @@
         "tags": [
           "TransactionSubscriptionsController"
         ],
+        "security": [
+          {
+            "HTTPBearer": []
+          }
+        ],
         "responses": {
           "302": {
             "description": "Array of Transactions model instances",
@@ -1616,6 +1655,7 @@
             }
           }
         },
+        "description": "\n\n| Permissions |\n| ------- |\n| UpdateSubscriptions   |\n| 4   |\n",
         "parameters": [
           {
             "name": "id",
@@ -2238,6 +2278,39 @@
         "additionalProperties": false,
         "x-typescript-type": "Partial<Transactions>"
       },
+      "NewMessage": {
+        "title": "NewMessage",
+        "type": "object",
+        "description": "(tsType: Omit<Orders, 'id'>, schemaOptions: { title: 'NewMessage', exclude: [ 'id' ] })",
+        "properties": {
+          "totalAmount": {
+            "type": "number"
+          },
+          "currency": {
+            "type": "string"
+          },
+          "status": {
+            "type": "string"
+          },
+          "paymentGatewayId": {
+            "type": "string"
+          },
+          "paymentmethod": {
+            "type": "string"
+          },
+          "metaData": {
+            "type": "object"
+          }
+        },
+        "required": [
+          "totalAmount",
+          "currency",
+          "status",
+          "paymentGatewayId"
+        ],
+        "additionalProperties": false,
+        "x-typescript-type": "Omit<Orders, 'id'>"
+      },
       "PaymentGateways": {
         "title": "PaymentGateways",
         "type": "object",
diff --git a/services/payment-service/openapi.md b/services/payment-service/openapi.md
index e10e7d99a7..f6ca787e7a 100644
--- a/services/payment-service/openapi.md
+++ b/services/payment-service/openapi.md
@@ -162,6 +162,11 @@ fetch('/subscription/transaction/charge',
 
 `POST /subscription/transaction/charge`
 
+| Permissions |
+| ------- |
+| UpdateTransaction   |
+| 20   |
+
 > Body parameter
 
 ```yaml
@@ -185,8 +190,9 @@ fetch('/subscription/transaction/charge',
 
 <h3 id="subscriptiontransactionscontroller.subscriptiontransactionscharge-responseschema">Response Schema</h3>
 
-<aside class="success">
-This operation does not require authentication
+<aside class="warning">
+To perform this operation, you must be authenticated by means of one of the following methods:
+None
 </aside>
 
 <h1 id="-sourceloop-payment-service-orderscontroller">OrdersController</h1>
@@ -1774,7 +1780,14 @@ This operation does not require authentication
 > Code samples
 
 ```javascript
-const inputBody = '{}';
+const inputBody = '{
+  "totalAmount": 0,
+  "currency": "string",
+  "status": "string",
+  "paymentGatewayId": "string",
+  "paymentmethod": "string",
+  "metaData": {}
+}';
 const headers = {
   'Content-Type':'application/json',
   'Accept':'text/html'
@@ -1796,7 +1809,14 @@ fetch('/place-order-and-pay',
 
 ```javascript--nodejs
 const fetch = require('node-fetch');
-const inputBody = {};
+const inputBody = {
+  "totalAmount": 0,
+  "currency": "string",
+  "status": "string",
+  "paymentGatewayId": "string",
+  "paymentmethod": "string",
+  "metaData": {}
+};
 const headers = {
   'Content-Type':'application/json',
   'Accept':'text/html'
@@ -1818,17 +1838,29 @@ fetch('/place-order-and-pay',
 
 `POST /place-order-and-pay`
 
+| Permissions |
+| ------- |
+| CreateOrder   |
+| 6   |
+
 > Body parameter
 
 ```json
-{}
+{
+  "totalAmount": 0,
+  "currency": "string",
+  "status": "string",
+  "paymentGatewayId": "string",
+  "paymentmethod": "string",
+  "metaData": {}
+}
 ```
 
 <h3 id="transactionscontroller.orderandtransactionscreate-parameters">Parameters</h3>
 
 |Name|In|Type|Required|Description|
 |---|---|---|---|---|
-|body|body|object|false|none|
+|body|body|[NewMessage](#schemanewmessage)|false|none|
 
 > Example responses
 
@@ -1840,8 +1872,9 @@ fetch('/place-order-and-pay',
 
 <h3 id="transactionscontroller.orderandtransactionscreate-responseschema">Response Schema</h3>
 
-<aside class="success">
-This operation does not require authentication
+<aside class="warning">
+To perform this operation, you must be authenticated by means of one of the following methods:
+None
 </aside>
 
 ## TransactionsController.transactionscharge
@@ -1895,6 +1928,11 @@ fetch('/transactions/charge',
 
 `POST /transactions/charge`
 
+| Permissions |
+| ------- |
+| CreateTransaction   |
+| 18   |
+
 > Body parameter
 
 ```yaml
@@ -1918,8 +1956,9 @@ fetch('/transactions/charge',
 
 <h3 id="transactionscontroller.transactionscharge-responseschema">Response Schema</h3>
 
-<aside class="success">
-This operation does not require authentication
+<aside class="warning">
+To perform this operation, you must be authenticated by means of one of the following methods:
+None
 </aside>
 
 ## TransactionsController.count
@@ -2052,6 +2091,11 @@ fetch('/transactions/orderid/{id}',
 
 `GET /transactions/orderid/{id}`
 
+| Permissions |
+| ------- |
+| CreateOrder   |
+| 6   |
+
 <h3 id="transactionscontroller.transactionspay-parameters">Parameters</h3>
 
 |Name|In|Type|Required|Description|
@@ -2074,8 +2118,9 @@ fetch('/transactions/orderid/{id}',
 
 <h3 id="transactionscontroller.transactionspay-responseschema">Response Schema</h3>
 
-<aside class="success">
-This operation does not require authentication
+<aside class="warning">
+To perform this operation, you must be authenticated by means of one of the following methods:
+None
 </aside>
 
 ## TransactionsController.transactionsRefundParse
@@ -2143,8 +2188,9 @@ fetch('/transactions/refund/parse/{id}',
 
 <h3 id="transactionscontroller.transactionsrefundparse-responseschema">Response Schema</h3>
 
-<aside class="success">
-This operation does not require authentication
+<aside class="warning">
+To perform this operation, you must be authenticated by means of one of the following methods:
+None
 </aside>
 
 ## TransactionsController.transactionsRefund
@@ -2212,8 +2258,9 @@ fetch('/transactions/refund/{id}',
 
 <h3 id="transactionscontroller.transactionsrefund-responseschema">Response Schema</h3>
 
-<aside class="success">
-This operation does not require authentication
+<aside class="warning">
+To perform this operation, you must be authenticated by means of one of the following methods:
+None
 </aside>
 
 ## TransactionsController.subscriptionWebHook
@@ -4631,6 +4678,11 @@ fetch('/transactions/subscription/{id}',
 
 `GET /transactions/subscription/{id}`
 
+| Permissions |
+| ------- |
+| UpdateSubscriptions   |
+| 4   |
+
 <h3 id="transactionsubscriptionscontroller.subscriptiontransactionspay-parameters">Parameters</h3>
 
 |Name|In|Type|Required|Description|
@@ -4653,8 +4705,9 @@ fetch('/transactions/subscription/{id}',
 
 <h3 id="transactionsubscriptionscontroller.subscriptiontransactionspay-responseschema">Response Schema</h3>
 
-<aside class="success">
-This operation does not require authentication
+<aside class="warning">
+To perform this operation, you must be authenticated by means of one of the following methods:
+None
 </aside>
 
 # Schemas
@@ -4939,6 +4992,38 @@ TransactionsPartial
 |orderId|string|false|none|none|
 |res|object|false|none|none|
 
+<h2 id="tocS_NewMessage">NewMessage</h2>
+<!-- backwards compatibility -->
+<a id="schemanewmessage"></a>
+<a id="schema_NewMessage"></a>
+<a id="tocSnewmessage"></a>
+<a id="tocsnewmessage"></a>
+
+```json
+{
+  "totalAmount": 0,
+  "currency": "string",
+  "status": "string",
+  "paymentGatewayId": "string",
+  "paymentmethod": "string",
+  "metaData": {}
+}
+
+```
+
+NewMessage
+
+### Properties
+
+|Name|Type|Required|Restrictions|Description|
+|---|---|---|---|---|
+|totalAmount|number|true|none|none|
+|currency|string|true|none|none|
+|status|string|true|none|none|
+|paymentGatewayId|string|true|none|none|
+|paymentmethod|string|false|none|none|
+|metaData|object|false|none|none|
+
 <h2 id="tocS_PaymentGateways">PaymentGateways</h2>
 <!-- backwards compatibility -->
 <a id="schemapaymentgateways"></a>
diff --git a/services/payment-service/src/component.ts b/services/payment-service/src/component.ts
index 502681d195..d4fac5019f 100644
--- a/services/payment-service/src/component.ts
+++ b/services/payment-service/src/component.ts
@@ -110,7 +110,7 @@ export class PaymentServiceComponent implements Component {
       Binding.bind(PayPalBindings.PayPalHelper.key).to(null),
     ];
     this.application.component(CoreComponent);
-
+    this.application.component(TenantUtilitiesComponent);
     if (this.tenantConfig?.useSingleTenant) {
       this.models = [
         Orders,
@@ -120,7 +120,6 @@ export class PaymentServiceComponent implements Component {
         Subscriptions,
       ];
     } else {
-      this.application.component(TenantUtilitiesComponent);
       this.models = [
         TenantOrders,
         TenantPaymentGateways,
diff --git a/services/payment-service/src/controllers/subscriptions-transactions.controller.ts b/services/payment-service/src/controllers/subscriptions-transactions.controller.ts
index 4862e466cb..23212f780d 100644
--- a/services/payment-service/src/controllers/subscriptions-transactions.controller.ts
+++ b/services/payment-service/src/controllers/subscriptions-transactions.controller.ts
@@ -93,8 +93,15 @@ export class SubscriptionTransactionsController {
       `${hostProtocol}://${hostUrl}/transactions/subscription/${newSubscription.id}?method=${newSubscription.paymentMethod}`,
     );
   }
-
+  @authenticate(STRATEGY.BEARER)
+  @authorize({
+    permissions: [
+      PermissionKey.UpdateTransaction,
+      PermissionKey.UpdateTransactionNum,
+    ],
+  })
   @post('/subscription/transaction/charge', {
+    security: OPERATION_SECURITY_SPEC,
     responses: {
       [STATUS_CODE.OK]: {
         description: 'Subscription model instance',
@@ -125,7 +132,7 @@ export class SubscriptionTransactionsController {
     const hostUrl = this.req.get('host');
     const hostProtocol = this.req.protocol;
     const defaultUrl = `${hostProtocol}://${hostUrl}`;
-    if (chargeHelper?.res === ResponseMessage.Sucess) {
+    if (chargeHelper?.res === ResponseMessage.Success) {
       return this.res.redirect(
         permRedirectStatusCode,
         `${process.env.SUCCESS_CALLBACK_URL ?? defaultUrl}`,
diff --git a/services/payment-service/src/controllers/transactions-subscriptions.controller.ts b/services/payment-service/src/controllers/transactions-subscriptions.controller.ts
index d5e4ae0f86..50b6f0c231 100644
--- a/services/payment-service/src/controllers/transactions-subscriptions.controller.ts
+++ b/services/payment-service/src/controllers/transactions-subscriptions.controller.ts
@@ -6,8 +6,11 @@ import {inject} from '@loopback/core';
 import {repository} from '@loopback/repository';
 import {get, param, Response, RestBindings} from '@loopback/rest';
 
-import {CONTENT_TYPE} from '@sourceloop/core';
+import {CONTENT_TYPE, OPERATION_SECURITY_SPEC} from '@sourceloop/core';
+import {authenticate, STRATEGY} from 'loopback4-authentication';
+import {authorize} from 'loopback4-authorization';
 import {TemplateName, TemplateType} from '../enums';
+import {PermissionKey} from '../enums/permission-key.enum';
 import {GatewayBindings, IGateway} from '../providers';
 import {SubscriptionsRepository, TemplatesRepository} from '../repositories';
 
@@ -23,8 +26,15 @@ export class TransactionSubscriptionsController {
     @repository(SubscriptionsRepository)
     private readonly subscriptionRepository: SubscriptionsRepository,
   ) {}
-
+  @authenticate(STRATEGY.BEARER)
+  @authorize({
+    permissions: [
+      PermissionKey.UpdateSubscriptions,
+      PermissionKey.UpdateSubscriptionsNum,
+    ],
+  })
   @get(`/transactions/subscription/{id}`, {
+    security: OPERATION_SECURITY_SPEC,
     responses: {
       [redirectStatusCode]: {
         description: 'Array of Transactions model instances',
diff --git a/services/payment-service/src/controllers/transactions.controller.ts b/services/payment-service/src/controllers/transactions.controller.ts
index 53e044ebab..8f8d867005 100644
--- a/services/payment-service/src/controllers/transactions.controller.ts
+++ b/services/payment-service/src/controllers/transactions.controller.ts
@@ -33,6 +33,7 @@ import {
 import {authenticate, STRATEGY} from 'loopback4-authentication';
 import {authorize} from 'loopback4-authorization';
 import {v4 as uuidv4} from 'uuid';
+
 import {ResponseMessage, TemplateName, TemplateType} from '../enums';
 import {PermissionKey} from '../enums/permission-key.enum';
 import {Orders, Transactions} from '../models';
@@ -43,6 +44,7 @@ import {
   TemplatesRepository,
   TransactionsRepository,
 } from '../repositories';
+
 const transactionsRoutePath = '/transactions';
 const tranasactionsIdRoutePath = '/transactions/{id}';
 const redirectStatusCode = 302;
@@ -82,6 +84,14 @@ export class TransactionsController {
       },
     },
   })
+  /**
+   * The above function is an async function that creates a new transaction and returns the created
+   * transaction.
+   * @param {Transactions} transactions - The `transactions` parameter is an object of type
+   * `Transactions`. It represents the data for creating a new transaction.
+   * @returns The `create` function is returning a Promise that resolves to an instance of the
+   * `Transactions` model.
+   */
   async create(
     @requestBody({
       content: {
@@ -113,6 +123,14 @@ export class TransactionsController {
       },
     },
   })
+  /**
+   * The count function returns the number of transactions that match the given criteria.
+   * @param [where] - The `where` parameter is an optional parameter of type `Where<Transactions>`. It
+   * is used to specify the conditions for filtering the transactions. The `Where` type is a generic
+   * type that allows you to define the conditions for filtering based on the properties of the
+   * `Transactions` entity.
+   * @returns The count of transactions that match the provided `where` condition.
+   */
   async count(
     @param.where(Transactions) where?: Where<Transactions>,
   ): Promise<Count> {
@@ -142,6 +160,16 @@ export class TransactionsController {
       },
     },
   })
+  /**
+   * The `find` function is an asynchronous method that takes an optional filter parameter and returns a
+   * promise that resolves to an array of `Transactions` objects.
+   * @param [filter] - The `filter` parameter is an optional parameter of type `Filter<Transactions>`.
+   * It is used to specify the filtering criteria for the transactions that need to be retrieved. The
+   * `Filter` type is a generic type that allows you to define the filtering criteria based on the
+   * properties of the `Transactions`
+   * @returns The `find` method is returning a promise that resolves to an array of `Transactions`
+   * objects.
+   */
   async find(
     @param.filter(Transactions) filter?: Filter<Transactions>,
   ): Promise<Transactions[]> {
@@ -164,6 +192,18 @@ export class TransactionsController {
       },
     },
   })
+  /**
+   * The function `updateAll` updates multiple transactions based on the provided filter and returns
+   * the count of updated transactions.
+   * @param {Transactions} transactions - The `transactions` parameter is an object of type
+   * `Transactions` which represents the data that needs to be updated in the database. It is
+   * decorated with `@requestBody` to indicate that it is coming from the request body of the API
+   * call.
+   * @param [where] - The `where` parameter is an optional filter object that specifies the conditions
+   * for updating the transactions. It is used to narrow down the scope of the update operation by
+   * specifying certain criteria that the transactions must meet in order to be updated.
+   * @returns a Promise that resolves to a Count.
+   */
   async updateAll(
     @requestBody({
       content: {
@@ -198,6 +238,16 @@ export class TransactionsController {
       },
     },
   })
+  /**
+   * The `findById` function retrieves a transaction by its ID, with an optional filter.
+   * @param {string} id - The `id` parameter is a string that represents the unique identifier of the
+   * transaction you want to find. It is passed as a path parameter in the URL.
+   * @param [filter] - The `filter` parameter is an optional parameter that allows you to specify
+   * additional filtering options for the `findById` method. It is of type
+   * `FilterExcludingWhere<Transactions>`, which means it can include any properties of the
+   * `Transactions` model except for the `where` property.
+   * @returns a Promise that resolves to an instance of the Transactions model.
+   */
   async findById(
     @param.path.string('id') id: string,
     @param.filter(Transactions, {exclude: 'where'})
@@ -221,6 +271,14 @@ export class TransactionsController {
       },
     },
   })
+  /**
+   * The function updates a transaction by its ID.
+   * @param {string} id - The `id` parameter is a string that represents the unique identifier of the
+   * transaction that needs to be updated.
+   * @param {Transactions} transactions - The `transactions` parameter is an object of type
+   * `Transactions`. It represents the data that will be used to update a specific transaction in the
+   * database.
+   */
   async updateById(
     @param.path.string('id') id: string,
     @requestBody({
@@ -250,6 +308,14 @@ export class TransactionsController {
       },
     },
   })
+  /**
+   * The function replaces a transaction by its ID in the transactions repository.
+   * @param {string} id - The `id` parameter is a string that represents the unique identifier of the
+   * transaction that needs to be replaced.
+   * @param {Transactions} transactions - The `transactions` parameter is of type `Transactions`. It
+   * is the request body that contains the data to be used for replacing the transaction with the
+   * specified `id`.
+   */
   async replaceById(
     @param.path.string('id') id: string,
     @requestBody() transactions: Transactions,
@@ -276,7 +342,19 @@ export class TransactionsController {
     await this.transactionsRepository.deleteById(id);
   }
 
+  /**
+   * The function creates a new order entity and redirects the user to a transaction page with the
+   * order ID and payment method.
+   * @param {Orders} orders - The `orders` parameter is an object that contains the following
+   * properties:
+   * @returns a Promise that resolves to an unknown value.
+   */
+  @authenticate(STRATEGY.BEARER)
+  @authorize({
+    permissions: [PermissionKey.CreateOrder, PermissionKey.CreateOrderNum],
+  })
   @post('/place-order-and-pay', {
+    security: OPERATION_SECURITY_SPEC,
     responses: {
       [redirectStatusCode]: {
         description: 'Order model instance',
@@ -290,13 +368,14 @@ export class TransactionsController {
     @requestBody({
       content: {
         [CONTENT_TYPE.JSON]: {
-          schema: {
-            type: 'object',
-          },
+          schema: getModelSchemaRef(Orders, {
+            title: 'NewMessage',
+            exclude: ['id'],
+          }),
         },
       },
     })
-    orders: Orders,
+    orders: Omit<Orders, 'id'>,
   ): Promise<unknown> {
     const orderEntity = {
       id: uuidv4(),
@@ -315,8 +394,12 @@ export class TransactionsController {
       `${hostProtocol}://${hostUrl}/transactions/orderid/${newOrder.id}?method=${newOrder.paymentmethod}`,
     );
   }
-
+  @authenticate(STRATEGY.BEARER)
+  @authorize({
+    permissions: [PermissionKey.CreateOrder, PermissionKey.CreateOrderNum],
+  })
   @get(`/transactions/orderid/{id}`, {
+    security: OPERATION_SECURITY_SPEC,
     responses: {
       [STATUS_CODE.OK]: {
         description: 'HTML response for payment gateway interface.',
@@ -330,6 +413,13 @@ export class TransactionsController {
       },
     },
   })
+  /**
+   * The function retrieves an order by its ID, finds a payment template based on the order's payment
+   * gateway ID, name, and type, and then sends the created order and payment template to a gateway
+   * helper for processing.
+   * @param {string} id - The `id` parameter is a string that represents the ID of an order.
+   * @returns the result of the `this.gatewayHelper.create(Order, paymentTemplate)` method call.
+   */
   async transactionsPay(@param.path.string('id') id: string): Promise<unknown> {
     const Order = await this.ordersRepository.findById(id);
     const templates = await this.templatesRepository.find({
@@ -344,8 +434,15 @@ export class TransactionsController {
       await this.gatewayHelper.create(Order, paymentTemplate),
     );
   }
-
+  @authenticate(STRATEGY.BEARER)
+  @authorize({
+    permissions: [
+      PermissionKey.CreateTransaction,
+      PermissionKey.CreateTransactionNum,
+    ],
+  })
   @post('/transactions/charge', {
+    security: OPERATION_SECURITY_SPEC,
     responses: {
       [STATUS_CODE.OK]: {
         description: 'Transacttion Gateway Request',
@@ -355,6 +452,13 @@ export class TransactionsController {
       },
     },
   })
+  /**
+   * The function `transactionscharge` handles a charge response, performs a charge operation, and
+   * redirects the user to a success or failure callback URL based on the result.
+   * @param chargeResponse - The `chargeResponse` parameter is an object of type `DataObject<{}>`. It
+   * is used to store the response data for the charge transaction.
+   * @returns a Promise that resolves to an unknown value.
+   */
   async transactionscharge(
     @requestBody({
       content: {
@@ -375,7 +479,7 @@ export class TransactionsController {
     const hostUrl = this.req.get('host');
     const hostProtocol = this.req.protocol;
     const defaultUrl = `${hostProtocol}://${hostUrl}`;
-    if (chargeHelper?.res === ResponseMessage.Sucess) {
+    if (chargeHelper?.res === ResponseMessage.Success) {
       return this.res.redirect(
         permRedirectStatusCode,
         `${process.env.SUCCESS_CALLBACK_URL ?? defaultUrl}`,
@@ -389,6 +493,7 @@ export class TransactionsController {
   }
 
   @post(`/transactions/refund/{id}`, {
+    security: OPERATION_SECURITY_SPEC,
     responses: {
       [STATUS_CODE.OK]: {
         description: 'Refund Object from payment gateway',
@@ -398,6 +503,17 @@ export class TransactionsController {
       },
     },
   })
+  /**
+   * The `transactionsRefund` function refunds a transaction by redirecting to a refund parsing
+   * endpoint based on the payment gateway type.
+   * @param {string} id - The `id` parameter is a string that represents the unique identifier of a
+   * transaction.
+   * @returns either a redirect response or a string message. If the transaction exists and has a
+   * valid payment gateway ID, it will return a redirect response to the specified URL. If the
+   * transaction does not exist, it will return the string message "Transaction does not exist". If
+   * the transaction exists but does not have a valid payment gateway ID, it will return the string
+   * message "Not Valid Gateway Id".
+   */
   async transactionsRefund(
     @param.path.string('id') id: string,
   ): Promise<unknown> {
@@ -423,6 +539,7 @@ export class TransactionsController {
   }
 
   @get(`/transactions/refund/parse/{id}`, {
+    security: OPERATION_SECURITY_SPEC,
     responses: {
       [STATUS_CODE.OK]: {
         description: 'Refund Object from payment gateway',
@@ -432,6 +549,12 @@ export class TransactionsController {
       },
     },
   })
+  /**
+   * The function `transactionsRefundParse` refunds a transaction with the given ID using the
+   * `gatewayHelper` object.
+   * @param {string} id - The `id` parameter is a string that represents the transaction ID.
+   * @returns a Promise that resolves to an unknown value.
+   */
   async transactionsRefundParse(
     @param.path.string('id') id: string,
   ): Promise<unknown> {
@@ -448,6 +571,15 @@ export class TransactionsController {
       },
     },
   })
+  /**
+   * The function `subscriptionWebHook` is an async function that receives a charge response as a
+   * request body and sends it to a helper function called `subscriptionWebHook` before returning the
+   * response.
+   * @param chargeResponse - The `chargeResponse` parameter is an object that represents the response
+   * received from a charge or payment processing operation. It is of type `DataObject<{}>`, which
+   * means it is a generic object with no specific properties defined.
+   * @returns the result of the `subscriptionWebHook` method of the `gatewayHelper` object.
+   */
   async subscriptionWebHook(
     @requestBody({
       content: {
diff --git a/services/payment-service/src/enums/response.enum.ts b/services/payment-service/src/enums/response.enum.ts
index 35d702ea27..b3ea5ec83d 100644
--- a/services/payment-service/src/enums/response.enum.ts
+++ b/services/payment-service/src/enums/response.enum.ts
@@ -3,6 +3,6 @@
 // This software is released under the MIT License.
 // https://opensource.org/licenses/MIT
 export const enum ResponseMessage {
-  Sucess = 'sucess',
-  NotSucess = 'notsucess',
+  Success = 'success',
+  NotSuccess = 'notsuccess',
 }
diff --git a/services/payment-service/src/providers/paypal/paypal-provider.service.ts b/services/payment-service/src/providers/paypal/paypal-provider.service.ts
index 884cfe99f0..f7c4b37e29 100644
--- a/services/payment-service/src/providers/paypal/paypal-provider.service.ts
+++ b/services/payment-service/src/providers/paypal/paypal-provider.service.ts
@@ -83,6 +83,13 @@ export class PaypalProvider implements Provider<PayPalPaymentGateway> {
                 },
               },
             ],
+            // eslint-disable-next-line @typescript-eslint/naming-convention
+            application_context: {
+              // eslint-disable-next-line @typescript-eslint/naming-convention
+              return_url: `${process.env.SUCCESS_CALLBACK_URL}`,
+              // eslint-disable-next-line @typescript-eslint/naming-convention
+              cancel_url: `${process.env.FAILURE_CALLBACK_URL}`,
+            },
           });
           const response = await this.client.execute(request);
           const order = response.result;
@@ -171,9 +178,9 @@ export class PaypalProvider implements Provider<PayPalPaymentGateway> {
           }
         }
         if (chargeComplete) {
-          return {res: ResponseMessage.Sucess, orderId: orderDetails.id};
+          return {res: ResponseMessage.Success, orderId: orderDetails.id};
         } else {
-          return {res: ResponseMessage.NotSucess, orderId: orderDetails.id};
+          return {res: ResponseMessage.NotSuccess, orderId: orderDetails.id};
         }
       },
       refund: async (transactionId: string, note?: string) => {
@@ -210,7 +217,7 @@ export class PaypalProvider implements Provider<PayPalPaymentGateway> {
           return order;
         } else {
           return {
-            err: ResponseMessage.NotSucess,
+            err: ResponseMessage.NotSuccess,
             message: 'please check transactionId',
           };
         }
diff --git a/services/payment-service/src/providers/razorpay/razorpay.provider.ts b/services/payment-service/src/providers/razorpay/razorpay.provider.ts
index beab1fb782..bd5b7346c2 100644
--- a/services/payment-service/src/providers/razorpay/razorpay.provider.ts
+++ b/services/payment-service/src/providers/razorpay/razorpay.provider.ts
@@ -125,12 +125,12 @@ export class RazorpayProvider implements Provider<RazorpayPaymentGateway> {
     });
     if (subscription) {
       return {
-        res: ResponseMessage.Sucess,
+        res: ResponseMessage.Success,
         subscriptionId: subscription[0].id,
       };
     } else {
       return {
-        res: ResponseMessage.NotSucess,
+        res: ResponseMessage.NotSuccess,
         subscriptionId: chargeResponse.razorpay_subscription_id,
       };
     }
@@ -302,9 +302,9 @@ export class RazorpayProvider implements Provider<RazorpayPaymentGateway> {
           );
         }
         if (chargeComplete) {
-          return {res: ResponseMessage.Sucess, orderId: order[0].id};
+          return {res: ResponseMessage.Success, orderId: order[0].id};
         } else {
-          return {res: ResponseMessage.NotSucess, orderId: order[0].id};
+          return {res: ResponseMessage.NotSuccess, orderId: order[0].id};
         }
       },
 
@@ -322,7 +322,7 @@ export class RazorpayProvider implements Provider<RazorpayPaymentGateway> {
           return refund;
         } else {
           return {
-            err: ResponseMessage.NotSucess,
+            err: ResponseMessage.NotSuccess,
             message: 'please check PaymentId',
           };
         }
diff --git a/services/payment-service/src/providers/stripe/stripe.provider.ts b/services/payment-service/src/providers/stripe/stripe.provider.ts
index 7bc7338a2f..84b315a1dc 100644
--- a/services/payment-service/src/providers/stripe/stripe.provider.ts
+++ b/services/payment-service/src/providers/stripe/stripe.provider.ts
@@ -115,7 +115,7 @@ export class StripeProvider implements Provider<StripePaymentGateway> {
               await this.ordersRepository.updateById(order.id, {...order});
             }
           });
-        return {res: ResponseMessage.Sucess, orderId: order.id};
+        return {res: ResponseMessage.Success, orderId: order.id};
       },
 
       refund: async (transactionId: string) => {
@@ -134,7 +134,7 @@ export class StripeProvider implements Provider<StripePaymentGateway> {
           return refund;
         } else {
           return {
-            err: ResponseMessage.NotSucess,
+            err: ResponseMessage.NotSuccess,
             message: 'please check PaymentId',
           };
         }
@@ -211,7 +211,7 @@ export class StripeProvider implements Provider<StripePaymentGateway> {
               });
             }
           });
-        return {res: ResponseMessage.Sucess, subscriptionId: subscription.id};
+        return {res: ResponseMessage.Success, subscriptionId: subscription.id};
       },
 
       subscriptionWebHook: async (