webui: replace GraphQL linter

Quentin Gliech created

Change summary

webui/.eslintrc.js      |   37 
webui/package-lock.json | 1156 ++++++++++--------------------------------
webui/package.json      |    2 
3 files changed, 302 insertions(+), 893 deletions(-)

Detailed changes

webui/.eslintrc.js 🔗

@@ -1,18 +1,6 @@
 module.exports = {
-  extends: [
-    'react-app',
-    'prettier',
-    'plugin:prettier/recommended',
-  ],
-  plugins: ['graphql'],
+  extends: ['react-app', 'prettier', 'plugin:prettier/recommended'],
   rules: {
-    'graphql/template-strings': [
-      'error',
-      {
-        schemaJson: require('./src/schema.json'),
-        env: 'literal',
-      },
-    ],
     'import/order': [
       'error',
       {
@@ -29,8 +17,12 @@ module.exports = {
             position: 'after',
           },
         ],
-        pathGroupsExcludedImportTypes: ["builtin"],
-        groups: [['builtin', 'external'], ['internal', 'parent'], ['sibling', 'index']],
+        pathGroupsExcludedImportTypes: ['builtin'],
+        groups: [
+          ['builtin', 'external'],
+          ['internal', 'parent'],
+          ['sibling', 'index'],
+        ],
         'newlines-between': 'always',
       },
     ],
@@ -39,4 +31,19 @@ module.exports = {
     'import/internal-regex': '^src/',
   },
   ignorePatterns: ['**/*.generated.tsx'],
+
+  overrides: [
+    {
+      files: ['*.graphql'],
+      parser: '@graphql-eslint/eslint-plugin',
+      plugins: ['@graphql-eslint'],
+      rules: {
+        '@graphql-eslint/known-type-names': 'error',
+      },
+      parserOptions: {
+        schema: './src/schema.json',
+        operations: './src/**/*.graphql'
+      }
+    },
+  ],
 };

webui/package-lock.json 🔗

@@ -45,8 +45,8 @@
         "@graphql-codegen/typescript": "^2.4.3",
         "@graphql-codegen/typescript-operations": "^2.3.0",
         "@graphql-codegen/typescript-react-apollo": "^3.2.6",
+        "@graphql-eslint/eslint-plugin": "^3.8.0",
         "eslint-config-prettier": "^8.3.0",
-        "eslint-plugin-graphql": "^4.0.0",
         "eslint-plugin-prettier": "^4.0.0",
         "prettier": "^2.5.1"
       }
@@ -107,24 +107,6 @@
       "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
       "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
     },
-    "node_modules/@ardatan/aggregate-error": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/@ardatan/aggregate-error/-/aggregate-error-0.0.6.tgz",
-      "integrity": "sha512-vyrkEHG1jrukmzTPtyWB4NLPauUw5bQeg4uhn8f+1SSynmrOcyvlb1GKQjjgoBzElLdfXCRYX8UnBlhklOHYRQ==",
-      "dev": true,
-      "dependencies": {
-        "tslib": "~2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/@ardatan/aggregate-error/node_modules/tslib": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz",
-      "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==",
-      "dev": true
-    },
     "node_modules/@arrows/composition": {
       "version": "1.2.2",
       "resolved": "https://registry.npmjs.org/@arrows/composition/-/composition-1.2.2.tgz",
@@ -2463,219 +2445,6 @@
         "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
       }
     },
