From 39822b3012b26f4b296c700dd6c7050b30c8cc83 Mon Sep 17 00:00:00 2001
From: Florin Cozloschi <115977960+florincoz@users.noreply.github.com>
Date: Fri, 13 Jan 2023 13:07:05 +0200
Subject: [PATCH 1/3] move metrics closer to redis get and disable
 autopipelining

---
 src/services/caching/cache.service.ts | 27 ++++++++++++++-------------
 1 file changed, 14 insertions(+), 13 deletions(-)

diff --git a/src/services/caching/cache.service.ts b/src/services/caching/cache.service.ts
index 07e08c511..e8cd4cc16 100644
--- a/src/services/caching/cache.service.ts
+++ b/src/services/caching/cache.service.ts
@@ -32,7 +32,7 @@ export class CachingService {
             const delay = Math.min(times * 50, 5000);
             return delay;
         },
-        enableAutoPipelining: true,
+        enableAutoPipelining: false,
     };
 
     constructor(
@@ -45,7 +45,13 @@ export class CachingService {
         this.client = setClient(this.options);
 
         this.remoteGetExecutor = new PendingExecutor(
-            async (key: string) => await this.client.get(key),
+            async (key: string) => {
+                const profiler = new PerformanceProfiler();
+                const redisResponse = await this.client.get(key);
+                profiler.stop();
+                MetricsCollector.setRedisDuration('GET', profiler.duration);
+                return redisResponse;
+            }
         );
 
         this.remoteDelExecutor = new PendingExecutor(
@@ -80,13 +86,8 @@ export class CachingService {
     }
 
     private async getCacheRemote<T>(key: string): Promise<T | undefined> {
-        const profiler = new PerformanceProfiler();
-
         const response = await this.remoteGetExecutor.execute(key);
 
-        profiler.stop();
-        MetricsCollector.setRedisDuration('GET', profiler.duration);
-
         if (response === undefined || response === this.UNDEFINED_CACHE_VALUE) {
             return undefined;
         }
@@ -116,13 +117,13 @@ export class CachingService {
         const writeValue =
             typeof value === 'object'
                 ? {
-                      serialized: true,
-                      value: JSON.stringify(value),
-                  }
+                    serialized: true,
+                    value: JSON.stringify(value),
+                }
                 : {
-                      serialized: false,
-                      value,
-                  };
+                    serialized: false,
+                    value,
+                };
         localCache.set(key, writeValue, { ttl: ttl * 1000 });
         return value;
     }

From ce13b1efc782da5324b8d77ab570ea6a2ce2e545 Mon Sep 17 00:00:00 2001
From: Florin Cozloschi <115977960+florincoz@users.noreply.github.com>
Date: Fri, 13 Jan 2023 13:15:26 +0200
Subject: [PATCH 2/3] update package-lock.json

---
 package-lock.json | 483 ++++++++++++++++++++++++++--------------------
 1 file changed, 278 insertions(+), 205 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index def824f80..558d4f8a3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -246,12 +246,12 @@
             "dev": true
         },
         "node_modules/@apollo/composition": {
-            "version": "2.2.2",
-            "resolved": "https://registry.npmjs.org/@apollo/composition/-/composition-2.2.2.tgz",
-            "integrity": "sha512-5wj9FqDu4E4xfOOLz4SKib8eJQgamHCgOdxwmrGj9N3B8o6P2A+zMfKEVHvEnSpRMKRm9HVcdSGdYV6QcjDIdQ==",
+            "version": "2.2.3",
+            "resolved": "https://registry.npmjs.org/@apollo/composition/-/composition-2.2.3.tgz",
+            "integrity": "sha512-wgBZHbt1F8KS8JVzsEHVVQXSzu+ZT8K9Aa9AYFP6axT4wDZTmpQDS7C34E9TyjIDBmUydmrDm5CiZ0KeFReA8Q==",
             "dependencies": {
-                "@apollo/federation-internals": "^2.2.2",
-                "@apollo/query-graphs": "^2.2.2"
+                "@apollo/federation-internals": "^2.2.3",
+                "@apollo/query-graphs": "^2.2.3"
             },
             "engines": {
                 "node": ">=14.15.0"
@@ -261,9 +261,9 @@
             }
         },
         "node_modules/@apollo/federation-internals": {
-            "version": "2.2.2",
-            "resolved": "https://registry.npmjs.org/@apollo/federation-internals/-/federation-internals-2.2.2.tgz",
-            "integrity": "sha512-Q16I75qZ6jA8lCoZedM5938oZONrJyL7Pk6TOqw44fndea0As0pb2Ug8dV3pAWq4HhJ+/vBu2WoP14CFcxA9Yw==",
+            "version": "2.2.3",
+            "resolved": "https://registry.npmjs.org/@apollo/federation-internals/-/federation-internals-2.2.3.tgz",
+            "integrity": "sha512-6XN1p5AJAlACYBo+EbwPSYnmfRXPPNxlZRLSplB/PWBy9DnF+z+uq3L85Nqmom1JYepFf7JaUuWPBzCvjxAbmg==",
             "dependencies": {
                 "chalk": "^4.1.0",
                 "js-levenshtein": "^1.1.6"
@@ -276,13 +276,13 @@
             }
         },
         "node_modules/@apollo/gateway": {
-            "version": "2.2.2",
-            "resolved": "https://registry.npmjs.org/@apollo/gateway/-/gateway-2.2.2.tgz",
-            "integrity": "sha512-oSsrbf7svgbmhAe8tSpPh3hDblWcRM/Elx8hCfGEmnDR+nZy2/kfsknk0SFKWdPSq/agtdAXFwdKfWN2DF2rYg==",
+            "version": "2.2.3",
+            "resolved": "https://registry.npmjs.org/@apollo/gateway/-/gateway-2.2.3.tgz",
+            "integrity": "sha512-kTdSZq7qoGQ/Dlbz4CYTqdsXNfiy9cj+vjTRzf8JSS1Zf3QdllSrSCbWDPjBZOkTBhVoHETkgZ5xAwR4Sgb/3g==",
             "dependencies": {
-                "@apollo/composition": "^2.2.2",
-                "@apollo/federation-internals": "^2.2.2",
-                "@apollo/query-planner": "^2.2.2",
+                "@apollo/composition": "^2.2.3",
+                "@apollo/federation-internals": "^2.2.3",
+                "@apollo/query-planner": "^2.2.3",
                 "@apollo/server-gateway-interface": "^1.0.2",
                 "@apollo/usage-reporting-protobuf": "^4.0.0",
                 "@apollo/utils.createhash": "^1.1.0",
@@ -331,11 +331,11 @@
             }
         },
         "node_modules/@apollo/query-graphs": {
-            "version": "2.2.2",
-            "resolved": "https://registry.npmjs.org/@apollo/query-graphs/-/query-graphs-2.2.2.tgz",
-            "integrity": "sha512-NHxqfDEsMNFqwxSQ8lqj9APP0jGQAvxt0LOEb4WZgVdw303g1qxu2BapUS4YjxKVRqHDap/EAzBHgwg4J2zfjA==",
+            "version": "2.2.3",
+            "resolved": "https://registry.npmjs.org/@apollo/query-graphs/-/query-graphs-2.2.3.tgz",
+            "integrity": "sha512-ykH5P72zPtnV8J415o8HX6IkJH8qBd3a+5qZCA1Fx5vLb1Y2RdKDDn2I6VH9dBFuVMQ8ggXvz1/F9XRMudO7ZQ==",
             "dependencies": {
-                "@apollo/federation-internals": "^2.2.2",
+                "@apollo/federation-internals": "^2.2.3",
                 "@types/uuid": "^8.3.4",
                 "deep-equal": "^2.0.5",
                 "ts-graphviz": "^0.16.0",
@@ -349,12 +349,12 @@
             }
         },
         "node_modules/@apollo/query-planner": {
-            "version": "2.2.2",
-            "resolved": "https://registry.npmjs.org/@apollo/query-planner/-/query-planner-2.2.2.tgz",
-            "integrity": "sha512-jKEZU2DzEmL0X0gewlknVVdah8jXpoKhtqOmg8RSAD2fFQtk3gpiceprBDEdmigQwLl97SDXGNjiWlkIRdz9Sg==",
+            "version": "2.2.3",
+            "resolved": "https://registry.npmjs.org/@apollo/query-planner/-/query-planner-2.2.3.tgz",
+            "integrity": "sha512-3uvbRqLC6honXj5seSjAvzSuOIfNIAHxdPdpBFCcsxjhC/ZS4qeqYKj+vn1SjA+GSXJ9nQ4GqQNcHX5OGZddTg==",
             "dependencies": {
-                "@apollo/federation-internals": "^2.2.2",
-                "@apollo/query-graphs": "^2.2.2",
+                "@apollo/federation-internals": "^2.2.3",
+                "@apollo/query-graphs": "^2.2.3",
                 "chalk": "^4.1.0",
                 "deep-equal": "^2.0.5",
                 "pretty-format": "^29.0.0"
@@ -2577,12 +2577,12 @@
             }
         },
         "node_modules/@graphql-tools/mock": {
-            "version": "8.7.14",
-            "resolved": "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.7.14.tgz",
-            "integrity": "sha512-kIYirhGqhhSI6p/5qj95U8Lngm4mml5B3Z/r7ShI4+/EACyOOV+wUlql45+Y21b9NRUxJbsNHpztGxzgCSyviQ==",
+            "version": "8.7.15",
+            "resolved": "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.7.15.tgz",
+            "integrity": "sha512-0zImG5tuObhowqtijlB6TMAIVtCIBsnGGwNW8gnCOa+xZAqfGdUMsSma17tHC2XuI7xhv7A0O8pika9e3APLUg==",
             "dependencies": {
-                "@graphql-tools/schema": "9.0.12",
-                "@graphql-tools/utils": "9.1.3",
+                "@graphql-tools/schema": "9.0.13",
+                "@graphql-tools/utils": "9.1.4",
                 "fast-json-stable-stringify": "^2.1.0",
                 "tslib": "^2.4.0"
             },
@@ -2591,11 +2591,11 @@
             }
         },
         "node_modules/@graphql-tools/mock/node_modules/@graphql-tools/merge": {
-            "version": "8.3.14",
-            "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.14.tgz",
-            "integrity": "sha512-zV0MU1DnxJLIB0wpL4N3u21agEiYFsjm6DI130jqHpwF0pR9HkF+Ni65BNfts4zQelP0GjkHltG+opaozAJ1NA==",
+            "version": "8.3.15",
+            "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.15.tgz",
+            "integrity": "sha512-hYYOlsqkUlL6oOo7zzuk6hIv7xQzy+x21sgK84d5FWaiWYkLYh9As8myuDd9SD5xovWWQ9m/iRhIOVDEMSyEKA==",
             "dependencies": {
-                "@graphql-tools/utils": "9.1.3",
+                "@graphql-tools/utils": "9.1.4",
                 "tslib": "^2.4.0"
             },
             "peerDependencies": {
@@ -2603,23 +2603,23 @@
             }
         },
         "node_modules/@graphql-tools/mock/node_modules/@graphql-tools/schema": {
-            "version": "9.0.12",
-            "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.12.tgz",
-            "integrity": "sha512-DmezcEltQai0V1y96nwm0Kg11FDS/INEFekD4nnVgzBqawvznWqK6D6bujn+cw6kivoIr3Uq//QmU/hBlBzUlQ==",
+            "version": "9.0.13",
+            "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.13.tgz",
+            "integrity": "sha512-guRA3fwAtv+M1Kh930P4ydH9aKJTWscIkhVFcWpj/cnjYYxj88jkEJ15ZNiJX/2breNY+sbVgmlgLKb6aXi/Jg==",
             "dependencies": {
-                "@graphql-tools/merge": "8.3.14",
-                "@graphql-tools/utils": "9.1.3",
+                "@graphql-tools/merge": "8.3.15",
+                "@graphql-tools/utils": "9.1.4",
                 "tslib": "^2.4.0",
-                "value-or-promise": "1.0.11"
+                "value-or-promise": "1.0.12"
             },
             "peerDependencies": {
                 "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
             }
         },
         "node_modules/@graphql-tools/mock/node_modules/@graphql-tools/utils": {
-            "version": "9.1.3",
-            "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.3.tgz",
-            "integrity": "sha512-bbJyKhs6awp1/OmP+WKA1GOyu9UbgZGkhIj5srmiMGLHohEOKMjW784Sk0BZil1w2x95UPu0WHw6/d/HVCACCg==",
+            "version": "9.1.4",
+            "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.4.tgz",
+            "integrity": "sha512-hgIeLt95h9nQgQuzbbdhuZmh+8WV7RZ/6GbTj6t3IU4Zd2zs9yYJ2jgW/krO587GMOY8zCwrjNOMzD40u3l7Vg==",
             "dependencies": {
                 "tslib": "^2.4.0"
             },
@@ -2627,6 +2627,14 @@
                 "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
             }
         },
