From 802c694ea44aa67db1991c025e34170d161bab18 Mon Sep 17 00:00:00 2001 From: Tristan Lee Date: Tue, 9 Jan 2024 12:44:08 -0500 Subject: [PATCH] Add Upstash waiting room example --- examples/v7-edge-functions/edgio.config.js | 2 + .../functions/database/upstash/index.js | 16 +- .../upstash/waiting-room-capacity.html.js | 2 +- .../upstash/waiting-room-landing.html.js | 15 +- examples/v7-edge-functions/package-lock.json | 257 ++++++++++++------ examples/v7-edge-functions/package.json | 12 +- 6 files changed, 211 insertions(+), 93 deletions(-) diff --git a/examples/v7-edge-functions/edgio.config.js b/examples/v7-edge-functions/edgio.config.js index 4b9911edd..047fcac82 100644 --- a/examples/v7-edge-functions/edgio.config.js +++ b/examples/v7-edge-functions/edgio.config.js @@ -1,6 +1,8 @@ // This file was automatically added by edgio init. // You should commit this file to source control. // Learn more about this file at https://docs.edg.io/guides/edgio_config +require('dotenv').config(); + module.exports = { connector: '@edgio/next', diff --git a/examples/v7-edge-functions/functions/database/upstash/index.js b/examples/v7-edge-functions/functions/database/upstash/index.js index 647468acf..f9e71021c 100644 --- a/examples/v7-edge-functions/functions/database/upstash/index.js +++ b/examples/v7-edge-functions/functions/database/upstash/index.js @@ -4,6 +4,7 @@ import { setCookieToResponse, } from '../../../utils/cookies'; import { setEnvFromContext } from '../../../utils/polyfills/process.env'; +import '../../../utils/polyfills/URL'; import waitingPage from './waiting-room-capacity.html'; import landingPage from './waiting-room-landing.html'; @@ -59,7 +60,13 @@ function generateId(len = 10) { * Handle the default response. */ async function getDefaultResponse(request, userId) { - const response = new Response(landingPage); + const response = new Response( + landingPage({ + domain: getDomainFromRequest(request), + maxUsers: TOTAL_ACTIVE_USERS, + sessionDuration: SESSION_DURATION_SECONDS, + }) + ); response.headers.set('content-type', 'text/html;charset=UTF-8'); const cookies = getCookiesFromRequest(request); @@ -126,7 +133,12 @@ async function setExpiryRecord(key, value, seconds) { * Response for the waiting room. */ async function getWaitingRoomResponse() { - const response = new Response(waitingPage); + const response = new Response(waitingPage()); response.headers.set('content-type', 'text/html;charset=UTF-8'); return response; } + +function getDomainFromRequest(request) { + const url = new URL(request.url); + return url.origin; +} diff --git a/examples/v7-edge-functions/functions/database/upstash/waiting-room-capacity.html.js b/examples/v7-edge-functions/functions/database/upstash/waiting-room-capacity.html.js index fc27a38f3..f7c2d2a60 100644 --- a/examples/v7-edge-functions/functions/database/upstash/waiting-room-capacity.html.js +++ b/examples/v7-edge-functions/functions/database/upstash/waiting-room-capacity.html.js @@ -1,4 +1,4 @@ -const template = ` +const template = () => ` diff --git a/examples/v7-edge-functions/functions/database/upstash/waiting-room-landing.html.js b/examples/v7-edge-functions/functions/database/upstash/waiting-room-landing.html.js index f7a56f318..1b9ac6580 100644 --- a/examples/v7-edge-functions/functions/database/upstash/waiting-room-landing.html.js +++ b/examples/v7-edge-functions/functions/database/upstash/waiting-room-landing.html.js @@ -1,4 +1,4 @@ -const template = ` +const template = ({ domain, maxUsers, sessionDuration }) => ` @@ -103,11 +103,18 @@ const template = `

Welcome to the Waiting Room Demo

- This demo showcases an effective way to manage website traffic during high-volume periods. When the site is at full capacity, visitors are temporarily placed in a waiting room, ensuring a smooth user experience. + This demo showcases an effective way to manage website traffic during high-volume periods. + When the site is at full capacity, visitors are temporarily placed in a waiting room, ensuring a smooth user experience. +

+

+ This is configured for a maximum of ${maxUsers} active sessions, with each session lasting ${sessionDuration} seconds. +

+

+ Experience this firsthand by opening this link in multiple incognito/private browser sessions. + Once the site is at full capacity (2 active sessions), you will be placed in a waiting room until a spot opens up.

-