-    "node_modules/@graphql-codegen/cli/node_modules/@graphql-tools/delegate": {
-      "version": "8.4.3",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-8.4.3.tgz",
-      "integrity": "sha512-hKTJdJXJnKL0+2vpU+Kt7OHQTIXZ9mBmNBwHsYiG5WNArz/vNI7910r6TC2XMf/e7zhyyK+mXxMDBmDQkkJagA==",
-      "dev": true,
-      "dependencies": {
-        "@graphql-tools/batch-execute": "^8.3.1",
-        "@graphql-tools/schema": "^8.3.1",
-        "@graphql-tools/utils": "^8.5.4",
-        "dataloader": "2.0.0",
-        "tslib": "~2.3.0",
-        "value-or-promise": "1.0.11"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
-      }
-    },
-    "node_modules/@graphql-codegen/cli/node_modules/@graphql-tools/graphql-file-loader": {
-      "version": "7.3.3",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-file-loader/-/graphql-file-loader-7.3.3.tgz",
-      "integrity": "sha512-6kUJZiNpYKVhum9E5wfl5PyLLupEDYdH7c8l6oMrk6c7EPEVs6iSUyB7yQoWrtJccJLULBW2CRQ5IHp5JYK0mA==",
-      "dev": true,
-      "dependencies": {
-        "@graphql-tools/import": "^6.5.7",
-        "@graphql-tools/utils": "^8.5.1",
-        "globby": "^11.0.3",
-        "tslib": "~2.3.0",
-        "unixify": "^1.0.0"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
-      }
-    },
-    "node_modules/@graphql-codegen/cli/node_modules/@graphql-tools/json-file-loader": {
-      "version": "7.3.3",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/json-file-loader/-/json-file-loader-7.3.3.tgz",
-      "integrity": "sha512-CN2Qk9rt+Gepa3rb3X/mpxYA5MIYLwZBPj2Njw6lbZ6AaxG+O1ArDCL5ACoiWiBimn1FCOM778uhRM9znd0b3Q==",
-      "dev": true,
-      "dependencies": {
-        "@graphql-tools/utils": "^8.5.1",
-        "globby": "^11.0.3",
-        "tslib": "~2.3.0",
-        "unixify": "^1.0.0"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
-      }
-    },
-    "node_modules/@graphql-codegen/cli/node_modules/@graphql-tools/load": {
-      "version": "7.5.1",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/load/-/load-7.5.1.tgz",
-      "integrity": "sha512-j9XcLYZPZdl/TzzqA83qveJmwcCxgGizt5L1+C1/Z68brTEmQHLdQCOR3Ma3ewESJt6DU05kSTu2raKaunkjRg==",
-      "dev": true,
-      "dependencies": {
-        "@graphql-tools/schema": "8.3.1",
-        "@graphql-tools/utils": "^8.6.0",
-        "p-limit": "3.1.0",
-        "tslib": "~2.3.0"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
-      }
-    },
-    "node_modules/@graphql-codegen/cli/node_modules/@graphql-tools/merge": {
-      "version": "8.2.2",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.2.tgz",
-      "integrity": "sha512-2DyqhIOMUMKbCPqo8p6xSdll2OBcBxGdOrxlJJlFQvinsSaYqp/ct3dhAxNtzaIcvSVgXvttQqfD7O2ziFtE7Q==",
-      "dev": true,
-      "dependencies": {
-        "@graphql-tools/utils": "^8.5.1",
-        "tslib": "~2.3.0"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
-      }
-    },
-    "node_modules/@graphql-codegen/cli/node_modules/@graphql-tools/schema": {
-      "version": "8.3.1",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.1.tgz",
-      "integrity": "sha512-3R0AJFe715p4GwF067G5i0KCr/XIdvSfDLvTLEiTDQ8V/hwbOHEKHKWlEBHGRQwkG5lwFQlW1aOn7VnlPERnWQ==",
-      "dev": true,
-      "dependencies": {
-        "@graphql-tools/merge": "^8.2.1",
-        "@graphql-tools/utils": "^8.5.1",
-        "tslib": "~2.3.0",
-        "value-or-promise": "1.0.11"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
-      }
-    },
-    "node_modules/@graphql-codegen/cli/node_modules/@graphql-tools/url-loader": {
-      "version": "7.7.1",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-7.7.1.tgz",
-      "integrity": "sha512-K/5amdeHtKYI976HVd/AXdSNvLL7vx5QVjMlwN0OHeYyxSgC+UOH+KkS7cshYgL13SekGu0Mxbg9ABfgQ34ECA==",
-      "dev": true,
-      "dependencies": {
-        "@graphql-tools/delegate": "^8.4.1",
-        "@graphql-tools/utils": "^8.5.1",
-        "@graphql-tools/wrap": "^8.3.1",
-        "@n1ru4l/graphql-live-query": "^0.9.0",
-        "@types/websocket": "^1.0.4",
-        "@types/ws": "^8.0.0",
-        "cross-undici-fetch": "^0.1.19",
-        "dset": "^3.1.0",
-        "extract-files": "^11.0.0",
-        "graphql-sse": "^1.0.1",
-        "graphql-ws": "^5.4.1",
-        "isomorphic-ws": "^4.0.1",
-        "meros": "^1.1.4",
-        "subscriptions-transport-ws": "^0.11.0",
-        "sync-fetch": "^0.3.1",
-        "tslib": "^2.3.0",
-        "valid-url": "^1.0.9",
-        "value-or-promise": "^1.0.11",
-        "ws": "^8.3.0"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
-      }
-    },
-    "node_modules/@graphql-codegen/cli/node_modules/@graphql-tools/url-loader/node_modules/@n1ru4l/graphql-live-query": {
-      "version": "0.9.0",
-      "resolved": "https://registry.npmjs.org/@n1ru4l/graphql-live-query/-/graphql-live-query-0.9.0.tgz",
-      "integrity": "sha512-BTpWy1e+FxN82RnLz4x1+JcEewVdfmUhV1C6/XYD5AjS7PQp9QFF7K8bCD6gzPTr2l+prvqOyVueQhFJxB1vfg==",
-      "dev": true,
-      "peerDependencies": {
-        "graphql": "^15.4.0 || ^16.0.0"
-      }
-    },
-    "node_modules/@graphql-codegen/cli/node_modules/@graphql-tools/url-loader/node_modules/subscriptions-transport-ws": {
-      "version": "0.11.0",
-      "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.11.0.tgz",
-      "integrity": "sha512-8D4C6DIH5tGiAIpp5I0wD/xRlNiZAPGHygzCe7VzyzUoxHtawzjNAY9SUTXU05/EY2NMY9/9GF0ycizkXr1CWQ==",
-      "dev": true,
-      "dependencies": {
-        "backo2": "^1.0.2",
-        "eventemitter3": "^3.1.0",
-        "iterall": "^1.2.1",
-        "symbol-observable": "^1.0.4",
-        "ws": "^5.2.0 || ^6.0.0 || ^7.0.0"
-      },
-      "peerDependencies": {
-        "graphql": "^15.7.2 || ^16.0.0"
-      }
-    },
-    "node_modules/@graphql-codegen/cli/node_modules/@graphql-tools/url-loader/node_modules/subscriptions-transport-ws/node_modules/ws": {
-      "version": "7.5.7",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz",
-      "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==",
-      "dev": true,
-      "engines": {
-        "node": ">=8.3.0"
-      },
-      "peerDependencies": {
-        "bufferutil": "^4.0.1",
-        "utf-8-validate": "^5.0.2"
-      },
-      "peerDependenciesMeta": {
-        "bufferutil": {
-          "optional": true
-        },
-        "utf-8-validate": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@graphql-codegen/cli/node_modules/@graphql-tools/url-loader/node_modules/ws": {
-      "version": "8.5.0",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz",
-      "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==",
-      "dev": true,
-      "engines": {
-        "node": ">=10.0.0"
-      },
-      "peerDependencies": {
-        "bufferutil": "^4.0.1",
-        "utf-8-validate": "^5.0.2"
-      },
-      "peerDependenciesMeta": {
-        "bufferutil": {
-          "optional": true
-        },
-        "utf-8-validate": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@graphql-codegen/cli/node_modules/@graphql-tools/wrap": {
-      "version": "8.3.3",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-8.3.3.tgz",
-      "integrity": "sha512-TpXN1S4Cv+oMA1Zsg9Nu4N9yrFxLuJkX+CTtSRrrdfETGHIxqfyDkm5slPDCckxP+RILA00g8ny2jzsYyNvX1w==",
-      "dev": true,
-      "dependencies": {
-        "@graphql-tools/delegate": "^8.4.2",
-        "@graphql-tools/schema": "^8.3.1",
-        "@graphql-tools/utils": "^8.5.3",
-        "tslib": "~2.3.0",
-        "value-or-promise": "1.0.11"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
-      }
-    },
-    "node_modules/@graphql-codegen/cli/node_modules/@types/websocket": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz",
-      "integrity": "sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==",
-      "dev": true,
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
     "node_modules/@graphql-codegen/cli/node_modules/cliui": {
       "version": "7.0.4",
       "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
@@ -2703,24 +2472,6 @@
         "node": ">=10"
       }
     },
-    "node_modules/@graphql-codegen/cli/node_modules/eventemitter3": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
-      "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==",
-      "dev": true
-    },
-    "node_modules/@graphql-codegen/cli/node_modules/extract-files": {
-      "version": "11.0.0",
-      "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-11.0.0.tgz",
-      "integrity": "sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==",
-      "dev": true,
-      "engines": {
-        "node": "^12.20 || >= 14.13"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/jaydenseric"
-      }
-    },
     "node_modules/@graphql-codegen/cli/node_modules/globby": {
       "version": "11.1.0",
       "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
@@ -2741,43 +2492,6 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/@graphql-codegen/cli/node_modules/graphql-config": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-4.1.0.tgz",
-      "integrity": "sha512-Myqay6pmdcmX3KqoH+bMbeKZ1cTODpHS2CxF1ZzNnfTE+YUpGTcp01bOw6LpzamRb0T/WTYtGFbZeXGo9Hab2Q==",
-      "dev": true,
-      "dependencies": {
-        "@endemolshinegroup/cosmiconfig-typescript-loader": "3.0.2",
-        "@graphql-tools/graphql-file-loader": "^7.3.2",
-        "@graphql-tools/json-file-loader": "^7.3.2",
-        "@graphql-tools/load": "^7.4.1",
-        "@graphql-tools/merge": "^8.2.1",
-        "@graphql-tools/url-loader": "^7.4.2",
-        "@graphql-tools/utils": "^8.5.1",
-        "cosmiconfig": "7.0.1",
-        "cosmiconfig-toml-loader": "1.0.0",
-        "minimatch": "3.0.4",
-        "string-env-interpolation": "1.0.1"
-      },
-      "engines": {
-        "node": ">= 10.0.0"
-      },
-      "peerDependencies": {
-        "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
-      }
-    },
-    "node_modules/@graphql-codegen/cli/node_modules/graphql-config/node_modules/minimatch": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-      "dev": true,
-      "dependencies": {
-        "brace-expansion": "^1.1.7"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
     "node_modules/@graphql-codegen/cli/node_modules/inquirer": {
       "version": "8.2.0",
       "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz",
@@ -2815,21 +2529,6 @@
         "node": ">=10"
       }
     },