+        "node_modules/@graphql-tools/mock/node_modules/value-or-promise": {
+            "version": "1.0.12",
+            "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.12.tgz",
+            "integrity": "sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==",
+            "engines": {
+                "node": ">=12"
+            }
+        },
         "node_modules/@graphql-tools/schema": {
             "version": "8.3.13",
             "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.13.tgz",
@@ -4298,9 +4306,9 @@
             }
         },
         "node_modules/@opentelemetry/api": {
-            "version": "1.3.0",
-            "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.3.0.tgz",
-            "integrity": "sha512-YveTnGNsFFixTKJz09Oi4zYkiLT5af3WpZDu4aIUM7xX+2bHAkOJayFTVQd6zB8kkWPpbua4Ha6Ql00grdLlJQ==",
+            "version": "1.4.0",
+            "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.0.tgz",
+            "integrity": "sha512-IgMK9i3sFGNUqPMbjABm0G26g0QCKCUBfglhQ7rQq6WcxbKfEHRcmwsoER4hZcuYqJgkYn2OeuoJIv7Jsftp7g==",
             "engines": {
                 "node": ">=8.0.0"
             }
@@ -5832,6 +5840,24 @@
                 "url": "https://github.com/sponsors/ljharb"
             }
         },
+        "node_modules/array.prototype.flatmap": {
+            "version": "1.3.1",
+            "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz",
+            "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==",
+            "dev": true,
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "define-properties": "^1.1.4",
+                "es-abstract": "^1.20.4",
+                "es-shim-unscopables": "^1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
         "node_modules/asn1": {
             "version": "0.2.6",
             "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
@@ -5909,9 +5935,9 @@
             }
         },
         "node_modules/aws-sdk": {
-            "version": "2.1291.0",
-            "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1291.0.tgz",
-            "integrity": "sha512-iM82Md2Wb29MZ72BpNF4YeIHtkJTyw+JMGXJG48Dwois2Rq7rLcriX6NN/4Fx4b5EEtUkwAO/wJc+NTHI7QeJw==",
+            "version": "2.1294.0",
+            "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1294.0.tgz",
+            "integrity": "sha512-/n/xbae0efRA/wpaMyF/0Jip8V0MMPEFicreDHRmiy/4iUrsqMvHdeaO8OW0kUYKHyUClKsc36Fu4GyhONKISw==",
             "dependencies": {
                 "buffer": "4.9.2",
                 "events": "1.1.1",
@@ -6491,9 +6517,9 @@
             }
         },
         "node_modules/bson": {
-            "version": "4.7.1",
-            "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.1.tgz",
-            "integrity": "sha512-XkuFtlCzi0WSy8D6PMhvrQ/q8VlZHN/2bJ/shJglwuA6TPD2ZP/hHLB7iDxOEWVINHN/UVTxP4pqZqOKMXPIXg==",
+            "version": "4.7.2",
+            "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz",
+            "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==",
             "dependencies": {
                 "buffer": "^5.6.0"
             },
@@ -6721,9 +6747,9 @@
             }
         },
         "node_modules/caniuse-lite": {
-            "version": "1.0.30001442",
-            "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001442.tgz",
-            "integrity": "sha512-239m03Pqy0hwxYPYR5JwOIxRJfLTWtle9FV8zosfV5pHg+/51uD4nxcUlM8+mWWGfwKtt8lJNHnD3cWw9VZ6ow==",
+            "version": "1.0.30001444",
+            "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001444.tgz",
+            "integrity": "sha512-ecER9xgJQVMqcrxThKptsW0pPxSae8R2RB87LNa+ivW9ppNWRHEplXcDzkCOP4LYWGj8hunXLqaiC41iBATNyg==",
             "dev": true,
             "funding": [
                 {
@@ -7268,9 +7294,9 @@
             "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
         },
         "node_modules/cookiejar": {
-            "version": "2.1.3",
-            "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz",
-            "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==",
+            "version": "2.1.4",
+            "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz",
+            "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==",
             "dev": true
         },
         "node_modules/copy-descriptor": {
@@ -7888,13 +7914,14 @@
             }
         },
         "node_modules/es-abstract": {
-            "version": "1.21.0",
-            "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.0.tgz",
-            "integrity": "sha512-GUGtW7eXQay0c+PRq0sGIKSdaBorfVqsCMhGHo4elP7YVqZu9nCZS4UkK4gv71gOWNMra/PaSKD3ao1oWExO0g==",
+            "version": "1.21.1",
+            "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz",
+            "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==",
             "dev": true,
             "dependencies": {
+                "available-typed-arrays": "^1.0.5",
                 "call-bind": "^1.0.2",
-                "es-set-tostringtag": "^2.0.0",
+                "es-set-tostringtag": "^2.0.1",
                 "es-to-primitive": "^1.2.1",
                 "function-bind": "^1.1.1",
                 "function.prototype.name": "^1.1.5",
@@ -7907,7 +7934,7 @@
                 "has-proto": "^1.0.1",
                 "has-symbols": "^1.0.3",
                 "internal-slot": "^1.0.4",
-                "is-array-buffer": "^3.0.0",
+                "is-array-buffer": "^3.0.1",
                 "is-callable": "^1.2.7",
                 "is-negative-zero": "^2.0.2",
                 "is-regex": "^1.1.4",
@@ -7934,18 +7961,19 @@
             }
         },
         "node_modules/es-get-iterator": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz",
-            "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==",
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz",
+            "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==",
             "dependencies": {
                 "call-bind": "^1.0.2",
-                "get-intrinsic": "^1.1.0",
-                "has-symbols": "^1.0.1",
-                "is-arguments": "^1.1.0",
+                "get-intrinsic": "^1.1.3",
+                "has-symbols": "^1.0.3",
+                "is-arguments": "^1.1.1",
                 "is-map": "^2.0.2",
                 "is-set": "^2.0.2",
-                "is-string": "^1.0.5",
-                "isarray": "^2.0.5"
+                "is-string": "^1.0.7",
+                "isarray": "^2.0.5",
+                "stop-iteration-iterator": "^1.0.0"
             },
             "funding": {
                 "url": "https://github.com/sponsors/ljharb"
@@ -8175,13 +8203,14 @@
             }
         },
         "node_modules/eslint-import-resolver-node": {
-            "version": "0.3.6",
-            "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz",
-            "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==",
+            "version": "0.3.7",
+            "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz",
+            "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==",
             "dev": true,
             "dependencies": {
                 "debug": "^3.2.7",
-                "resolve": "^1.20.0"
+                "is-core-module": "^2.11.0",
+                "resolve": "^1.22.1"
             }
         },
         "node_modules/eslint-import-resolver-node/node_modules/debug": {
@@ -8220,23 +8249,25 @@
             }
         },
         "node_modules/eslint-plugin-import": {
-            "version": "2.26.0",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz",
-            "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==",
+            "version": "2.27.4",
+            "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.4.tgz",
+            "integrity": "sha512-Z1jVt1EGKia1X9CnBCkpAOhWy8FgQ7OmJ/IblEkT82yrFU/xJaxwujaTzLWqigewwynRQ9mmHfX9MtAfhxm0sA==",
             "dev": true,
             "dependencies": {
-                "array-includes": "^3.1.4",
-                "array.prototype.flat": "^1.2.5",
-                "debug": "^2.6.9",
+                "array-includes": "^3.1.6",
+                "array.prototype.flat": "^1.3.1",
+                "array.prototype.flatmap": "^1.3.0",
+                "debug": "^3.2.7",
                 "doctrine": "^2.1.0",
-                "eslint-import-resolver-node": "^0.3.6",
-                "eslint-module-utils": "^2.7.3",
+                "eslint-import-resolver-node": "^0.3.7",
+                "eslint-module-utils": "^2.7.4",
                 "has": "^1.0.3",
-                "is-core-module": "^2.8.1",
+                "is-core-module": "^2.11.0",
                 "is-glob": "^4.0.3",
                 "minimatch": "^3.1.2",
-                "object.values": "^1.1.5",
-                "resolve": "^1.22.0",
+                "object.values": "^1.1.6",
+                "resolve": "^1.22.1",
+                "semver": "^6.3.0",
                 "tsconfig-paths": "^3.14.1"
             },
             "engines": {
@@ -8247,12 +8278,12 @@
             }
         },
         "node_modules/eslint-plugin-import/node_modules/debug": {
-            "version": "2.6.9",
-            "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-            "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+            "version": "3.2.7",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+            "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
             "dev": true,
             "dependencies": {
-                "ms": "2.0.0"
+                "ms": "^2.1.1"
             }
         },
         "node_modules/eslint-plugin-import/node_modules/doctrine": {
@@ -8267,11 +8298,14 @@
                 "node": ">=0.10.0"
             }
         },
