فهرست منبع

refactor: add graphcache codegen and update types

Andrew Bastin 4 سال پیش
والد
کامیت
a12315d81a

+ 1 - 0
packages/hoppscotch-app/gql-codegen.yml

@@ -9,6 +9,7 @@ generates:
       - typescript
       - typescript-operations
       - typed-document-node
+      - typescript-urql-graphcache
 
   helpers/backend/backend-schema.json:
     plugins:

+ 14 - 14
packages/hoppscotch-app/helpers/backend/GQLClient.ts

@@ -102,13 +102,13 @@ const client = createClient({
  */
 export type GQLError<T extends string> =
   | {
-      type: "network_error"
-      error: Error
-    }
+    type: "network_error"
+    error: Error
+  }
   | {
-      type: "gql_error"
-      error: T
-    }
+    type: "gql_error"
+    error: T
+  }
 
 const DEFAULT_QUERY_OPTIONS = {
   noPolling: false,
@@ -124,10 +124,10 @@ type UseQueryLoading = {
 type UseQueryLoaded<
   QueryFailType extends string = "",
   QueryReturnType = any
-> = {
-  loading: false
-  data: E.Either<GQLError<QueryFailType>, QueryReturnType>
-}
+  > = {
+    loading: false
+    data: E.Either<GQLError<QueryFailType>, QueryReturnType>
+  }
 
 type UseQueryReturn<QueryFailType extends string = "", QueryReturnType = any> =
   | UseQueryLoading
@@ -218,9 +218,9 @@ export function useGQLQuery<
     data: data!,
   }) as
     | {
-        loading: false
-        data: DataType
-      }
+      loading: false
+      data: DataType
+    }
     | { loading: true }
 }
 
@@ -259,7 +259,7 @@ export const runMutation = <
                   type: "gql_error",
                   error: gqlErr,
                 },