-    "node_modules/@graphql-codegen/cli/node_modules/p-limit": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
-      "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
-      "dev": true,
-      "dependencies": {
-        "yocto-queue": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/@graphql-codegen/cli/node_modules/rxjs": {
       "version": "7.5.4",
       "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz",
@@ -2896,34 +2595,6 @@
         "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
       }
     },
-    "node_modules/@graphql-codegen/core/node_modules/@graphql-tools/merge": {
-      "version": "8.2.2",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.2.tgz",
-      "integrity": "sha512-2DyqhIOMUMKbCPqo8p6xSdll2OBcBxGdOrxlJJlFQvinsSaYqp/ct3dhAxNtzaIcvSVgXvttQqfD7O2ziFtE7Q==",
-      "dev": true,
-      "dependencies": {
-        "@graphql-tools/utils": "^8.5.1",
-        "tslib": "~2.3.0"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
-      }
-    },
-    "node_modules/@graphql-codegen/core/node_modules/@graphql-tools/schema": {
-      "version": "8.3.1",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.1.tgz",
-      "integrity": "sha512-3R0AJFe715p4GwF067G5i0KCr/XIdvSfDLvTLEiTDQ8V/hwbOHEKHKWlEBHGRQwkG5lwFQlW1aOn7VnlPERnWQ==",
-      "dev": true,
-      "dependencies": {
-        "@graphql-tools/merge": "^8.2.1",
-        "@graphql-tools/utils": "^8.5.1",
-        "tslib": "~2.3.0",
-        "value-or-promise": "1.0.11"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
-      }
-    },
     "node_modules/@graphql-codegen/core/node_modules/tslib": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
@@ -3140,6 +2811,25 @@
       "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
       "dev": true
     },
+    "node_modules/@graphql-eslint/eslint-plugin": {
+      "version": "3.8.0",
+      "resolved": "https://registry.npmjs.org/@graphql-eslint/eslint-plugin/-/eslint-plugin-3.8.0.tgz",
+      "integrity": "sha512-ZEoH+bkNkx76tMP6fTaXQU3T3ChQH85bghZOou+4D0ID7RpSj9069bhFY+rc49TCp3zZHBuW/FvG1ZDKQUx8yw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/code-frame": "7.16.7",
+        "@graphql-tools/code-file-loader": "7.2.3",
+        "@graphql-tools/graphql-tag-pluck": "7.1.5",
+        "@graphql-tools/utils": "8.6.1",
+        "chalk": "4.1.2",
+        "graphql-config": "4.1.0",
+        "graphql-depth-limit": "1.1.0",
+        "lodash.lowercase": "4.3.0"
+      },
+      "peerDependencies": {
+        "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
+      }
+    },
     "node_modules/@graphql-tools/apollo-engine-loader": {
       "version": "7.2.2",
       "resolved": "https://registry.npmjs.org/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-7.2.2.tgz",
@@ -3224,6 +2914,30 @@
       "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
       "dev": true
     },
+    "node_modules/@graphql-tools/delegate": {
+      "version": "8.5.0",
+      "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-8.5.0.tgz",
+      "integrity": "sha512-P2LLahWpv8eFrqXQi9v/NDLxLBKAugd3rmB8lxeTnCqma19ZM/VaSpvGAgGyjjHKQe097mAeBEkM/7uYbG/NFg==",
+      "dev": true,
+      "dependencies": {
+        "@graphql-tools/batch-execute": "^8.3.1",
+        "@graphql-tools/schema": "^8.3.1",
+        "@graphql-tools/utils": "^8.5.4",
+        "dataloader": "2.0.0",
+        "graphql-executor": "0.0.18",
+        "tslib": "~2.3.0",
+        "value-or-promise": "1.0.11"
+      },
+      "peerDependencies": {
+        "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
+      }
+    },
+    "node_modules/@graphql-tools/delegate/node_modules/tslib": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+      "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
+      "dev": true
+    },
     "node_modules/@graphql-tools/git-loader": {
       "version": "7.1.2",
       "resolved": "https://registry.npmjs.org/@graphql-tools/git-loader/-/git-loader-7.1.2.tgz",
@@ -3281,6 +2995,28 @@
       "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
       "dev": true
     },
+    "node_modules/@graphql-tools/graphql-file-loader": {
+      "version": "7.3.3",
+      "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-file-loader/-/graphql-file-loader-7.3.3.tgz",
+      "integrity": "sha512-6kUJZiNpYKVhum9E5wfl5PyLLupEDYdH7c8l6oMrk6c7EPEVs6iSUyB7yQoWrtJccJLULBW2CRQ5IHp5JYK0mA==",
+      "dev": true,
+      "dependencies": {
+        "@graphql-tools/import": "^6.5.7",
+        "@graphql-tools/utils": "^8.5.1",
+        "globby": "^11.0.3",
+        "tslib": "~2.3.0",
+        "unixify": "^1.0.0"
+      },
+      "peerDependencies": {
+        "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
+      }
+    },
+    "node_modules/@graphql-tools/graphql-file-loader/node_modules/tslib": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+      "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
+      "dev": true
+    },
     "node_modules/@graphql-tools/graphql-tag-pluck": {
       "version": "7.1.5",
       "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-7.1.5.tgz",
@@ -3323,6 +3059,82 @@
       "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
       "dev": true
     },