-        "node_modules/eslint-plugin-import/node_modules/ms": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-            "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-            "dev": true
+        "node_modules/eslint-plugin-import/node_modules/semver": {
+            "version": "6.3.0",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+            "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+            "dev": true,
+            "bin": {
+                "semver": "bin/semver.js"
+            }
         },
         "node_modules/eslint-scope": {
             "version": "5.1.1",
@@ -10010,7 +10044,6 @@
             "version": "1.0.4",
             "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz",
             "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==",
-            "dev": true,
             "dependencies": {
                 "get-intrinsic": "^1.1.3",
                 "has": "^1.0.3",
@@ -12653,9 +12686,9 @@
             }
         },
         "node_modules/libphonenumber-js": {
-            "version": "1.10.17",
-            "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.17.tgz",
-            "integrity": "sha512-UQrNzsusSn5qaojdpWqporWRdpx6AGeb+egj64NrpYuyKHvnSH9jMp/1Dy3b/WnMyJA5zgV1yw//jC6J0dCXkw=="
+            "version": "1.10.18",
+            "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.18.tgz",
+            "integrity": "sha512-NS4ZEgNhwbcPz1gfSXCGFnQm0xEiyTSPRthIuWytDzOiEG9xnZ2FbLyfJC4tI2BMAAXpoWbNxHYH75pa3Dq9og=="
         },
         "node_modules/limiter": {
             "version": "1.1.5",
@@ -13612,9 +13645,9 @@
             }
         },
         "node_modules/node-fetch": {
-            "version": "2.6.7",
-            "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
-            "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+            "version": "2.6.8",
+            "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.8.tgz",
+            "integrity": "sha512-RZ6dBYuj8dRSfxpUSu+NsdF1dpPpluJxwOp+6IoDp/sH2QNDSvurYsAa+F1WxY2RjA1iP93xhcsUoYbF2XBqVg==",
             "dependencies": {
                 "whatwg-url": "^5.0.0"
             },
@@ -14029,9 +14062,9 @@
             }
         },
         "node_modules/object-inspect": {
-            "version": "1.12.2",
-            "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
-            "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
+            "version": "1.12.3",
+            "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
+            "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
             "funding": {
                 "url": "https://github.com/sponsors/ljharb"
             }
@@ -16718,6 +16751,17 @@
                 "node": ">=0.10.0"
             }
         },