Experience this firsthand by opening this link in multiple browser sessions. Once the site is at full capacity (2 active sessions), you will be placed in a waiting room until a spot opens up.

Optionally, issue the

curl
command below to make multiple requests:

-
curl https://edgio-community-examples-v7-edge-functions-live.edgio.link/example/upstash-database
+
curl ${domain}/example/upstash-database

Dive into the code to see how it works.

View the demo code on GitHub

diff --git a/examples/v7-edge-functions/package-lock.json b/examples/v7-edge-functions/package-lock.json index f1b6c65a6..4ced841e8 100644 --- a/examples/v7-edge-functions/package-lock.json +++ b/examples/v7-edge-functions/package-lock.json @@ -23,12 +23,12 @@ "whatwg-url": "^13.0.0" }, "devDependencies": { - "@edgio/cli": "^7.6.1", - "@edgio/core": "^7.6.1", - "@edgio/devtools": "^7.6.1", - "@edgio/next": "^7.6.1", - "@edgio/prefetch": "^7.6.1", - "@edgio/react": "^7.6.1", + "@edgio/cli": "^7.7.1", + "@edgio/core": "^7.7.1", + "@edgio/devtools": "^7.7.1", + "@edgio/next": "^7.7.1", + "@edgio/prefetch": "^7.7.1", + "@edgio/react": "^7.7.1", "@types/react": "18.2.45", "autoprefixer": "^10.0.1", "dotenv": "^16.3.1", @@ -90,17 +90,80 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.22.5" + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/compat-data": { "version": "7.22.6", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.6.tgz", @@ -141,12 +204,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -264,22 +327,22 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" @@ -442,9 +505,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, "engines": { "node": ">=6.9.0" @@ -489,13 +552,13 @@ } }, "node_modules/@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -565,9 +628,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.6.tgz", - "integrity": "sha512-EIQu22vNkceq3LbjAq7knDf/UmtI2qbcNI8GRBlijez6TpQLvSodJPYfydQmNA5buwkxxxa/PVI44jjYZ+/cLw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -2048,34 +2111,34 @@ } }, "node_modules/@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.6.tgz", - "integrity": "sha512-53CijMvKlLIDlOTrdWiHileRddlIiwUIyCKqYa7lYnnPldXCG5dUSN38uT0cA6i7rHWNKJLH0VU/Kxdr1GzB3w==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", + "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.6", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -2083,9 +2146,9 @@ } }, "node_modules/@babel/types": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", - "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.23.4", @@ -2116,12 +2179,12 @@ } }, "node_modules/@edgio/cli": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@edgio/cli/-/cli-7.6.1.tgz", - "integrity": "sha512-dACyBDGRf1eDHONCzVQ4O61aKUJL6wJypxbXn7Qhhc59/ILN4YiU5Tq+f/hhYmjovnwUXxGYyDPEBlw+aDzgFQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@edgio/cli/-/cli-7.7.1.tgz", + "integrity": "sha512-QhLCzrE54JhSSh3O2sLWzjaovu1kU3soqfRXcTF/2XAwy65wjQZ0wBbt5sOYHnFHmQm1DKYAnzeGuw0TZdnHlw==", "dev": true, "dependencies": { - "axios": "^0.21.2", + "axios": "^1.6.0", "chalk": "^4.1.2", "check-node-version": "^4.2.1", "cli-progress": "^3.9.1", @@ -2136,6 +2199,7 @@ "fs-extra": "^8.1.0", "git-url-parse": "^13.1.0", "globby": "^10.0.1", + "https-proxy-agent": "^7.0.2", "import-local": "^3.0.2", "ipaddr.js": "^2.0.1", "is-ci": "^2.0.0", @@ -2171,14 +2235,39 @@ "node": ">=16.0.0" } }, + "node_modules/@edgio/cli/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@edgio/cli/node_modules/https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/@edgio/core": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@edgio/core/-/core-7.6.1.tgz", - "integrity": "sha512-D6sl3O7Q5GNeqDMRPuwzVRMZSktevJg8G+aemiD8TM3qaIzcvhthsKaYUgotAYtC/Giq6GvL/YP7my4+TN5mfw==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@edgio/core/-/core-7.7.1.tgz", + "integrity": "sha512-8aufJM6ARKZBqmoC0S6SW0DTpeNo4ZtFRTvFxPD52ug+3nyCzoPzNX4QUw9UNaRQEYHvER31bDJeJxs+tlQZJg==", "dev": true, "dependencies": { "@babel/parser": "^7.18.9", - "@babel/traverse": "^7.18.9", + "@babel/traverse": "^7.22.19", "@types/lodash.clonedeep": "^4.5.6", "@vercel/ncc": "^0.34.0", "abort-controller": "^3.0.0", @@ -2254,9 +2343,9 @@ } }, "node_modules/@edgio/devtools": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@edgio/devtools/-/devtools-7.6.1.tgz", - "integrity": "sha512-lac/9pYAxbTUm3ElOa7VEmVpjp3Mju6Aqwsfc0MnUWcvqlmzhmNjQoIfjIk0g6DrIFinVJlLWslcl7VBnKF2kg==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@edgio/devtools/-/devtools-7.7.1.tgz", + "integrity": "sha512-+AliDKr4r89rRGXwePfYwxGEUbFu1rNAdNrmi3edn9uGPjgERB5aYxoTChE1F8SOcbM0A2aIbFtvoTP8eUXDkw==", "dev": true, "dependencies": { "clsx": "^1.1.1", @@ -2265,9 +2354,9 @@ } }, "node_modules/@edgio/next": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@edgio/next/-/next-7.6.1.tgz", - "integrity": "sha512-4lZ21mwSXuaCWrAmpvwWXd4S6BmAQ2JrJmgbptnac4jNQ4T1mIIIjX3b8xtp0Uu1pwYzDMrGmWJn0UJkqAFS0A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@edgio/next/-/next-7.7.1.tgz", + "integrity": "sha512-sxmUNra0bffOUUTOt/3yD94F2vUWYDYg7vaF+uJnNbd4qxQa4t8MejxZZmo2CV/tE80ap/7asxLCL+HUcJg8fQ==", "dev": true, "dependencies": { "@vercel/nft": "^0.13.1", @@ -3335,12 +3424,12 @@ } }, "node_modules/@edgio/prefetch": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@edgio/prefetch/-/prefetch-7.6.1.tgz", - "integrity": "sha512-nD+WCapyNkTL3ts5D6RMkmqRXiifLC0VudHD2W+SET/GjTEZC8H6wji1zUxTUD/cF0uVxfE8W2+stEIEoYHEfA==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@edgio/prefetch/-/prefetch-7.7.1.tgz", + "integrity": "sha512-MmBUWcQ+df6hKIiosI0FUyxn0zHWVmoXDsVFBYvo6t7/va4JO203v4xN2tDQ7JTFj4GnjkHxJ8hii0WbzOzPlQ==", "dev": true, "dependencies": { - "@edgio/core": "^7.6.1", + "@edgio/core": "^7.7.1", "cheerio": "^1.0.0-rc.3", "json-query": "^2.2.2", "workbox-cacheable-response": "^5.1.2", @@ -3352,9 +3441,9 @@ } }, "node_modules/@edgio/react": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@edgio/react/-/react-7.6.1.tgz", - "integrity": "sha512-aRyzAsIfXVmjHxB9msoj++he/+owj0qDjPRl+d2kOXe8VbucauydtyO9MgQSb1WXlK6DaqMec10SCeTR7Sgceg==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@edgio/react/-/react-7.7.1.tgz", + "integrity": "sha512-zan96lbI2fLHbjcgOH1XNfE94F8qalhrtgGxt29Bc9REVQonNbDAm9od2K57M3cKTZp009Wb2aUgxEI1XYpdnw==", "dev": true, "dependencies": { "prop-types": "^15.8.1", @@ -5230,12 +5319,14 @@ } }, "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", + "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", "dev": true, "dependencies": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "node_modules/axios/node_modules/form-data": { @@ -9216,9 +9307,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", "dev": true, "funding": [ { @@ -13790,6 +13881,12 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", diff --git a/examples/v7-edge-functions/package.json b/examples/v7-edge-functions/package.json index 7c589dfc6..b5da1447b 100644 --- a/examples/v7-edge-functions/package.json +++ b/examples/v7-edge-functions/package.json @@ -18,12 +18,12 @@ "private": true, "license": "MIT", "devDependencies": { - "@edgio/cli": "^7.6.1", - "@edgio/core": "^7.6.1", - "@edgio/devtools": "^7.6.1", - "@edgio/next": "^7.6.1", - "@edgio/prefetch": "^7.6.1", - "@edgio/react": "^7.6.1", + "@edgio/cli": "^7.7.1", + "@edgio/core": "^7.7.1", + "@edgio/devtools": "^7.7.1", + "@edgio/next": "^7.7.1", + "@edgio/prefetch": "^7.7.1", + "@edgio/react": "^7.7.1", "@types/react": "18.2.45", "autoprefixer": "^10.0.1", "dotenv": "^16.3.1",