+    "node_modules/@graphql-tools/json-file-loader": {
+      "version": "7.3.3",
+      "resolved": "https://registry.npmjs.org/@graphql-tools/json-file-loader/-/json-file-loader-7.3.3.tgz",
+      "integrity": "sha512-CN2Qk9rt+Gepa3rb3X/mpxYA5MIYLwZBPj2Njw6lbZ6AaxG+O1ArDCL5ACoiWiBimn1FCOM778uhRM9znd0b3Q==",
+      "dev": true,
+      "dependencies": {
+        "@graphql-tools/utils": "^8.5.1",
+        "globby": "^11.0.3",
+        "tslib": "~2.3.0",
+        "unixify": "^1.0.0"
+      },
+      "peerDependencies": {
+        "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
+      }
+    },
+    "node_modules/@graphql-tools/json-file-loader/node_modules/tslib": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+      "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
+      "dev": true
+    },
+    "node_modules/@graphql-tools/load": {
+      "version": "7.5.1",
+      "resolved": "https://registry.npmjs.org/@graphql-tools/load/-/load-7.5.1.tgz",
+      "integrity": "sha512-j9XcLYZPZdl/TzzqA83qveJmwcCxgGizt5L1+C1/Z68brTEmQHLdQCOR3Ma3ewESJt6DU05kSTu2raKaunkjRg==",
+      "dev": true,
+      "dependencies": {
+        "@graphql-tools/schema": "8.3.1",
+        "@graphql-tools/utils": "^8.6.0",
+        "p-limit": "3.1.0",
+        "tslib": "~2.3.0"
+      },
+      "peerDependencies": {
+        "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
+      }
+    },
+    "node_modules/@graphql-tools/load/node_modules/p-limit": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+      "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+      "dev": true,
+      "dependencies": {
+        "yocto-queue": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@graphql-tools/load/node_modules/tslib": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+      "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
+      "dev": true
+    },
+    "node_modules/@graphql-tools/merge": {
+      "version": "8.2.2",
+      "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.2.tgz",
+      "integrity": "sha512-2DyqhIOMUMKbCPqo8p6xSdll2OBcBxGdOrxlJJlFQvinsSaYqp/ct3dhAxNtzaIcvSVgXvttQqfD7O2ziFtE7Q==",
+      "dev": true,
+      "dependencies": {
+        "@graphql-tools/utils": "^8.5.1",
+        "tslib": "~2.3.0"
+      },
+      "peerDependencies": {
+        "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
+      }
+    },
+    "node_modules/@graphql-tools/merge/node_modules/tslib": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+      "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
+      "dev": true
+    },
     "node_modules/@graphql-tools/optimize": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.2.0.tgz",
@@ -3372,37 +3184,82 @@
         "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
       }
     },
-    "node_modules/@graphql-tools/prisma-loader/node_modules/@graphql-tools/delegate": {
-      "version": "8.4.3",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-8.4.3.tgz",
-      "integrity": "sha512-hKTJdJXJnKL0+2vpU+Kt7OHQTIXZ9mBmNBwHsYiG5WNArz/vNI7910r6TC2XMf/e7zhyyK+mXxMDBmDQkkJagA==",
+    "node_modules/@graphql-tools/prisma-loader/node_modules/argparse": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+      "dev": true
+    },
+    "node_modules/@graphql-tools/prisma-loader/node_modules/js-yaml": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+      "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
       "dev": true,
       "dependencies": {
-        "@graphql-tools/batch-execute": "^8.3.1",
-        "@graphql-tools/schema": "^8.3.1",
-        "@graphql-tools/utils": "^8.5.4",
-        "dataloader": "2.0.0",
-        "tslib": "~2.3.0",
-        "value-or-promise": "1.0.11"
+        "argparse": "^2.0.1"
       },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
       }
     },
-    "node_modules/@graphql-tools/prisma-loader/node_modules/@graphql-tools/merge": {
-      "version": "8.2.2",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.2.tgz",
-      "integrity": "sha512-2DyqhIOMUMKbCPqo8p6xSdll2OBcBxGdOrxlJJlFQvinsSaYqp/ct3dhAxNtzaIcvSVgXvttQqfD7O2ziFtE7Q==",
+    "node_modules/@graphql-tools/prisma-loader/node_modules/tslib": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+      "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
+      "dev": true
+    },
+    "node_modules/@graphql-tools/relay-operation-optimizer": {
+      "version": "6.4.1",
+      "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.4.1.tgz",
+      "integrity": "sha512-2b9D5L+31sIBnvmcmIW5tfvNUV+nJFtbHpUyarTRDmFT6EZ2cXo4WZMm9XJcHQD/Z5qvMXfPHxzQ3/JUs4xI+w==",
       "dev": true,
       "dependencies": {
         "@graphql-tools/utils": "^8.5.1",
+        "relay-compiler": "12.0.0",
         "tslib": "~2.3.0"
       },
       "peerDependencies": {
         "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
       }
     },
-    "node_modules/@graphql-tools/prisma-loader/node_modules/@graphql-tools/schema": {
+    "node_modules/@graphql-tools/relay-operation-optimizer/node_modules/relay-compiler": {
+      "version": "12.0.0",
+      "resolved": "https://registry.npmjs.org/relay-compiler/-/relay-compiler-12.0.0.tgz",
+      "integrity": "sha512-SWqeSQZ+AMU/Cr7iZsHi1e78Z7oh00I5SvR092iCJq79aupqJ6Ds+I1Pz/Vzo5uY5PY0jvC4rBJXzlIN5g9boQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/core": "^7.14.0",
+        "@babel/generator": "^7.14.0",
+        "@babel/parser": "^7.14.0",
+        "@babel/runtime": "^7.0.0",
+        "@babel/traverse": "^7.14.0",
+        "@babel/types": "^7.0.0",
+        "babel-preset-fbjs": "^3.4.0",
+        "chalk": "^4.0.0",
+        "fb-watchman": "^2.0.0",
+        "fbjs": "^3.0.0",
+        "glob": "^7.1.1",
+        "immutable": "~3.7.6",
+        "invariant": "^2.2.4",
+        "nullthrows": "^1.1.1",
+        "relay-runtime": "12.0.0",
+        "signedsource": "^1.0.0",
+        "yargs": "^15.3.1"
+      },
+      "bin": {
+        "relay-compiler": "bin/relay-compiler"
+      },
+      "peerDependencies": {
+        "graphql": "^15.0.0"
+      }
+    },
+    "node_modules/@graphql-tools/relay-operation-optimizer/node_modules/tslib": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+      "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
+      "dev": true
+    },
+    "node_modules/@graphql-tools/schema": {
       "version": "8.3.1",
       "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.1.tgz",
       "integrity": "sha512-3R0AJFe715p4GwF067G5i0KCr/XIdvSfDLvTLEiTDQ8V/hwbOHEKHKWlEBHGRQwkG5lwFQlW1aOn7VnlPERnWQ==",
@@ -3417,7 +3274,13 @@
         "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
       }
     },