+        "node_modules/stop-iteration-iterator": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
+            "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==",
+            "dependencies": {
+                "internal-slot": "^1.0.4"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            }
+        },
         "node_modules/streamsearch": {
             "version": "1.1.0",
             "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
@@ -18871,31 +18915,31 @@
             }
         },
         "@apollo/composition": {
-            "version": "2.2.2",
-            "resolved": "https://registry.npmjs.org/@apollo/composition/-/composition-2.2.2.tgz",
-            "integrity": "sha512-5wj9FqDu4E4xfOOLz4SKib8eJQgamHCgOdxwmrGj9N3B8o6P2A+zMfKEVHvEnSpRMKRm9HVcdSGdYV6QcjDIdQ==",
+            "version": "2.2.3",
+            "resolved": "https://registry.npmjs.org/@apollo/composition/-/composition-2.2.3.tgz",
+            "integrity": "sha512-wgBZHbt1F8KS8JVzsEHVVQXSzu+ZT8K9Aa9AYFP6axT4wDZTmpQDS7C34E9TyjIDBmUydmrDm5CiZ0KeFReA8Q==",
             "requires": {
-                "@apollo/federation-internals": "^2.2.2",
-                "@apollo/query-graphs": "^2.2.2"
+                "@apollo/federation-internals": "^2.2.3",
+                "@apollo/query-graphs": "^2.2.3"
             }
         },
         "@apollo/federation-internals": {
-            "version": "2.2.2",
-            "resolved": "https://registry.npmjs.org/@apollo/federation-internals/-/federation-internals-2.2.2.tgz",
-            "integrity": "sha512-Q16I75qZ6jA8lCoZedM5938oZONrJyL7Pk6TOqw44fndea0As0pb2Ug8dV3pAWq4HhJ+/vBu2WoP14CFcxA9Yw==",
+            "version": "2.2.3",
+            "resolved": "https://registry.npmjs.org/@apollo/federation-internals/-/federation-internals-2.2.3.tgz",
+            "integrity": "sha512-6XN1p5AJAlACYBo+EbwPSYnmfRXPPNxlZRLSplB/PWBy9DnF+z+uq3L85Nqmom1JYepFf7JaUuWPBzCvjxAbmg==",
             "requires": {
                 "chalk": "^4.1.0",
                 "js-levenshtein": "^1.1.6"
             }
         },
         "@apollo/gateway": {
-            "version": "2.2.2",
-            "resolved": "https://registry.npmjs.org/@apollo/gateway/-/gateway-2.2.2.tgz",
-            "integrity": "sha512-oSsrbf7svgbmhAe8tSpPh3hDblWcRM/Elx8hCfGEmnDR+nZy2/kfsknk0SFKWdPSq/agtdAXFwdKfWN2DF2rYg==",
+            "version": "2.2.3",
+            "resolved": "https://registry.npmjs.org/@apollo/gateway/-/gateway-2.2.3.tgz",
+            "integrity": "sha512-kTdSZq7qoGQ/Dlbz4CYTqdsXNfiy9cj+vjTRzf8JSS1Zf3QdllSrSCbWDPjBZOkTBhVoHETkgZ5xAwR4Sgb/3g==",
             "requires": {
-                "@apollo/composition": "^2.2.2",
-                "@apollo/federation-internals": "^2.2.2",
-                "@apollo/query-planner": "^2.2.2",
+                "@apollo/composition": "^2.2.3",
+                "@apollo/federation-internals": "^2.2.3",
+                "@apollo/query-planner": "^2.2.3",
                 "@apollo/server-gateway-interface": "^1.0.2",
                 "@apollo/usage-reporting-protobuf": "^4.0.0",
                 "@apollo/utils.createhash": "^1.1.0",
@@ -18933,11 +18977,11 @@
             }
         },
         "@apollo/query-graphs": {
-            "version": "2.2.2",
-            "resolved": "https://registry.npmjs.org/@apollo/query-graphs/-/query-graphs-2.2.2.tgz",
-            "integrity": "sha512-NHxqfDEsMNFqwxSQ8lqj9APP0jGQAvxt0LOEb4WZgVdw303g1qxu2BapUS4YjxKVRqHDap/EAzBHgwg4J2zfjA==",
+            "version": "2.2.3",
+            "resolved": "https://registry.npmjs.org/@apollo/query-graphs/-/query-graphs-2.2.3.tgz",
+            "integrity": "sha512-ykH5P72zPtnV8J415o8HX6IkJH8qBd3a+5qZCA1Fx5vLb1Y2RdKDDn2I6VH9dBFuVMQ8ggXvz1/F9XRMudO7ZQ==",
             "requires": {
-                "@apollo/federation-internals": "^2.2.2",
+                "@apollo/federation-internals": "^2.2.3",
                 "@types/uuid": "^8.3.4",
                 "deep-equal": "^2.0.5",
                 "ts-graphviz": "^0.16.0",
@@ -18945,12 +18989,12 @@
             }
         },
         "@apollo/query-planner": {
-            "version": "2.2.2",
-            "resolved": "https://registry.npmjs.org/@apollo/query-planner/-/query-planner-2.2.2.tgz",
-            "integrity": "sha512-jKEZU2DzEmL0X0gewlknVVdah8jXpoKhtqOmg8RSAD2fFQtk3gpiceprBDEdmigQwLl97SDXGNjiWlkIRdz9Sg==",
+            "version": "2.2.3",
+            "resolved": "https://registry.npmjs.org/@apollo/query-planner/-/query-planner-2.2.3.tgz",
+            "integrity": "sha512-3uvbRqLC6honXj5seSjAvzSuOIfNIAHxdPdpBFCcsxjhC/ZS4qeqYKj+vn1SjA+GSXJ9nQ4GqQNcHX5OGZddTg==",
             "requires": {
-                "@apollo/federation-internals": "^2.2.2",
-                "@apollo/query-graphs": "^2.2.2",
+                "@apollo/federation-internals": "^2.2.3",
+                "@apollo/query-graphs": "^2.2.3",
                 "chalk": "^4.1.0",
                 "deep-equal": "^2.0.5",
                 "pretty-format": "^29.0.0"
@@ -20744,43 +20788,48 @@
             }
         },
         "@graphql-tools/mock": {
-            "version": "8.7.14",
-            "resolved": "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.7.14.tgz",
-            "integrity": "sha512-kIYirhGqhhSI6p/5qj95U8Lngm4mml5B3Z/r7ShI4+/EACyOOV+wUlql45+Y21b9NRUxJbsNHpztGxzgCSyviQ==",
+            "version": "8.7.15",
+            "resolved": "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.7.15.tgz",
+            "integrity": "sha512-0zImG5tuObhowqtijlB6TMAIVtCIBsnGGwNW8gnCOa+xZAqfGdUMsSma17tHC2XuI7xhv7A0O8pika9e3APLUg==",
             "requires": {
-                "@graphql-tools/schema": "9.0.12",
-                "@graphql-tools/utils": "9.1.3",
+                "@graphql-tools/schema": "9.0.13",
+                "@graphql-tools/utils": "9.1.4",
                 "fast-json-stable-stringify": "^2.1.0",
                 "tslib": "^2.4.0"
             },
             "dependencies": {
                 "@graphql-tools/merge": {
-                    "version": "8.3.14",
-                    "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.14.tgz",
-                    "integrity": "sha512-zV0MU1DnxJLIB0wpL4N3u21agEiYFsjm6DI130jqHpwF0pR9HkF+Ni65BNfts4zQelP0GjkHltG+opaozAJ1NA==",
+                    "version": "8.3.15",
+                    "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.15.tgz",
+                    "integrity": "sha512-hYYOlsqkUlL6oOo7zzuk6hIv7xQzy+x21sgK84d5FWaiWYkLYh9As8myuDd9SD5xovWWQ9m/iRhIOVDEMSyEKA==",
                     "requires": {
-                        "@graphql-tools/utils": "9.1.3",
+                        "@graphql-tools/utils": "9.1.4",
                         "tslib": "^2.4.0"
                     }
                 },
                 "@graphql-tools/schema": {
-                    "version": "9.0.12",
-                    "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.12.tgz",
-                    "integrity": "sha512-DmezcEltQai0V1y96nwm0Kg11FDS/INEFekD4nnVgzBqawvznWqK6D6bujn+cw6kivoIr3Uq//QmU/hBlBzUlQ==",
+                    "version": "9.0.13",
+                    "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.13.tgz",
+                    "integrity": "sha512-guRA3fwAtv+M1Kh930P4ydH9aKJTWscIkhVFcWpj/cnjYYxj88jkEJ15ZNiJX/2breNY+sbVgmlgLKb6aXi/Jg==",
                     "requires": {
-                        "@graphql-tools/merge": "8.3.14",
-                        "@graphql-tools/utils": "9.1.3",
+                        "@graphql-tools/merge": "8.3.15",
+                        "@graphql-tools/utils": "9.1.4",
                         "tslib": "^2.4.0",
-                        "value-or-promise": "1.0.11"
+                        "value-or-promise": "1.0.12"
                     }
                 },
                 "@graphql-tools/utils": {
-                    "version": "9.1.3",
-                    "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.3.tgz",
-                    "integrity": "sha512-bbJyKhs6awp1/OmP+WKA1GOyu9UbgZGkhIj5srmiMGLHohEOKMjW784Sk0BZil1w2x95UPu0WHw6/d/HVCACCg==",
+                    "version": "9.1.4",
+                    "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.4.tgz",
+                    "integrity": "sha512-hgIeLt95h9nQgQuzbbdhuZmh+8WV7RZ/6GbTj6t3IU4Zd2zs9yYJ2jgW/krO587GMOY8zCwrjNOMzD40u3l7Vg==",
                     "requires": {
                         "tslib": "^2.4.0"
                     }
+                },
+                "value-or-promise": {
+                    "version": "1.0.12",
+                    "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.12.tgz",
+                    "integrity": "sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q=="
                 }
             }
         },