-              // The right case (it was a GraphQL Error)
+              // The right case (it was a network error)
               (networkErr) =>
                 <GQLError<DocErrors>>{
                   type: "network_error",

+ 2 - 3
packages/hoppscotch-app/helpers/backend/caching/optimistic.ts

@@ -1,6 +1,6 @@
-import { OptimisticMutationConfig } from "@urql/exchange-graphcache"
+import { GraphCacheOptimisticUpdaters } from "../graphql"
 
-export const optimisticDefs: OptimisticMutationConfig = {
+export const optimisticDefs: GraphCacheOptimisticUpdaters = {
   deleteTeam: () => true,
   leaveTeam: () => true,
   renameTeam: ({ teamID, newName }) => ({
@@ -9,5 +9,4 @@ export const optimisticDefs: OptimisticMutationConfig = {
     name: newName,
   }),
   removeTeamMember: () => true,
-  // TODO: updateTeamMemberRole
 }

+ 4 - 4
packages/hoppscotch-app/helpers/backend/caching/resolvers.ts

@@ -1,14 +1,14 @@
-import { ResolverConfig } from "@urql/exchange-graphcache"
+import { GraphCacheResolvers } from "../graphql"
 
-export const resolversDef: ResolverConfig = {
+export const resolversDef: GraphCacheResolvers = {
   Query: {
     team: (_parent, { teamID }, _cache, _info) => ({
       __typename: "Team",
-      id: teamID as any,
+      id: teamID,
     }),
     user: (_parent, { uid }, _cache, _info) => ({
       __typename: "User",
-      uid: uid as any,
+      uid: uid,
     }),
   },
 }

+ 20 - 17
packages/hoppscotch-app/helpers/backend/caching/updates.ts

@@ -1,17 +1,18 @@
-import { UpdatesConfig } from "@urql/exchange-graphcache"
-import { MyTeamsDocument } from "../graphql"
+import { GraphCacheUpdaters, MyTeamsDocument } from "../graphql"
 
-export const updatesDef: Partial<UpdatesConfig> = {
+export const updatesDef: GraphCacheUpdaters = {
   Mutation: {
     deleteTeam: (_r, { teamID }, cache, _info) => {
       cache.updateQuery(
         {
           query: MyTeamsDocument,
         },
-        (data: any) => {
-          data.myTeams = (data as any).myTeams.filter(
-            (x: any) => x.id !== teamID
-          )
+        (data) => {
+          if (data) {
+            data.myTeams = data.myTeams.filter(
+              (x) => x.id !== teamID
+            )
+          }
 
           return data
         }
@@ -19,7 +20,7 @@ export const updatesDef: Partial<UpdatesConfig> = {
 
       cache.invalidate({
         __typename: "Team",
-        id: teamID as any,
+        id: teamID
       })
     },
     leaveTeam: (_r, { teamID }, cache, _info) => {
@@ -27,10 +28,12 @@ export const updatesDef: Partial<UpdatesConfig> = {
         {
           query: MyTeamsDocument,
         },
-        (data: any) => {
-          data.myTeams = (data as any).myTeams.filter(
-            (x: any) => x.id !== teamID
-          )
+        (data) => {
+          if (data) {
+            data.myTeams = data.myTeams.filter(
+              (x) => x.id !== teamID
+            )
+          }
 
           return data
         }
@@ -38,7 +41,7 @@ export const updatesDef: Partial<UpdatesConfig> = {
 
       cache.invalidate({
         __typename: "Team",
-        id: teamID as any,
+        id: teamID
       })
     },
     createTeam: (result, _args, cache, _info) => {
@@ -46,8 +49,8 @@ export const updatesDef: Partial<UpdatesConfig> = {
         {
           query: MyTeamsDocument,
         },
-        (data: any) => {
-          data.myTeams.push(result.createTeam)
+        (data) => {
+          if (data) data.myTeams.push(result.createTeam as any)
           return data
         }
       )
@@ -57,7 +60,7 @@ export const updatesDef: Partial<UpdatesConfig> = {
         cache.resolve(
           {
             __typename: "Team",
-            id: teamID as string,
+            id: teamID,
           },
           "members"
         ) as string[]
@@ -68,7 +71,7 @@ export const updatesDef: Partial<UpdatesConfig> = {
         .map(([key]) => key)
 
       cache.link(
-        { __typename: "Team", id: teamID as string },
+        { __typename: "Team", id: teamID },
         "members",
         newMembers
       )

+ 1 - 0
packages/hoppscotch-app/package.json

@@ -92,6 +92,7 @@
     "@graphql-codegen/typed-document-node": "^2.1.4",
     "@graphql-codegen/typescript": "2.2.2",
     "@graphql-codegen/typescript-operations": "^2.1.6",
+    "@graphql-codegen/typescript-urql-graphcache": "^2.1.6",
     "@graphql-codegen/urql-introspection": "^2.1.0",
     "@graphql-typed-document-node/core": "^3.1.0",
     "@nuxt/types": "^2.15.8",

+ 99 - 49
pnpm-lock.yaml

@@ -27,6 +27,7 @@ importers:
       '@graphql-codegen/typed-document-node': ^2.1.4
       '@graphql-codegen/typescript': 2.2.2
       '@graphql-codegen/typescript-operations': ^2.1.6
+      '@graphql-codegen/typescript-urql-graphcache': ^2.1.6
       '@graphql-codegen/urql-introspection': ^2.1.0
       '@graphql-typed-document-node/core': ^3.1.0
       '@hoppscotch/js-sandbox': workspace:^1.0.0
@@ -183,6 +184,7 @@ importers:
       '@graphql-codegen/typed-document-node': [email protected]
       '@graphql-codegen/typescript': [email protected]
       '@graphql-codegen/typescript-operations': [email protected]
+      '@graphql-codegen/typescript-urql-graphcache': 2.1.6_0eb281deb1c9cbb2b68cb93f912d7be2
       '@graphql-codegen/urql-introspection': [email protected]
       '@graphql-typed-document-node/core': [email protected]
       '@nuxt/types': [email protected]
@@ -2370,7 +2372,7 @@ packages:
     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
     dependencies:
-      '@graphql-codegen/plugin-helpers': 2.1.1[email protected]
+      '@graphql-codegen/plugin-helpers': 2.3.0[email protected]
       graphql: 15.7.2
       tslib: 2.3.1
     dev: true
@@ -2382,7 +2384,7 @@ packages:
       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
     dependencies:
       '@graphql-codegen/core': [email protected]
-      '@graphql-codegen/plugin-helpers': 2.1.1[email protected]
+      '@graphql-codegen/plugin-helpers': 2.3.0[email protected]
       '@graphql-tools/apollo-engine-loader': [email protected]
       '@graphql-tools/code-file-loader': [email protected]
       '@graphql-tools/git-loader': [email protected]
@@ -2392,7 +2394,7 @@ packages:
       '@graphql-tools/load': [email protected]
       '@graphql-tools/prisma-loader': [email protected]
       '@graphql-tools/url-loader': [email protected]
-      '@graphql-tools/utils': 8.2.[email protected]
+      '@graphql-tools/utils': 8.5.1[email protected]
       ansi-escapes: 4.3.2
       chalk: 4.1.2
       change-case-all: 1.0.14
@@ -2436,9 +2438,9 @@ packages:
     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
     dependencies:
-      '@graphql-codegen/plugin-helpers': 2.1.1[email protected]
+      '@graphql-codegen/plugin-helpers': 2.3.0[email protected]
       '@graphql-tools/schema': [email protected]
-      '@graphql-tools/utils': 8.2.[email protected]
+      '@graphql-tools/utils': 8.5.1[email protected]
       graphql: 15.7.2
       tslib: 2.3.1
     dev: true
@@ -2457,6 +2459,20 @@ packages:
       tslib: 2.3.1
     dev: true
 
+  /@graphql-codegen/plugin-helpers/[email protected]:
+    resolution: {integrity: sha512-7t3LFd6DHUWPh0f7qY7wde2r4KCsU8WDcTxQ0QuHuokTqZYnRk+UH3xNDUiyb+1LGTBUqIaKxLwQXh8EDyZK7A==}
+    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
+    dependencies:
+      '@graphql-tools/utils': [email protected]
+      change-case-all: 1.0.14
+      common-tags: 1.8.0
+      graphql: 15.7.2
+      import-from: 4.0.0
+      lodash: 4.17.21
+      tslib: 2.3.1
+    dev: true
+
   /@graphql-codegen/plugin-helpers/[email protected]:
     resolution: {integrity: sha512-IdIEtAFkAZrTgVbhMzYudIzcsFHkP2pUpZjg3X+x1XJfZ+asEVHf1SCwL9gOIM/BuG+fsHRZMenedfWHSyF/AQ==}
     peerDependencies:
@@ -2501,6 +2517,25 @@ packages:
       - supports-color
     dev: true
 
+  /@graphql-codegen/typescript-urql-graphcache/2.1.6_0eb281deb1c9cbb2b68cb93f912d7be2:
+    resolution: {integrity: sha512-PlLIOnEWg2ItMztfBkJpvFs9HJzk0yYvc1AwzrVnff82eLLjFZsnxRUTMHSICCU9oFGdvAElHqxyO4fSdvaurg==}
+    peerDependencies:
+      '@urql/exchange-graphcache': ^4.1.1
+      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
+      graphql-tag: ^2.0.0
+    dependencies:
+      '@graphql-codegen/plugin-helpers': [email protected]
+      '@graphql-codegen/visitor-plugin-common': [email protected]
+      '@urql/exchange-graphcache': [email protected]
+      auto-bind: 4.0.0
+      change-case-all: 1.0.14
+      graphql: 15.7.2
+      graphql-tag: [email protected]
+      tslib: 2.3.1
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
   /@graphql-codegen/typescript/[email protected]:
     resolution: {integrity: sha512-prcB4nNi2iQzZRLla6N6kEPmnE2WU1zz5+sEBcZcqphjWERqQ3zwdSKsuLorE/XxMp500p6BQ96cVo+bFkmVtA==}
     peerDependencies:
@@ -2534,7 +2569,7 @@ packages:
     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
     dependencies:
-      '@graphql-codegen/plugin-helpers': 2.1.1[email protected]
+      '@graphql-codegen/plugin-helpers': 2.3.0[email protected]
       '@urql/introspection': [email protected]
       graphql: 15.7.2
       tslib: 2.3.1
@@ -2560,6 +2595,26 @@ packages:
       - supports-color
     dev: true
 
+  /@graphql-codegen/visitor-plugin-common/[email protected]:
+    resolution: {integrity: sha512-wcUqpbvhLlOwsriyI+ZTuE0Fx7AIIbcL80+KjgNGrMjLZJLTyMJGpYwc87I876EPIcyC35+LO15nwy2cR2tbxQ==}
+    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
+    dependencies:
+      '@graphql-codegen/plugin-helpers': [email protected]
+      '@graphql-tools/optimize': [email protected]
+      '@graphql-tools/relay-operation-optimizer': [email protected]
+      '@graphql-tools/utils': [email protected]
+      auto-bind: 4.0.0
+      change-case-all: 1.0.14
+      dependency-graph: 0.11.0
+      graphql: 15.7.2
+      graphql-tag: [email protected]
+      parse-filepath: 1.0.2
+      tslib: 2.3.1
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
   /@graphql-codegen/visitor-plugin-common/[email protected]:
     resolution: {integrity: sha512-a1kJ/5YBivCj9X20YuhNU2mPY9xjUVmJO0VjHBu06PyvC27GsR1PmvgRALIXrb6QwV+9DDUda3ewKzgne2Qc+A==}
     peerDependencies:
@@ -2585,7 +2640,7 @@ packages:
     peerDependencies:
       graphql: ^14.0.0 || ^15.0.0 || ^16.0.0
     dependencies:
-      '@graphql-tools/utils': 8.2.[email protected]
+      '@graphql-tools/utils': 8.5.1[email protected]
       cross-fetch: 3.1.4
       graphql: 15.7.2
       sync-fetch: 0.3.0
@@ -2620,7 +2675,7 @@ packages:
     peerDependencies:
       graphql: ^14.0.0 || ^15.0.0 || ^16.0.0
     dependencies:
-      '@graphql-tools/utils': 8.2.[email protected]
+      '@graphql-tools/utils': 8.5.1[email protected]
       dataloader: 2.0.0
       graphql: 15.7.2
       tslib: 2.3.1
@@ -2646,7 +2701,7 @@ packages:
       graphql: ^14.0.0 || ^15.0.0 || ^16.0.0
     dependencies:
       '@graphql-tools/graphql-tag-pluck': [email protected]
-      '@graphql-tools/utils': 8.2.[email protected]
+      '@graphql-tools/utils': 8.5.1[email protected]
       globby: 11.0.4
       graphql: 15.7.2
       tslib: 2.3.1
@@ -2691,7 +2746,7 @@ packages:
     dependencies:
       '@graphql-tools/batch-execute': [email protected]
       '@graphql-tools/schema': [email protected]
-      '@graphql-tools/utils': 8.2.[email protected]
+      '@graphql-tools/utils': 8.5.1[email protected]
       dataloader: 2.0.0
       graphql: 15.7.2
       tslib: 2.3.1
@@ -2717,7 +2772,7 @@ packages:
       graphql: ^14.0.0 || ^15.0.0 || ^16.0.0
     dependencies:
       '@graphql-tools/graphql-tag-pluck': [email protected]
-      '@graphql-tools/utils': 8.2.[email protected]
+      '@graphql-tools/utils': 8.5.1[email protected]
       graphql: 15.7.2
       is-glob: 4.0.1
       micromatch: 4.0.4
@@ -2747,7 +2802,7 @@ packages:
       graphql: ^14.0.0 || ^15.0.0 || ^16.0.0
     dependencies:
       '@graphql-tools/graphql-tag-pluck': [email protected]
-      '@graphql-tools/utils': 8.2.[email protected]
+      '@graphql-tools/utils': 8.5.1[email protected]
       cross-fetch: 3.1.4
       graphql: 15.7.2
       tslib: 2.3.1
@@ -2771,8 +2826,8 @@ packages:
     peerDependencies:
       graphql: ^14.0.0 || ^15.0.0 || ^16.0.0
     dependencies:
-      '@graphql-tools/import': 6.5.2[email protected]
-      '@graphql-tools/utils': 8.2.[email protected]
+      '@graphql-tools/import': 6.5.7[email protected]
+      '@graphql-tools/utils': 8.5.1[email protected]
       globby: 11.0.4
       graphql: 15.7.2
       tslib: 2.3.1
@@ -2802,24 +2857,13 @@ packages:
       '@babel/parser': 7.15.7
       '@babel/traverse': 7.15.4
       '@babel/types': 7.15.6
-      '@graphql-tools/utils': 8.2.[email protected]
+      '@graphql-tools/utils': 8.5.1[email protected]
       graphql: 15.7.2
       tslib: 2.3.1
     transitivePeerDependencies:
       - supports-color
     dev: true
 
-  /@graphql-tools/import/[email protected]:
-    resolution: {integrity: sha512-Hi3aEWHK6B83d+mjO7CdX1xhaBwEon3ZLc9Ch1ivrU7vay84k6UQkoY/B4NdOZuLKrKlt920UtoDbGoZFFYlHA==}
-    peerDependencies:
-      graphql: ^14.0.0 || ^15.0.0 || ^16.0.0
-    dependencies:
-      '@graphql-tools/utils': [email protected]
-      graphql: 15.7.2
-      resolve-from: 5.0.0
-      tslib: 2.3.1
-    dev: true
-
   /@graphql-tools/import/[email protected]:
     resolution: {integrity: sha512-E892M7WF8a1vCcDENP/ODmwg5zwUCSZlGExsFpWhgemmbNN6HaXHiJglL2kfp3sWGD8/ayjMcj+f9fX7PLDytg==}
     peerDependencies:
@@ -2829,7 +2873,6 @@ packages:
       graphql: 15.7.2
       resolve-from: 5.0.0
       tslib: 2.3.1
-    dev: false
 
   /@graphql-tools/json-file-loader/[email protected]:
     resolution: {integrity: sha512-CnfwBSY5926zyb6fkDBHnlTblHnHI4hoBALFYXnrg0Ev4yWU8B04DZl/pBRUc459VNgO2x8/mxGIZj2hPJG1EA==}
@@ -2846,7 +2889,7 @@ packages:
     peerDependencies:
       graphql: ^14.0.0 || ^15.0.0 || ^16.0.0
     dependencies:
-      '@graphql-tools/utils': 8.2.[email protected]
+      '@graphql-tools/utils': 8.5.1[email protected]
       globby: 11.0.4
       graphql: 15.7.2
       tslib: 2.3.1
@@ -2905,7 +2948,7 @@ packages:
       graphql: ^14.0.0 || ^15.0.0 || ^16.0.0
     dependencies:
       '@graphql-tools/schema': [email protected]
-      '@graphql-tools/utils': 8.2.[email protected]
+      '@graphql-tools/utils': 8.5.1[email protected]
       graphql: 15.7.2
       p-limit: 3.1.0
       tslib: 2.3.1
@@ -2975,7 +3018,7 @@ packages:
       graphql: ^14.0.0 || ^15.0.0 || ^16.0.0
     dependencies:
       '@graphql-tools/url-loader': [email protected]
-      '@graphql-tools/utils': 8.2.[email protected]
+      '@graphql-tools/utils': 8.5.1[email protected]
       '@types/js-yaml': 4.0.4
       '@types/json-stable-stringify': 1.0.33
       '@types/jsonwebtoken': 8.5.5
@@ -3125,7 +3168,7 @@ packages:
     dependencies:
       '@ardatan/fetch-event-source': 2.0.2
       '@graphql-tools/delegate': [email protected]
-      '@graphql-tools/utils': 8.2.[email protected]
+      '@graphql-tools/utils': 8.5.1[email protected]
       '@graphql-tools/wrap': [email protected]
       '@n1ru4l/graphql-live-query': [email protected]
       '@types/websocket': 1.0.4
@@ -3200,6 +3243,15 @@ packages:
       graphql: 15.7.2
       tslib: 2.3.1
 
+  /@graphql-tools/utils/[email protected]:
+    resolution: {integrity: sha512-ksE0RxS0AFllo6KIJjvQsRgcUAzoyZUgUrDbCngv4SaQwyX9YxTfddTLN4uQmbiZB9h25fPp/Xgeyaa3ARCzgg==}
+    peerDependencies:
+      graphql: ^14.0.0 || ^15.0.0 || ^16.0.0
+    dependencies:
+      graphql: 15.7.2
+      tslib: 2.3.1
+    dev: true
+
   /@graphql-tools/utils/[email protected]:
     resolution: {integrity: sha512-V/OQVpj+Z05qW9ZdlJWSKzREYlgGEq+juV+pUy3JO9jI+sZo/W3oncuW9+1awwp/RkL0aZ9RgjL+XYOgCsmOLw==}
     peerDependencies:
@@ -3241,7 +3293,7 @@ packages:
     dependencies:
       '@graphql-tools/delegate': [email protected]
       '@graphql-tools/schema': [email protected]
-      '@graphql-tools/utils': 8.2.[email protected]
+      '@graphql-tools/utils': 8.5.1[email protected]
       graphql: 15.7.2
       tslib: 2.3.1
       value-or-promise: 1.0.10
@@ -4650,7 +4702,7 @@ packages:
   /@types/clean-css/4.2.5:
     resolution: {integrity: sha512-NEzjkGGpbs9S9fgC4abuBvTpVwE3i+Acu9BBod3PUyjDVZcNsGx61b8r2PphR61QGPnn0JHVs5ey6/I4eTrkxw==}
     dependencies:
-      '@types/node': 12.20.12
+      '@types/node': 16.11.6
       source-map: 0.6.1
     dev: true
 
@@ -4679,7 +4731,6 @@ packages:
     resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==}
     dependencies:
       '@types/node': 16.11.6
-    dev: false
 
   /@types/content-disposition/0.5.4:
     resolution: {integrity: sha512-0mPF08jn9zYI0n0Q/Pnz7C4kThdSt+6LD4amsrYDDpgBfrVWa3TcCOxKX1zkGgYniGagRv8heN2cbh+CAn+uuQ==}
@@ -4722,7 +4773,7 @@ packages:
   /@types/etag/1.8.0:
     resolution: {integrity: sha512-EdSN0x+Y0/lBv7YAb8IU4Jgm6DWM+Bqtz7o5qozl96fzaqdqbdfHS5qjdpFeIv7xQ8jSLyjMMNShgYtMajEHyQ==}
     dependencies:
-      '@types/node': 12.20.12
+      '@types/node': 16.11.6
     dev: true
 
   /@types/express-serve-static-core/4.17.24:
@@ -4743,7 +4794,7 @@ packages:
   /@types/file-loader/5.0.0:
     resolution: {integrity: sha512-evodFzM0PLOXmMZy8DhPN+toP6QgJiIteF6e8iD9T0xGBUllQA/DAb1nZwCIoNh7vuLvqCGPUdsLf3GSbcHd4g==}
     dependencies:
-      '@types/webpack': 4.41.28
+      '@types/webpack': 4.41.31
     dev: true
 
   /@types/fs-capacitor/2.0.0:
@@ -4900,7 +4951,7 @@ packages:
   /@types/node-sass/4.11.2:
     resolution: {integrity: sha512-pOFlTw/OtZda4e+yMjq6/QYuvY0RDMQ+mxXdWj7rfSyf18V8hS4SfgurO+MasAkQsv6Wt6edOGlwh5QqJml9gw==}
     dependencies:
-      '@types/node': 12.20.12
+      '@types/node': 16.11.6
     dev: true
 
   /@types/node/10.17.60:
@@ -4924,7 +4975,7 @@ packages:
   /@types/optimize-css-assets-webpack-plugin/5.0.3:
     resolution: {integrity: sha512-PJgbI4KplJfyxKWVrBbEL+rePEBqeozJRMT0mBL3ynhvngASBV/XJ+BneLuJN74RjjMzO0gA5ns80mgubQdZAA==}
     dependencies:
-      '@types/webpack': 4.41.28
+      '@types/webpack': 4.41.31
     dev: true
 
   /@types/parse-json/4.0.0:
@@ -4962,13 +5013,13 @@ packages:
     dependencies:
       '@types/node-sass': 4.11.2
       '@types/sass': 1.43.0
-      '@types/webpack': 4.41.28
+      '@types/webpack': 4.41.31
     dev: true
 
   /@types/sass/1.43.0:
     resolution: {integrity: sha512-DPSXNJ1rYLo88GyF9tuB4bsYGfpKI1a4+wOQmc+LI1SUoocm9QLRSpz0GxxuyjmJsYFIQo/dDlRSSpIXngff+w==}
     dependencies:
-      '@types/node': 12.20.12
+      '@types/node': 16.11.6
     dev: true
 
   /@types/sax/1.2.3:
@@ -5023,7 +5074,7 @@ packages:
   /@types/terser-webpack-plugin/4.2.1:
     resolution: {integrity: sha512-x688KsgQKJF8PPfv4qSvHQztdZNHLlWJdolN9/ptAGimHVy3rY+vHdfglQDFh1Z39h7eMWOd6fQ7ke3PKQcdyA==}
     dependencies:
-      '@types/webpack': 4.41.28
+      '@types/webpack': 4.41.31
       terser: 4.8.0
     dev: true
 
@@ -5048,21 +5099,21 @@ packages:
   /@types/webpack-bundle-analyzer/3.9.3:
     resolution: {integrity: sha512-l/vaDMWGcXiMB3CbczpyICivLTB07/JNtn1xebsRXE9tPaUDEHgX3x7YP6jfznG5TOu7I4w0Qx1tZz61znmPmg==}
     dependencies:
-      '@types/webpack': 4.41.28
+      '@types/webpack': 4.41.31
     dev: true
 
   /@types/webpack-dev-middleware/4.1.2:
     resolution: {integrity: sha512-SxXzPCqeZ03fJ2dg3iD7cSXvqZymmS5/2GD9fANRcyWN7HYK1H3ty6q7IInXZKvPrdUqij831G3RLIeKK6aGdw==}
     dependencies:
-      '@types/connect': 3.4.34
-      '@types/webpack': 4.41.28
+      '@types/connect': 3.4.35
+      '@types/webpack': 4.41.31
     dev: true
 
   /@types/webpack-hot-middleware/2.25.4:
     resolution: {integrity: sha512-6tQb9EBKIANZYUVLQYWiWfDFVe7FhXSj4bB2EF5QB7VtYWL3HDR+y/zqjZPAnCorv0spLqVMRqjRK8AmhfocMw==}
     dependencies:
-      '@types/connect': 3.4.34
-      '@types/webpack': 4.41.28
+      '@types/connect': 3.4.35
+      '@types/webpack': 4.41.31
     dev: true
 
   /@types/webpack-sources/3.2.0:
@@ -5076,7 +5127,7 @@ packages:
     resolution: {integrity: sha512-Nn84RAiJjKRfPFFCVR8LC4ueTtTdfWAMZ03THIzZWRJB+rX24BD3LqPSFnbMscWauEsT4segAsylPDIaZyZyLQ==}
     dependencies:
       '@types/anymatch': 3.0.0
-      '@types/node': 12.20.12
+      '@types/node': 16.11.6
       '@types/tapable': 1.0.8
       '@types/uglify-js': 3.13.1
       '@types/webpack-sources': 3.2.0
@@ -5092,7 +5143,6 @@ packages:
       '@types/webpack-sources': 3.2.0
       anymatch: 3.1.2
       source-map: 0.6.1
-    dev: false
 
   /@types/websocket/1.0.2:
     resolution: {integrity: sha512-B5m9aq7cbbD/5/jThEr33nUY8WEfVi6A2YKCTOvw5Ldy7mtsOkqRvGjnzy6g7iMMDsgu7xREuCzqATLDLQVKcQ==}
@@ -10461,7 +10511,7 @@ packages:
       '@graphql-tools/load': [email protected]
       '@graphql-tools/merge': [email protected]
       '@graphql-tools/url-loader': [email protected]
-      '@graphql-tools/utils': 8.2.[email protected]
+      '@graphql-tools/utils': 8.5.1[email protected]
       cosmiconfig: 7.0.0
       cosmiconfig-toml-loader: 1.0.0
       graphql: 15.7.2