-    "node_modules/@graphql-tools/prisma-loader/node_modules/@graphql-tools/url-loader": {
+    "node_modules/@graphql-tools/schema/node_modules/tslib": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+      "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
+      "dev": true
+    },
+    "node_modules/@graphql-tools/url-loader": {
       "version": "7.7.1",
       "resolved": "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-7.7.1.tgz",
       "integrity": "sha512-K/5amdeHtKYI976HVd/AXdSNvLL7vx5QVjMlwN0OHeYyxSgC+UOH+KkS7cshYgL13SekGu0Mxbg9ABfgQ34ECA==",
@@ -3447,16 +3310,34 @@
         "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
       }
     },
-    "node_modules/@graphql-tools/prisma-loader/node_modules/@graphql-tools/url-loader/node_modules/@n1ru4l/graphql-live-query": {
-      "version": "0.9.0",
-      "resolved": "https://registry.npmjs.org/@n1ru4l/graphql-live-query/-/graphql-live-query-0.9.0.tgz",
-      "integrity": "sha512-BTpWy1e+FxN82RnLz4x1+JcEewVdfmUhV1C6/XYD5AjS7PQp9QFF7K8bCD6gzPTr2l+prvqOyVueQhFJxB1vfg==",
+    "node_modules/@graphql-tools/url-loader/node_modules/@types/websocket": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz",
+      "integrity": "sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==",
       "dev": true,
-      "peerDependencies": {
-        "graphql": "^15.4.0 || ^16.0.0"
+      "dependencies": {
+        "@types/node": "*"
       }
     },
-    "node_modules/@graphql-tools/prisma-loader/node_modules/@graphql-tools/url-loader/node_modules/subscriptions-transport-ws": {
+    "node_modules/@graphql-tools/url-loader/node_modules/eventemitter3": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
+      "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==",
+      "dev": true
+    },
+    "node_modules/@graphql-tools/url-loader/node_modules/extract-files": {
+      "version": "11.0.0",
+      "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-11.0.0.tgz",
+      "integrity": "sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==",
+      "dev": true,
+      "engines": {
+        "node": "^12.20 || >= 14.13"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jaydenseric"
+      }
+    },
+    "node_modules/@graphql-tools/url-loader/node_modules/subscriptions-transport-ws": {
       "version": "0.11.0",
       "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.11.0.tgz",
       "integrity": "sha512-8D4C6DIH5tGiAIpp5I0wD/xRlNiZAPGHygzCe7VzyzUoxHtawzjNAY9SUTXU05/EY2NMY9/9GF0ycizkXr1CWQ==",
@@ -3472,7 +3353,7 @@
         "graphql": "^15.7.2 || ^16.0.0"
       }
     },
-    "node_modules/@graphql-tools/prisma-loader/node_modules/@graphql-tools/url-loader/node_modules/subscriptions-transport-ws/node_modules/ws": {
+    "node_modules/@graphql-tools/url-loader/node_modules/subscriptions-transport-ws/node_modules/ws": {
       "version": "7.5.7",
       "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz",
       "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==",
@@ -3493,7 +3374,13 @@
         }
       }
     },
-    "node_modules/@graphql-tools/prisma-loader/node_modules/@graphql-tools/url-loader/node_modules/ws": {
+    "node_modules/@graphql-tools/url-loader/node_modules/tslib": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+      "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
+      "dev": true
+    },
+    "node_modules/@graphql-tools/url-loader/node_modules/ws": {
       "version": "8.5.0",
       "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz",
       "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==",
@@ -3514,137 +3401,41 @@
         }
       }
     },
-    "node_modules/@graphql-tools/prisma-loader/node_modules/@graphql-tools/wrap": {
-      "version": "8.3.3",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-8.3.3.tgz",
-      "integrity": "sha512-TpXN1S4Cv+oMA1Zsg9Nu4N9yrFxLuJkX+CTtSRrrdfETGHIxqfyDkm5slPDCckxP+RILA00g8ny2jzsYyNvX1w==",
-      "dev": true,
-      "dependencies": {
-        "@graphql-tools/delegate": "^8.4.2",
-        "@graphql-tools/schema": "^8.3.1",
-        "@graphql-tools/utils": "^8.5.3",
-        "tslib": "~2.3.0",
-        "value-or-promise": "1.0.11"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
-      }
-    },
-    "node_modules/@graphql-tools/prisma-loader/node_modules/@types/websocket": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz",
-      "integrity": "sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==",
-      "dev": true,
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@graphql-tools/prisma-loader/node_modules/argparse": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
-      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
-      "dev": true
-    },
-    "node_modules/@graphql-tools/prisma-loader/node_modules/eventemitter3": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
-      "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==",
-      "dev": true
-    },
-    "node_modules/@graphql-tools/prisma-loader/node_modules/extract-files": {
-      "version": "11.0.0",
-      "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-11.0.0.tgz",
-      "integrity": "sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==",
-      "dev": true,
-      "engines": {
-        "node": "^12.20 || >= 14.13"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/jaydenseric"
-      }
-    },
-    "node_modules/@graphql-tools/prisma-loader/node_modules/js-yaml": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
-      "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
-      "dev": true,
-      "dependencies": {
-        "argparse": "^2.0.1"
-      },
-      "bin": {
-        "js-yaml": "bin/js-yaml.js"
-      }
-    },
-    "node_modules/@graphql-tools/prisma-loader/node_modules/tslib": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
-      "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
-      "dev": true
-    },
-    "node_modules/@graphql-tools/relay-operation-optimizer": {
-      "version": "6.4.1",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.4.1.tgz",
-      "integrity": "sha512-2b9D5L+31sIBnvmcmIW5tfvNUV+nJFtbHpUyarTRDmFT6EZ2cXo4WZMm9XJcHQD/Z5qvMXfPHxzQ3/JUs4xI+w==",
+    "node_modules/@graphql-tools/utils": {
+      "version": "8.6.1",
+      "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.1.tgz",
+      "integrity": "sha512-uxcfHCocp4ENoIiovPxUWZEHOnbXqj3ekWc0rm7fUhW93a1xheARNHcNKhwMTR+UKXVJbTFQdGI1Rl5XdyvDBg==",
       "dev": true,
       "dependencies": {
-        "@graphql-tools/utils": "^8.5.1",
-        "relay-compiler": "12.0.0",
         "tslib": "~2.3.0"
       },
       "peerDependencies": {
         "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
       }
     },
-    "node_modules/@graphql-tools/relay-operation-optimizer/node_modules/relay-compiler": {
-      "version": "12.0.0",
-      "resolved": "https://registry.npmjs.org/relay-compiler/-/relay-compiler-12.0.0.tgz",
-      "integrity": "sha512-SWqeSQZ+AMU/Cr7iZsHi1e78Z7oh00I5SvR092iCJq79aupqJ6Ds+I1Pz/Vzo5uY5PY0jvC4rBJXzlIN5g9boQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/core": "^7.14.0",
-        "@babel/generator": "^7.14.0",
-        "@babel/parser": "^7.14.0",
-        "@babel/runtime": "^7.0.0",
-        "@babel/traverse": "^7.14.0",
-        "@babel/types": "^7.0.0",
-        "babel-preset-fbjs": "^3.4.0",
-        "chalk": "^4.0.0",
-        "fb-watchman": "^2.0.0",
-        "fbjs": "^3.0.0",
-        "glob": "^7.1.1",
-        "immutable": "~3.7.6",
-        "invariant": "^2.2.4",
-        "nullthrows": "^1.1.1",
-        "relay-runtime": "12.0.0",
-        "signedsource": "^1.0.0",
-        "yargs": "^15.3.1"
-      },
-      "bin": {
-        "relay-compiler": "bin/relay-compiler"
-      },
-      "peerDependencies": {
-        "graphql": "^15.0.0"
-      }
-    },
-    "node_modules/@graphql-tools/relay-operation-optimizer/node_modules/tslib": {
+    "node_modules/@graphql-tools/utils/node_modules/tslib": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
       "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
       "dev": true
     },