@@ -22002,9 +22051,9 @@
             }
         },
         "@opentelemetry/api": {
-            "version": "1.3.0",
-            "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.3.0.tgz",
-            "integrity": "sha512-YveTnGNsFFixTKJz09Oi4zYkiLT5af3WpZDu4aIUM7xX+2bHAkOJayFTVQd6zB8kkWPpbua4Ha6Ql00grdLlJQ=="
+            "version": "1.4.0",
+            "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.0.tgz",
+            "integrity": "sha512-IgMK9i3sFGNUqPMbjABm0G26g0QCKCUBfglhQ7rQq6WcxbKfEHRcmwsoER4hZcuYqJgkYn2OeuoJIv7Jsftp7g=="
         },
         "@protobufjs/aspromise": {
             "version": "1.1.2",
@@ -23272,6 +23321,18 @@
                 "es-shim-unscopables": "^1.0.0"
             }
         },
+        "array.prototype.flatmap": {
+            "version": "1.3.1",
+            "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz",
+            "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==",
+            "dev": true,
+            "requires": {
+                "call-bind": "^1.0.2",
+                "define-properties": "^1.1.4",
+                "es-abstract": "^1.20.4",
+                "es-shim-unscopables": "^1.0.0"
+            }
+        },
         "asn1": {
             "version": "0.2.6",
             "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
@@ -23328,9 +23389,9 @@
             "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw=="
         },
         "aws-sdk": {
-            "version": "2.1291.0",
-            "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1291.0.tgz",
-            "integrity": "sha512-iM82Md2Wb29MZ72BpNF4YeIHtkJTyw+JMGXJG48Dwois2Rq7rLcriX6NN/4Fx4b5EEtUkwAO/wJc+NTHI7QeJw==",
+            "version": "2.1294.0",
+            "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1294.0.tgz",
+            "integrity": "sha512-/n/xbae0efRA/wpaMyF/0Jip8V0MMPEFicreDHRmiy/4iUrsqMvHdeaO8OW0kUYKHyUClKsc36Fu4GyhONKISw==",
             "requires": {
                 "buffer": "4.9.2",
                 "events": "1.1.1",
@@ -23794,9 +23855,9 @@
             }
         },
         "bson": {
-            "version": "4.7.1",
-            "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.1.tgz",
-            "integrity": "sha512-XkuFtlCzi0WSy8D6PMhvrQ/q8VlZHN/2bJ/shJglwuA6TPD2ZP/hHLB7iDxOEWVINHN/UVTxP4pqZqOKMXPIXg==",
+            "version": "4.7.2",
+            "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz",
+            "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==",
             "requires": {
                 "buffer": "^5.6.0"
             },
@@ -23955,9 +24016,9 @@
             "dev": true
         },
         "caniuse-lite": {
-            "version": "1.0.30001442",
-            "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001442.tgz",
-            "integrity": "sha512-239m03Pqy0hwxYPYR5JwOIxRJfLTWtle9FV8zosfV5pHg+/51uD4nxcUlM8+mWWGfwKtt8lJNHnD3cWw9VZ6ow==",
+            "version": "1.0.30001444",
+            "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001444.tgz",
+            "integrity": "sha512-ecER9xgJQVMqcrxThKptsW0pPxSae8R2RB87LNa+ivW9ppNWRHEplXcDzkCOP4LYWGj8hunXLqaiC41iBATNyg==",
             "dev": true
         },
         "capture-exit": {
@@ -24380,9 +24441,9 @@
             "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
         },
         "cookiejar": {
-            "version": "2.1.3",
-            "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz",
-            "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==",
+            "version": "2.1.4",
+            "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz",
+            "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==",
             "dev": true
         },
         "copy-descriptor": {
@@ -24883,13 +24944,14 @@
             }
         },
         "es-abstract": {
-            "version": "1.21.0",
-            "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.0.tgz",
-            "integrity": "sha512-GUGtW7eXQay0c+PRq0sGIKSdaBorfVqsCMhGHo4elP7YVqZu9nCZS4UkK4gv71gOWNMra/PaSKD3ao1oWExO0g==",
+            "version": "1.21.1",
+            "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz",
+            "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==",
             "dev": true,
             "requires": {
+                "available-typed-arrays": "^1.0.5",
                 "call-bind": "^1.0.2",
-                "es-set-tostringtag": "^2.0.0",
+                "es-set-tostringtag": "^2.0.1",
                 "es-to-primitive": "^1.2.1",
                 "function-bind": "^1.1.1",
                 "function.prototype.name": "^1.1.5",
@@ -24902,7 +24964,7 @@
                 "has-proto": "^1.0.1",
                 "has-symbols": "^1.0.3",
                 "internal-slot": "^1.0.4",
-                "is-array-buffer": "^3.0.0",
+                "is-array-buffer": "^3.0.1",
                 "is-callable": "^1.2.7",
                 "is-negative-zero": "^2.0.2",
                 "is-regex": "^1.1.4",
@@ -24923,18 +24985,19 @@
             }
         },
         "es-get-iterator": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz",
