diff --git a/client/package-lock.json b/client/package-lock.json
index 2219d31f..97e374b1 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -9,10 +9,12 @@
"version": "0.0.1",
"devDependencies": {
"@fortawesome/free-solid-svg-icons": "^6.2.1",
+ "@googlemaps/js-api-loader": "^1.16.8",
"@playwright/test": "^1.28.1",
"@sveltejs/adapter-auto": "^1.0.0",
"@sveltejs/kit": "^1.0.0",
"@types/base-64": "^1.0.0",
+ "@types/google.maps": "^3.55.12",
"@typescript-eslint/eslint-plugin": "^5.45.0",
"@typescript-eslint/parser": "^5.45.0",
"@urql/core": "^3.1.1",
@@ -24,6 +26,7 @@
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-svelte3": "^4.0.0",
"graphql": "^16.6.0",
+ "graphql-ws": "^5.16.0",
"prettier": "^2.8.0",
"prettier-plugin-svelte": "^2.8.1",
"shelljs": "^0.8.5",
@@ -489,6 +492,13 @@
"node": ">=6"
}
},
+ "node_modules/@googlemaps/js-api-loader": {
+ "version": "1.16.8",
+ "resolved": "https://registry.npmjs.org/@googlemaps/js-api-loader/-/js-api-loader-1.16.8.tgz",
+ "integrity": "sha512-CROqqwfKotdO6EBjZO/gQGVTbeDps5V7Mt9+8+5Q+jTg5CRMi3Ii/L9PmV3USROrt2uWxtGzJHORmByxyo9pSQ==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
"node_modules/@humanwhocodes/config-array": {
"version": "0.11.8",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
@@ -681,6 +691,13 @@
"integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==",
"dev": true
},
+ "node_modules/@types/google.maps": {
+ "version": "3.55.12",
+ "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.55.12.tgz",
+ "integrity": "sha512-Q8MsLE+YYIrE1H8wdN69YHHAF8h7ApvF5MiMXh/zeCpP9Ut745mV9M0F4X4eobZ2WJe9k8tW2ryYjLa87IO2Sg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/json-schema": {
"version": "7.0.11",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
@@ -903,10 +920,11 @@
}
},
"node_modules/@urql/core": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@urql/core/-/core-3.1.1.tgz",
- "integrity": "sha512-Mnxtq4I4QeFJsgs7Iytw+HyhiGxISR6qtyk66c9tipozLZ6QVxrCiUPF2HY4BxNIabaxcp+rivadvm8NAnXj4Q==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@urql/core/-/core-3.2.2.tgz",
+ "integrity": "sha512-i046Cz8cZ4xIzGMTyHZrbdgzcFMcKD7+yhCAH5FwWBRjcKrc+RjEOuR9X5AMuBvr8c6IAaE92xAqa4wmlGfWTQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"wonka": "^6.1.2"
},
@@ -1841,6 +1859,22 @@
"node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0"
}
},
+ "node_modules/graphql-ws": {
+ "version": "5.16.0",
+ "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.16.0.tgz",
+ "integrity": "sha512-Ju2RCU2dQMgSKtArPbEtsK5gNLnsQyTNIo/T7cZNp96niC1x0KdJNZV0TIoilceBPQwfb5itrGl8pkFeOUMl4A==",
+ "dev": true,
+ "license": "MIT",
+ "workspaces": [
+ "website"
+ ],
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "graphql": ">=0.11 <=16"
+ }
+ },
"node_modules/has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@@ -3207,10 +3241,11 @@
}
},
"node_modules/wonka": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/wonka/-/wonka-6.1.2.tgz",
- "integrity": "sha512-zNrXPMccg/7OEp9tSfFkMgTvhhowqasiSHdJ3eCZolXxVTV/aT6HUTofoZk9gwRbGoFey/Nss3JaZKUMKMbofg==",
- "dev": true
+ "version": "6.3.4",
+ "resolved": "https://registry.npmjs.org/wonka/-/wonka-6.3.4.tgz",
+ "integrity": "sha512-CjpbqNtBGNAeyNS/9W6q3kSkKE52+FjIj7AkFlLr11s/VWGUu6a2CdYSdGxocIhIVjaW/zchesBQUKPVU69Cqg==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/word-wrap": {
"version": "1.2.3",
@@ -3489,6 +3524,12 @@
"@fortawesome/fontawesome-common-types": "6.2.1"
}
},
+ "@googlemaps/js-api-loader": {
+ "version": "1.16.8",
+ "resolved": "https://registry.npmjs.org/@googlemaps/js-api-loader/-/js-api-loader-1.16.8.tgz",
+ "integrity": "sha512-CROqqwfKotdO6EBjZO/gQGVTbeDps5V7Mt9+8+5Q+jTg5CRMi3Ii/L9PmV3USROrt2uWxtGzJHORmByxyo9pSQ==",
+ "dev": true
+ },
"@humanwhocodes/config-array": {
"version": "0.11.8",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
@@ -3632,6 +3673,12 @@
"integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==",
"dev": true
},
+ "@types/google.maps": {
+ "version": "3.55.12",
+ "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.55.12.tgz",
+ "integrity": "sha512-Q8MsLE+YYIrE1H8wdN69YHHAF8h7ApvF5MiMXh/zeCpP9Ut745mV9M0F4X4eobZ2WJe9k8tW2ryYjLa87IO2Sg==",
+ "dev": true
+ },
"@types/json-schema": {
"version": "7.0.11",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
@@ -3765,9 +3812,9 @@
}
},
"@urql/core": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@urql/core/-/core-3.1.1.tgz",
- "integrity": "sha512-Mnxtq4I4QeFJsgs7Iytw+HyhiGxISR6qtyk66c9tipozLZ6QVxrCiUPF2HY4BxNIabaxcp+rivadvm8NAnXj4Q==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@urql/core/-/core-3.2.2.tgz",
+ "integrity": "sha512-i046Cz8cZ4xIzGMTyHZrbdgzcFMcKD7+yhCAH5FwWBRjcKrc+RjEOuR9X5AMuBvr8c6IAaE92xAqa4wmlGfWTQ==",
"dev": true,
"requires": {
"wonka": "^6.1.2"
@@ -4474,6 +4521,13 @@
"integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==",
"dev": true
},
+ "graphql-ws": {
+ "version": "5.16.0",
+ "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.16.0.tgz",
+ "integrity": "sha512-Ju2RCU2dQMgSKtArPbEtsK5gNLnsQyTNIo/T7cZNp96niC1x0KdJNZV0TIoilceBPQwfb5itrGl8pkFeOUMl4A==",
+ "dev": true,
+ "requires": {}
+ },
"has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@@ -5370,9 +5424,9 @@
}
},
"wonka": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/wonka/-/wonka-6.1.2.tgz",
- "integrity": "sha512-zNrXPMccg/7OEp9tSfFkMgTvhhowqasiSHdJ3eCZolXxVTV/aT6HUTofoZk9gwRbGoFey/Nss3JaZKUMKMbofg==",
+ "version": "6.3.4",
+ "resolved": "https://registry.npmjs.org/wonka/-/wonka-6.3.4.tgz",
+ "integrity": "sha512-CjpbqNtBGNAeyNS/9W6q3kSkKE52+FjIj7AkFlLr11s/VWGUu6a2CdYSdGxocIhIVjaW/zchesBQUKPVU69Cqg==",
"dev": true
},
"word-wrap": {
diff --git a/client/package.json b/client/package.json
index 74ab9338..c00f8fc4 100644
--- a/client/package.json
+++ b/client/package.json
@@ -15,10 +15,12 @@
},
"devDependencies": {
"@fortawesome/free-solid-svg-icons": "^6.2.1",
+ "@googlemaps/js-api-loader": "^1.16.8",
"@playwright/test": "^1.28.1",
"@sveltejs/adapter-auto": "^1.0.0",
"@sveltejs/kit": "^1.0.0",
"@types/base-64": "^1.0.0",
+ "@types/google.maps": "^3.55.12",
"@typescript-eslint/eslint-plugin": "^5.45.0",
"@typescript-eslint/parser": "^5.45.0",
"@urql/core": "^3.1.1",
@@ -30,6 +32,7 @@
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-svelte3": "^4.0.0",
"graphql": "^16.6.0",
+ "graphql-ws": "^5.16.0",
"prettier": "^2.8.0",
"prettier-plugin-svelte": "^2.8.1",
"shelljs": "^0.8.5",
diff --git a/client/src/graphql/client.ts b/client/src/graphql/client.ts
index f595ac64..6ff2bfbc 100644
--- a/client/src/graphql/client.ts
+++ b/client/src/graphql/client.ts
@@ -1,4 +1,4 @@
-import { createClient, defaultExchanges } from '@urql/core';
+import { createClient, cacheExchange, fetchExchange } from '@urql/core';
import type { ClientOptions } from '@urql/core';
import { getIdToken } from '../auth/cognito';
import b64 from 'base-64';
@@ -9,7 +9,7 @@ const url: string = b64.decode(process.env.GRAPHQL_URI as string)?.trim() + '/'
const clientOpts: ClientOptions = {
url,
- exchanges: defaultExchanges,
+ exchanges: [cacheExchange, fetchExchange],
maskTypename: true,
fetchOptions: {
credentials: 'same-origin'
diff --git a/client/src/routes/+layout.svelte b/client/src/routes/+layout.svelte
index 65a88e7d..db25792a 100644
--- a/client/src/routes/+layout.svelte
+++ b/client/src/routes/+layout.svelte
@@ -1,11 +1,16 @@
-