-    "node_modules/@graphql-tools/utils": {
-      "version": "8.6.1",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.1.tgz",
-      "integrity": "sha512-uxcfHCocp4ENoIiovPxUWZEHOnbXqj3ekWc0rm7fUhW93a1xheARNHcNKhwMTR+UKXVJbTFQdGI1Rl5XdyvDBg==",
+    "node_modules/@graphql-tools/wrap": {
+      "version": "8.4.0",
+      "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-8.4.0.tgz",
+      "integrity": "sha512-fPB3+UnxLIPWDfMvAfBQnGmm8rrejeQjmCy7h9avWHBbkEELcvtrSWnKAvoKowe+WR9PVDM15XQ/PQvcddV0kQ==",
       "dev": true,
       "dependencies": {
-        "tslib": "~2.3.0"
+        "@graphql-tools/delegate": "^8.5.0",
+        "@graphql-tools/schema": "^8.3.1",
+        "@graphql-tools/utils": "^8.5.3",
+        "tslib": "~2.3.0",
+        "value-or-promise": "1.0.11"
       },
       "peerDependencies": {
         "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
       }
     },
-    "node_modules/@graphql-tools/utils/node_modules/tslib": {
+    "node_modules/@graphql-tools/wrap/node_modules/tslib": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
       "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
@@ -4012,12 +3803,6 @@
         "unist-util-is": "^3.0.0"
       }
     },
-    "node_modules/@microsoft/fetch-event-source": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz",
-      "integrity": "sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA==",
-      "dev": true
-    },
     "node_modules/@mui/base": {
       "version": "5.0.0-alpha.69",
       "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.69.tgz",
@@ -4377,6 +4162,15 @@
       "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
       "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
     },
+    "node_modules/@n1ru4l/graphql-live-query": {
+      "version": "0.9.0",
+      "resolved": "https://registry.npmjs.org/@n1ru4l/graphql-live-query/-/graphql-live-query-0.9.0.tgz",
+      "integrity": "sha512-BTpWy1e+FxN82RnLz4x1+JcEewVdfmUhV1C6/XYD5AjS7PQp9QFF7K8bCD6gzPTr2l+prvqOyVueQhFJxB1vfg==",
+      "dev": true,
+      "peerDependencies": {
+        "graphql": "^15.4.0 || ^16.0.0"
+      }
+    },
     "node_modules/@nodelib/fs.scandir": {
       "version": "2.1.3",
       "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz",
@@ -5194,15 +4988,6 @@
       "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz",
       "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ=="
     },
-    "node_modules/@types/websocket": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.2.tgz",
-      "integrity": "sha512-B5m9aq7cbbD/5/jThEr33nUY8WEfVi6A2YKCTOvw5Ldy7mtsOkqRvGjnzy6g7iMMDsgu7xREuCzqATLDLQVKcQ==",
-      "dev": true,
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
     "node_modules/@types/ws": {
       "version": "8.2.2",
       "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz",
@@ -6045,6 +5830,15 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/arrify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+      "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/asap": {
       "version": "2.0.6",
       "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
@@ -6067,7 +5861,8 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
       "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
-      "devOptional": true
+      "optional": true,
+      "peer": true
     },
     "node_modules/asynckit": {
       "version": "0.4.0",
@@ -9050,399 +8845,6 @@
         "eslint": "^8.1.0"
       }
     },