-            "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==",
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz",
+            "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==",
             "requires": {
                 "call-bind": "^1.0.2",
-                "get-intrinsic": "^1.1.0",
-                "has-symbols": "^1.0.1",
-                "is-arguments": "^1.1.0",
+                "get-intrinsic": "^1.1.3",
+                "has-symbols": "^1.0.3",
+                "is-arguments": "^1.1.1",
                 "is-map": "^2.0.2",
                 "is-set": "^2.0.2",
-                "is-string": "^1.0.5",
-                "isarray": "^2.0.5"
+                "is-string": "^1.0.7",
+                "isarray": "^2.0.5",
+                "stop-iteration-iterator": "^1.0.0"
             }
         },
         "es-module-lexer": {
@@ -25152,13 +25215,14 @@
             "requires": {}
         },
         "eslint-import-resolver-node": {
-            "version": "0.3.6",
-            "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz",
-            "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==",
+            "version": "0.3.7",
+            "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz",
+            "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==",
             "dev": true,
             "requires": {
                 "debug": "^3.2.7",
-                "resolve": "^1.20.0"
+                "is-core-module": "^2.11.0",
+                "resolve": "^1.22.1"
             },
             "dependencies": {
                 "debug": {
@@ -25193,33 +25257,35 @@
             }
         },
         "eslint-plugin-import": {
-            "version": "2.26.0",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz",
-            "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==",
+            "version": "2.27.4",
+            "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.4.tgz",
+            "integrity": "sha512-Z1jVt1EGKia1X9CnBCkpAOhWy8FgQ7OmJ/IblEkT82yrFU/xJaxwujaTzLWqigewwynRQ9mmHfX9MtAfhxm0sA==",
             "dev": true,
             "requires": {
-                "array-includes": "^3.1.4",
-                "array.prototype.flat": "^1.2.5",
-                "debug": "^2.6.9",
+                "array-includes": "^3.1.6",
+                "array.prototype.flat": "^1.3.1",
+                "array.prototype.flatmap": "^1.3.0",
+                "debug": "^3.2.7",
                 "doctrine": "^2.1.0",
-                "eslint-import-resolver-node": "^0.3.6",
-                "eslint-module-utils": "^2.7.3",
+                "eslint-import-resolver-node": "^0.3.7",
+                "eslint-module-utils": "^2.7.4",
                 "has": "^1.0.3",
-                "is-core-module": "^2.8.1",
+                "is-core-module": "^2.11.0",
                 "is-glob": "^4.0.3",
                 "minimatch": "^3.1.2",
-                "object.values": "^1.1.5",
-                "resolve": "^1.22.0",
+                "object.values": "^1.1.6",
+                "resolve": "^1.22.1",
+                "semver": "^6.3.0",
                 "tsconfig-paths": "^3.14.1"
             },
             "dependencies": {
                 "debug": {
-                    "version": "2.6.9",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-                    "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+                    "version": "3.2.7",
+                    "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+                    "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
                     "dev": true,
                     "requires": {
-                        "ms": "2.0.0"
+                        "ms": "^2.1.1"
                     }
                 },
                 "doctrine": {
@@ -25231,10 +25297,10 @@
                         "esutils": "^2.0.2"
                     }
                 },
-                "ms": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-                    "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+                "semver": {
+                    "version": "6.3.0",
+                    "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+                    "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
                     "dev": true
                 }
             }