-    "node_modules/eslint-plugin-graphql": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-graphql/-/eslint-plugin-graphql-4.0.0.tgz",
-      "integrity": "sha512-d5tQm24YkVvCEk29ZR5ScsgXqAGCjKlMS8lx3mS7FS/EKsWbkvXQImpvic03EpMIvNTBW5e+2xnHzXB/VHNZJw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/runtime": "^7.10.0",
-        "graphql-config": "^3.0.2",
-        "lodash.flatten": "^4.4.0",
-        "lodash.without": "^4.4.0"
-      },
-      "engines": {
-        "node": ">=10.0"
-      },
-      "peerDependencies": {
-        "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0"
-      }
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/cosmiconfig": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz",
-      "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==",
-      "dev": true,
-      "dependencies": {
-        "@types/parse-json": "^4.0.0",
-        "import-fresh": "^3.2.1",
-        "parse-json": "^5.0.0",
-        "path-type": "^4.0.0",
-        "yaml": "^1.10.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/cross-fetch": {
-      "version": "3.1.4",
-      "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz",
-      "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==",
-      "dev": true,
-      "dependencies": {
-        "node-fetch": "2.6.1"
-      }
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/form-data": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
-      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
-      "dev": true,
-      "dependencies": {
-        "asynckit": "^0.4.0",
-        "combined-stream": "^1.0.8",
-        "mime-types": "^2.1.12"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/graphql-config": {
-      "version": "3.4.1",
-      "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-3.4.1.tgz",
-      "integrity": "sha512-g9WyK4JZl1Ko++FSyE5Ir2g66njfxGzrDDhBOwnkoWf/t3TnnZG6BBkWP+pkqVJ5pqMJGPKHNrbew8jRxStjhw==",
-      "dev": true,
-      "dependencies": {
-        "@endemolshinegroup/cosmiconfig-typescript-loader": "3.0.2",
-        "@graphql-tools/graphql-file-loader": "^6.0.0",
-        "@graphql-tools/json-file-loader": "^6.0.0",
-        "@graphql-tools/load": "^6.0.0",
-        "@graphql-tools/merge": "6.0.0 - 6.2.14",
-        "@graphql-tools/url-loader": "^6.0.0",
-        "@graphql-tools/utils": "^7.0.0",
-        "cosmiconfig": "7.0.0",
-        "cosmiconfig-toml-loader": "1.0.0",
-        "minimatch": "3.0.4",
-        "string-env-interpolation": "1.0.1"
-      },
-      "engines": {
-        "node": ">= 10.0.0"
-      },
-      "peerDependencies": {
-        "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0"
-      }
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/graphql-config/node_modules/@graphql-tools/graphql-file-loader": {
-      "version": "6.2.7",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-file-loader/-/graphql-file-loader-6.2.7.tgz",
-      "integrity": "sha512-5k2SNz0W87tDcymhEMZMkd6/vs6QawDyjQXWtqkuLTBF3vxjxPD1I4dwHoxgWPIjjANhXybvulD7E+St/7s9TQ==",
-      "dev": true,
-      "dependencies": {
-        "@graphql-tools/import": "^6.2.6",
-        "@graphql-tools/utils": "^7.0.0",
-        "tslib": "~2.1.0"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0"
-      }
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/graphql-config/node_modules/@graphql-tools/json-file-loader": {
-      "version": "6.2.6",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/json-file-loader/-/json-file-loader-6.2.6.tgz",
-      "integrity": "sha512-CnfwBSY5926zyb6fkDBHnlTblHnHI4hoBALFYXnrg0Ev4yWU8B04DZl/pBRUc459VNgO2x8/mxGIZj2hPJG1EA==",
-      "dev": true,
-      "dependencies": {
-        "@graphql-tools/utils": "^7.0.0",
-        "tslib": "~2.0.1"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0"
-      }
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/graphql-config/node_modules/@graphql-tools/json-file-loader/node_modules/tslib": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz",
-      "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==",
-      "dev": true
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/graphql-config/node_modules/@graphql-tools/load": {
-      "version": "6.2.8",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/load/-/load-6.2.8.tgz",
-      "integrity": "sha512-JpbyXOXd8fJXdBh2ta0Q4w8ia6uK5FHzrTNmcvYBvflFuWly2LDTk2abbSl81zKkzswQMEd2UIYghXELRg8eTA==",
-      "dev": true,
-      "dependencies": {
-        "@graphql-tools/merge": "^6.2.12",
-        "@graphql-tools/utils": "^7.5.0",
-        "globby": "11.0.3",
-        "import-from": "3.0.0",
-        "is-glob": "4.0.1",
-        "p-limit": "3.1.0",
-        "tslib": "~2.2.0",
-        "unixify": "1.0.0",
-        "valid-url": "1.0.9"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0"
-      }
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/graphql-config/node_modules/@graphql-tools/load/node_modules/tslib": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
-      "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==",
-      "dev": true
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/graphql-config/node_modules/@graphql-tools/merge": {
-      "version": "6.2.14",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-6.2.14.tgz",
-      "integrity": "sha512-RWT4Td0ROJai2eR66NHejgf8UwnXJqZxXgDWDI+7hua5vNA2OW8Mf9K1Wav1ZkjWnuRp4ztNtkZGie5ISw55ow==",
-      "dev": true,
-      "dependencies": {
-        "@graphql-tools/schema": "^7.0.0",
-        "@graphql-tools/utils": "^7.7.0",
-        "tslib": "~2.2.0"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0"
-      }
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/graphql-config/node_modules/@graphql-tools/merge/node_modules/@graphql-tools/schema": {
-      "version": "7.1.5",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-7.1.5.tgz",
-      "integrity": "sha512-uyn3HSNSckf4mvQSq0Q07CPaVZMNFCYEVxroApOaw802m9DcZPgf9XVPy/gda5GWj9AhbijfRYVTZQgHnJ4CXA==",
-      "dev": true,
-      "dependencies": {
-        "@graphql-tools/utils": "^7.1.2",
-        "tslib": "~2.2.0",
-        "value-or-promise": "1.0.6"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0"
-      }
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/graphql-config/node_modules/@graphql-tools/merge/node_modules/tslib": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
-      "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==",
-      "dev": true
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/graphql-config/node_modules/@graphql-tools/url-loader": {
-      "version": "6.10.1",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-6.10.1.tgz",
-      "integrity": "sha512-DSDrbhQIv7fheQ60pfDpGD256ixUQIR6Hhf9Z5bRjVkXOCvO5XrkwoWLiU7iHL81GB1r0Ba31bf+sl+D4nyyfw==",
-      "dev": true,
-      "dependencies": {
-        "@graphql-tools/delegate": "^7.0.1",
-        "@graphql-tools/utils": "^7.9.0",
-        "@graphql-tools/wrap": "^7.0.4",
-        "@microsoft/fetch-event-source": "2.0.1",
-        "@types/websocket": "1.0.2",
-        "abort-controller": "3.0.0",
-        "cross-fetch": "3.1.4",
-        "extract-files": "9.0.0",
-        "form-data": "4.0.0",
-        "graphql-ws": "^4.4.1",
-        "is-promise": "4.0.0",
-        "isomorphic-ws": "4.0.1",
-        "lodash": "4.17.21",
-        "meros": "1.1.4",
-        "subscriptions-transport-ws": "^0.9.18",
-        "sync-fetch": "0.3.0",
-        "tslib": "~2.2.0",
-        "valid-url": "1.0.9",
-        "ws": "7.4.5"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0"
-      }
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/graphql-config/node_modules/@graphql-tools/url-loader/node_modules/@graphql-tools/delegate": {
-      "version": "7.1.5",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-7.1.5.tgz",
-      "integrity": "sha512-bQu+hDd37e+FZ0CQGEEczmRSfQRnnXeUxI/0miDV+NV/zCbEdIJj5tYFNrKT03W6wgdqx8U06d8L23LxvGri/g==",
-      "dev": true,
-      "dependencies": {
-        "@ardatan/aggregate-error": "0.0.6",
-        "@graphql-tools/batch-execute": "^7.1.2",
-        "@graphql-tools/schema": "^7.1.5",
-        "@graphql-tools/utils": "^7.7.1",
-        "dataloader": "2.0.0",
-        "tslib": "~2.2.0",
-        "value-or-promise": "1.0.6"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0"
-      }
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/graphql-config/node_modules/@graphql-tools/url-loader/node_modules/@graphql-tools/delegate/node_modules/@graphql-tools/batch-execute": {
-      "version": "7.1.2",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-7.1.2.tgz",
-      "integrity": "sha512-IuR2SB2MnC2ztA/XeTMTfWcA0Wy7ZH5u+nDkDNLAdX+AaSyDnsQS35sCmHqG0VOGTl7rzoyBWLCKGwSJplgtwg==",
-      "dev": true,
-      "dependencies": {
-        "@graphql-tools/utils": "^7.7.0",
-        "dataloader": "2.0.0",
-        "tslib": "~2.2.0",
-        "value-or-promise": "1.0.6"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0"
-      }
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/graphql-config/node_modules/@graphql-tools/url-loader/node_modules/@graphql-tools/delegate/node_modules/@graphql-tools/schema": {
-      "version": "7.1.5",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-7.1.5.tgz",
-      "integrity": "sha512-uyn3HSNSckf4mvQSq0Q07CPaVZMNFCYEVxroApOaw802m9DcZPgf9XVPy/gda5GWj9AhbijfRYVTZQgHnJ4CXA==",
-      "dev": true,
-      "dependencies": {
-        "@graphql-tools/utils": "^7.1.2",
-        "tslib": "~2.2.0",
-        "value-or-promise": "1.0.6"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0"
-      }
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/graphql-config/node_modules/@graphql-tools/url-loader/node_modules/@graphql-tools/wrap": {
-      "version": "7.0.8",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-7.0.8.tgz",
-      "integrity": "sha512-1NDUymworsOlb53Qfh7fonDi2STvqCtbeE68ntKY9K/Ju/be2ZNxrFSbrBHwnxWcN9PjISNnLcAyJ1L5tCUyhg==",
-      "dev": true,
-      "dependencies": {
-        "@graphql-tools/delegate": "^7.1.5",
-        "@graphql-tools/schema": "^7.1.5",
-        "@graphql-tools/utils": "^7.8.1",
-        "tslib": "~2.2.0",
-        "value-or-promise": "1.0.6"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0"
-      }
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/graphql-config/node_modules/@graphql-tools/url-loader/node_modules/@graphql-tools/wrap/node_modules/@graphql-tools/schema": {
-      "version": "7.1.5",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-7.1.5.tgz",
-      "integrity": "sha512-uyn3HSNSckf4mvQSq0Q07CPaVZMNFCYEVxroApOaw802m9DcZPgf9XVPy/gda5GWj9AhbijfRYVTZQgHnJ4CXA==",
-      "dev": true,
-      "dependencies": {
-        "@graphql-tools/utils": "^7.1.2",
-        "tslib": "~2.2.0",
-        "value-or-promise": "1.0.6"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0"
-      }
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/graphql-config/node_modules/@graphql-tools/url-loader/node_modules/graphql-ws": {
-      "version": "4.9.0",
-      "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-4.9.0.tgz",
-      "integrity": "sha512-sHkK9+lUm20/BGawNEWNtVAeJzhZeBg21VmvmLoT5NdGVeZWv5PdIhkcayQIAgjSyyQ17WMKmbDijIPG2On+Ag==",
-      "dev": true,
-      "engines": {
-        "node": ">=10"
-      },
-      "peerDependencies": {
-        "graphql": ">=0.11 <=15"
-      }
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/graphql-config/node_modules/@graphql-tools/url-loader/node_modules/tslib": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
-      "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==",
-      "dev": true
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/graphql-config/node_modules/@graphql-tools/utils": {
-      "version": "7.10.0",
-      "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.10.0.tgz",
-      "integrity": "sha512-d334r6bo9mxdSqZW6zWboEnnOOFRrAPVQJ7LkU8/6grglrbcu6WhwCLzHb90E94JI3TD3ricC3YGbUqIi9Xg0w==",
-      "dev": true,
-      "dependencies": {
-        "@ardatan/aggregate-error": "0.0.6",
-        "camel-case": "4.1.2",
-        "tslib": "~2.2.0"
-      },
-      "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0"
-      }
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/graphql-config/node_modules/@graphql-tools/utils/node_modules/tslib": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
-      "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==",
-      "dev": true
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/node-fetch": {
-      "version": "2.6.1",
-      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
-      "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
-      "dev": true,
-      "engines": {
-        "node": "4.x || >=6.0.0"
-      }
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/p-limit": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
-      "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
-      "dev": true,
-      "dependencies": {
-        "yocto-queue": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/sync-fetch": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/sync-fetch/-/sync-fetch-0.3.0.tgz",
-      "integrity": "sha512-dJp4qg+x4JwSEW1HibAuMi0IIrBI3wuQr2GimmqB7OXR50wmwzfdusG+p39R9w3R6aFtZ2mzvxvWKQ3Bd/vx3g==",
-      "dev": true,
-      "dependencies": {
-        "buffer": "^5.7.0",
-        "node-fetch": "^2.6.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/tslib": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
-      "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==",
-      "dev": true
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/value-or-promise": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.6.tgz",
-      "integrity": "sha512-9r0wQsWD8z/BxPOvnwbPf05ZvFngXyouE9EKB+5GbYix+BYnAwrIChCUyFIinfbf2FL/U71z+CPpbnmTdxrwBg==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/eslint-plugin-graphql/node_modules/ws": {
-      "version": "7.4.5",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz",
-      "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==",
-      "dev": true,
-      "engines": {
-        "node": ">=8.3.0"
-      },
-      "peerDependencies": {
-        "bufferutil": "^4.0.1",
-        "utf-8-validate": "^5.0.2"
-      },
-      "peerDependenciesMeta": {
-        "bufferutil": {
-          "optional": true
-        },
-        "utf-8-validate": {
-          "optional": true
-        }
-      }
-    },
     "node_modules/eslint-plugin-import": {
       "version": "2.25.4",
       "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz",

webui/package.json 🔗

@@ -40,8 +40,8 @@
     "@graphql-codegen/typescript": "^2.4.3",
     "@graphql-codegen/typescript-operations": "^2.3.0",
     "@graphql-codegen/typescript-react-apollo": "^3.2.6",
+    "@graphql-eslint/eslint-plugin": "^3.8.0",
     "eslint-config-prettier": "^8.3.0",
-    "eslint-plugin-graphql": "^4.0.0",
     "eslint-plugin-prettier": "^4.0.0",
     "prettier": "^2.5.1"
   },