@@ -26505,7 +26571,6 @@
             "version": "1.0.4",
             "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz",
             "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==",
-            "dev": true,
             "requires": {
                 "get-intrinsic": "^1.1.3",
                 "has": "^1.0.3",
@@ -28547,9 +28612,9 @@
             }
         },
         "libphonenumber-js": {
-            "version": "1.10.17",
-            "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.17.tgz",
-            "integrity": "sha512-UQrNzsusSn5qaojdpWqporWRdpx6AGeb+egj64NrpYuyKHvnSH9jMp/1Dy3b/WnMyJA5zgV1yw//jC6J0dCXkw=="
+            "version": "1.10.18",
+            "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.18.tgz",
+            "integrity": "sha512-NS4ZEgNhwbcPz1gfSXCGFnQm0xEiyTSPRthIuWytDzOiEG9xnZ2FbLyfJC4tI2BMAAXpoWbNxHYH75pa3Dq9og=="
         },
         "limiter": {
             "version": "1.1.5",
@@ -29324,9 +29389,9 @@
             }
         },
         "node-fetch": {
-            "version": "2.6.7",
-            "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
-            "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+            "version": "2.6.8",
+            "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.8.tgz",
+            "integrity": "sha512-RZ6dBYuj8dRSfxpUSu+NsdF1dpPpluJxwOp+6IoDp/sH2QNDSvurYsAa+F1WxY2RjA1iP93xhcsUoYbF2XBqVg==",
             "requires": {
                 "whatwg-url": "^5.0.0"
             },
@@ -29651,9 +29716,9 @@
             "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="
         },
         "object-inspect": {
-            "version": "1.12.2",
-            "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
-            "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ=="
+            "version": "1.12.3",
+            "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
+            "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g=="
         },
         "object-is": {
             "version": "1.1.5",
@@ -31704,6 +31769,14 @@
             "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==",
             "dev": true
         },
+        "stop-iteration-iterator": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
+            "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==",
+            "requires": {
+                "internal-slot": "^1.0.4"
+            }
+        },
         "streamsearch": {
             "version": "1.1.0",
             "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",

From c8a6d63351fef03fe0f2b407aa64ba73a8111835 Mon Sep 17 00:00:00 2001
From: Florin Cozloschi <115977960+florincoz@users.noreply.github.com>
Date: Mon, 16 Jan 2023 09:51:17 +0200
Subject: [PATCH 3/3] add logs for redis response

---
 src/services/caching/cache.service.ts | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/services/caching/cache.service.ts b/src/services/caching/cache.service.ts
index e8cd4cc16..8c3c66f0a 100644
--- a/src/services/caching/cache.service.ts
+++ b/src/services/caching/cache.service.ts
@@ -32,7 +32,7 @@ export class CachingService {
             const delay = Math.min(times * 50, 5000);
             return delay;
         },
-        enableAutoPipelining: false,
+        enableAutoPipelining: true,
     };
 
     constructor(
@@ -49,6 +49,7 @@ export class CachingService {
                 const profiler = new PerformanceProfiler();
                 const redisResponse = await this.client.get(key);
                 profiler.stop();
+                console.log(key, profiler.duration, redisResponse);
                 MetricsCollector.setRedisDuration('GET', profiler.duration);
                 return redisResponse;
             }
@@ -124,13 +125,13 @@ export class CachingService {
                     serialized: false,
                     value,
                 };
+
         localCache.set(key, writeValue, { ttl: ttl * 1000 });
         return value;
     }
 
     getCacheLocal<T>(key: string): T | undefined {
         const cachedValue: any = localCache.get(key) as T;
-
         if (!cachedValue) {
             return undefined;
         }
@@ -176,6 +177,7 @@ export class CachingService {
         const profiler = new PerformanceProfiler(`vmQuery:${key}`);
 
         let cachedValue = this.getCacheLocal<T>(key);
+
         if (cachedValue !== undefined) {
             profiler.stop(`Local Cache hit for key ${key}`);
             return cachedValue === this.UNDEFINED_CACHE_VALUE
@@ -196,7 +198,6 @@ export class CachingService {
             const value = await promise();
 
             profiler.stop(`Cache miss for key ${key}`);
-
             if (localTtl > 0) {
                 await this.setCacheLocal<T>(key, value, localTtl);
             }