From de0ed11c1a5733785579a636ebaabd9dfb0e94fd Mon Sep 17 00:00:00 2001 From: Sam Poder <39828164+sampoder@users.noreply.github.com> Date: Tue, 19 Jul 2022 10:07:03 -0400 Subject: [PATCH] Add Nested Middleware Support (#484) --- middleware.js | 28 +++++ package.json | 2 +- pages/bank/_middleware.js | 17 --- pages/{slack/index.js => slack.js} | 18 ++-- pages/slack/_middleware.js | 14 --- yarn.lock | 163 +++++++++++++++++------------ 6 files changed, 132 insertions(+), 110 deletions(-) create mode 100644 middleware.js delete mode 100644 pages/bank/_middleware.js rename pages/{slack/index.js => slack.js} (96%) delete mode 100644 pages/slack/_middleware.js diff --git a/middleware.js b/middleware.js new file mode 100644 index 00000000..ab966e6a --- /dev/null +++ b/middleware.js @@ -0,0 +1,28 @@ +import { NextResponse } from 'next/server' +import country from 'country-list-js'; +const partners = ['gb_help_desk'] + +export function middleware(request) { + if (request.nextUrl.pathname.startsWith('/bank')) { + const url = request.nextUrl.clone() + if (url.pathname === '/bank/') { + if (partners.includes(url.searchParams.get('ref'))) { + url.pathname = '/bank/partner' + } else { + url.pathname = '/bank/index' + } + return NextResponse.rewrite(url) + } + } + if (request.nextUrl.pathname.startsWith('/slack')) { + let url = request.nextUrl + if(!url.searchParams.get("continent")){ + let continent = country.findByIso2(request.geo.country || "AU").continent + if(continent == "Oceania"){ + continent = "Australia" + } + url.searchParams.set("continent", continent) + return NextResponse.redirect(url) + } + } +} diff --git a/package.json b/package.json index 61b7abd5..091b74f4 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "country-list-js": "^3.1.7", "globby": "^11.0.4", "lodash": "^4.17.21", - "next": "^12.1.6", + "next": "^12.2.2", "next-compose-plugins": "^2.2.1", "next-transpile-modules": "^9.0.0", "react": "^17.0.2", diff --git a/pages/bank/_middleware.js b/pages/bank/_middleware.js deleted file mode 100644 index 840c81f5..00000000 --- a/pages/bank/_middleware.js +++ /dev/null @@ -1,17 +0,0 @@ -import { NextResponse } from 'next/server' - -const partners = ['gb_help_desk'] - -export function middleware(req) { - const url = req.nextUrl.clone() - - if (url.pathname === '/bank/') { - if (partners.includes(url.searchParams.get('ref'))) { - url.pathname = '/bank/partner' - } else { - url.pathname = '/bank/index' - } - - return NextResponse.rewrite(url) - } -} diff --git a/pages/slack/index.js b/pages/slack.js similarity index 96% rename from pages/slack/index.js rename to pages/slack.js index 50d72e6f..159c388d 100644 --- a/pages/slack/index.js +++ b/pages/slack.js @@ -3,16 +3,16 @@ import { keyframes } from '@emotion/react' import Head from 'next/head' import NextLink from 'next/link' import Meta from '@hackclub/meta' -import Nav from '../../components/nav' -import ForceTheme from '../../components/force-theme' -import Icon from '../../components/icon' -import Stat from '../../components/stat' -import Footer from '../../components/footer' -import Header from '../../components/slack/header' -import SlackEvents from '../../components/slack/slack-events' -import { formatted, thousands } from '../../lib/members' +import Nav from '../components/nav' +import ForceTheme from '../components/force-theme' +import Icon from '../components/icon' +import Stat from '../components/stat' +import Footer from '../components/footer' +import Header from '../components/slack/header' +import SlackEvents from '../components/slack/slack-events' +import { formatted, thousands } from '../lib/members' import useSWR from 'swr' -import fetcher from '../../lib/fetcher' +import fetcher from '../lib/fetcher' const zoomSlide = keyframes({ from: { backgroundPosition: '-32px bottom' }, diff --git a/pages/slack/_middleware.js b/pages/slack/_middleware.js deleted file mode 100644 index ba355892..00000000 --- a/pages/slack/_middleware.js +++ /dev/null @@ -1,14 +0,0 @@ -import { NextResponse } from 'next/server' -import country from 'country-list-js'; - -export function middleware(req) { - let url = req.nextUrl - if(!url.searchParams.get("continent")){ - let continent = country.findByIso2(req.geo.country || "AU").continent - if(continent == "Oceania"){ - continent = "Australia" - } - url.searchParams.set("continent", continent) - return NextResponse.redirect(url) - } -} diff --git a/yarn.lock b/yarn.lock index 46517884..08edf553 100644 --- a/yarn.lock +++ b/yarn.lock @@ -579,10 +579,10 @@ resolved "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz" integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA== -"@next/env@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/env/-/env-12.1.6.tgz#5f44823a78335355f00f1687cfc4f1dafa3eca08" - integrity sha512-Te/OBDXFSodPU6jlXYPAXpmZr/AkG6DCATAxttQxqOWaq6eDFX25Db3dK0120GZrSZmv4QCe9KsZmJKDbWs4OA== +"@next/env@12.2.2": + version "12.2.2" + resolved "https://registry.yarnpkg.com/@next/env/-/env-12.2.2.tgz#cc1a0a445bd254499e30f632968c03192455f4cc" + integrity sha512-BqDwE4gDl1F608TpnNxZqrCn6g48MBjvmWFEmeX5wEXDXh3IkAOw6ASKUgjT8H4OUePYFqghDFUss5ZhnbOUjw== "@next/eslint-plugin-next@12.2.2": version "12.2.2" @@ -596,65 +596,70 @@ resolved "https://registry.yarnpkg.com/@next/mdx/-/mdx-12.2.2.tgz#1cb24269a7871a728becf7854286f505b667acf3" integrity sha512-d+yHApu6weFYrAbDj+2vMY3uE8kAnoNu5g3w8B3m3skUh6r1ekkKM2YTktlpNpum/XMnKGiPrIdAX4L4KuVdYg== -"@next/swc-android-arm-eabi@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.6.tgz#79a35349b98f2f8c038ab6261aa9cd0d121c03f9" - integrity sha512-BxBr3QAAAXWgk/K7EedvzxJr2dE014mghBSA9iOEAv0bMgF+MRq4PoASjuHi15M2zfowpcRG8XQhMFtxftCleQ== +"@next/swc-android-arm-eabi@12.2.2": + version "12.2.2" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.2.2.tgz#f6c4111e6371f73af6bf80c9accb3d96850a92cd" + integrity sha512-VHjuCHeq9qCprUZbsRxxM/VqSW8MmsUtqB5nEpGEgUNnQi/BTm/2aK8tl7R4D0twGKRh6g1AAeFuWtXzk9Z/vQ== -"@next/swc-android-arm64@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.1.6.tgz#ec08ea61794f8752c8ebcacbed0aafc5b9407456" - integrity sha512-EboEk3ROYY7U6WA2RrMt/cXXMokUTXXfnxe2+CU+DOahvbrO8QSWhlBl9I9ZbFzJx28AGB9Yo3oQHCvph/4Lew== +"@next/swc-android-arm64@12.2.2": + version "12.2.2" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.2.2.tgz#b69de59c51e631a7600439e7a8993d6e82f3369e" + integrity sha512-v5EYzXUOSv0r9mO/2PX6mOcF53k8ndlu9yeFHVAWW1Dhw2jaJcvTRcCAwYYN8Q3tDg0nH3NbEltJDLKmcJOuVA== -"@next/swc-darwin-arm64@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.6.tgz#d1053805615fd0706e9b1667893a72271cd87119" - integrity sha512-P0EXU12BMSdNj1F7vdkP/VrYDuCNwBExtRPDYawgSUakzi6qP0iKJpya2BuLvNzXx+XPU49GFuDC5X+SvY0mOw== +"@next/swc-darwin-arm64@12.2.2": + version "12.2.2" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.2.2.tgz#80157c91668eff95b72d052428c353eab0fc4c50" + integrity sha512-JCoGySHKGt+YBk7xRTFGx1QjrnCcwYxIo3yGepcOq64MoiocTM3yllQWeOAJU2/k9MH0+B5E9WUSme4rOCBbpA== -"@next/swc-darwin-x64@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.6.tgz#2d1b926a22f4c5230d5b311f9c56cfdcc406afec" - integrity sha512-9FptMnbgHJK3dRDzfTpexs9S2hGpzOQxSQbe8omz6Pcl7rnEp9x4uSEKY51ho85JCjL4d0tDLBcXEJZKKLzxNg== +"@next/swc-darwin-x64@12.2.2": + version "12.2.2" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.2.2.tgz#12be2f58e676fccff3d48a62921b9927ed295133" + integrity sha512-dztDtvfkhUqiqpXvrWVccfGhLe44yQ5tQ7B4tBfnsOR6vxzI9DNPHTlEOgRN9qDqTAcFyPxvg86mn4l8bB9Jcw== -"@next/swc-linux-arm-gnueabihf@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.6.tgz#c021918d2a94a17f823106a5e069335b8a19724f" - integrity sha512-PvfEa1RR55dsik/IDkCKSFkk6ODNGJqPY3ysVUZqmnWMDSuqFtf7BPWHFa/53znpvVB5XaJ5Z1/6aR5CTIqxPw== +"@next/swc-freebsd-x64@12.2.2": + version "12.2.2" + resolved "https://registry.yarnpkg.com/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.2.2.tgz#de1363431a49059f1efb8c0f86ce6a79c53b3a95" + integrity sha512-JUnXB+2xfxqsAvhFLPJpU1NeyDsvJrKoOjpV7g3Dxbno2Riu4tDKn3kKF886yleAuD/1qNTUCpqubTvbbT2VoA== -"@next/swc-linux-arm64-gnu@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.6.tgz#ac55c07bfabde378dfa0ce2b8fc1c3b2897e81ae" - integrity sha512-53QOvX1jBbC2ctnmWHyRhMajGq7QZfl974WYlwclXarVV418X7ed7o/EzGY+YVAEKzIVaAB9JFFWGXn8WWo0gQ== +"@next/swc-linux-arm-gnueabihf@12.2.2": + version "12.2.2" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.2.2.tgz#d5b8e0d1bb55bbd9db4d2fec018217471dc8b9e6" + integrity sha512-XeYC/qqPLz58R4pjkb+x8sUUxuGLnx9QruC7/IGkK68yW4G17PHwKI/1njFYVfXTXUukpWjcfBuauWwxp9ke7Q== -"@next/swc-linux-arm64-musl@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.6.tgz#e429f826279894be9096be6bec13e75e3d6bd671" - integrity sha512-CMWAkYqfGdQCS+uuMA1A2UhOfcUYeoqnTW7msLr2RyYAys15pD960hlDfq7QAi8BCAKk0sQ2rjsl0iqMyziohQ== +"@next/swc-linux-arm64-gnu@12.2.2": + version "12.2.2" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.2.2.tgz#3bc75984e1d5ec8f59eb53702cc382d8e1be2061" + integrity sha512-d6jT8xgfKYFkzR7J0OHo2D+kFvY/6W8qEo6/hmdrTt6AKAqxs//rbbcdoyn3YQq1x6FVUUd39zzpezZntg9Naw== -"@next/swc-linux-x64-gnu@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.6.tgz#1f276c0784a5ca599bfa34b2fcc0b38f3a738e08" - integrity sha512-AC7jE4Fxpn0s3ujngClIDTiEM/CQiB2N2vkcyWWn6734AmGT03Duq6RYtPMymFobDdAtZGFZd5nR95WjPzbZAQ== +"@next/swc-linux-arm64-musl@12.2.2": + version "12.2.2" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.2.2.tgz#270db73e07a18d999f61e79a917943fa5bc1ef56" + integrity sha512-rIZRFxI9N/502auJT1i7coas0HTHUM+HaXMyJiCpnY8Rimbo0495ir24tzzHo3nQqJwcflcPTwEh/DV17sdv9A== -"@next/swc-linux-x64-musl@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.6.tgz#1d9933dd6ba303dcfd8a2acd6ac7c27ed41e2eea" - integrity sha512-c9Vjmi0EVk0Kou2qbrynskVarnFwfYIi+wKufR9Ad7/IKKuP6aEhOdZiIIdKsYWRtK2IWRF3h3YmdnEa2WLUag== +"@next/swc-linux-x64-gnu@12.2.2": + version "12.2.2" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.2.2.tgz#e6c72fa20478552e898c434f4d4c0c5e89d2ea78" + integrity sha512-ir1vNadlUDj7eQk15AvfhG5BjVizuCHks9uZwBfUgT5jyeDCeRvaDCo1+Q6+0CLOAnYDR/nqSCvBgzG2UdFh9A== -"@next/swc-win32-arm64-msvc@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.6.tgz#2ef9837f12ca652b1783d72ecb86208906042f02" - integrity sha512-3UTOL/5XZSKFelM7qN0it35o3Cegm6LsyuERR3/OoqEExyj3aCk7F025b54/707HTMAnjlvQK3DzLhPu/xxO4g== +"@next/swc-linux-x64-musl@12.2.2": + version "12.2.2" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.2.2.tgz#b9ef9efe2c401839cdefa5e70402386aafdce15a" + integrity sha512-bte5n2GzLN3O8JdSFYWZzMgEgDHZmRz5wiispiiDssj4ik3l8E7wq/czNi8RmIF+ioj2sYVokUNa/ekLzrESWw== -"@next/swc-win32-ia32-msvc@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.6.tgz#74003d0aa1c59dfa56cb15481a5c607cbc0027b9" - integrity sha512-8ZWoj6nCq6fI1yCzKq6oK0jE6Mxlz4MrEsRyu0TwDztWQWe7rh4XXGLAa2YVPatYcHhMcUL+fQQbqd1MsgaSDA== +"@next/swc-win32-arm64-msvc@12.2.2": + version "12.2.2" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.2.2.tgz#18fa7ec7248da3a7926a0601d9ececc53ac83157" + integrity sha512-ZUGCmcDmdPVSAlwJ/aD+1F9lYW8vttseiv4n2+VCDv5JloxiX9aY32kYZaJJO7hmTLNrprvXkb4OvNuHdN22Jg== -"@next/swc-win32-x64-msvc@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.6.tgz#a350caf42975e7197b24b495b8d764eec7e6a36e" - integrity sha512-4ZEwiRuZEicXhXqmhw3+de8Z4EpOLQj/gp+D9fFWo6ii6W1kBkNNvvEx4A90ugppu+74pT1lIJnOuz3A9oQeJA== +"@next/swc-win32-ia32-msvc@12.2.2": + version "12.2.2" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.2.2.tgz#54936e84f4a219441d051940354da7cd3eafbb4f" + integrity sha512-v7ykeEDbr9eXiblGSZiEYYkWoig6sRhAbLKHUHQtk8vEWWVEqeXFcxmw6LRrKu5rCN1DY357UlYWToCGPQPCRA== + +"@next/swc-win32-x64-msvc@12.2.2": + version "12.2.2" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.2.2.tgz#7460be700a60d75816f01109400b51fe929d7e89" + integrity sha512-2D2iinWUL6xx8D9LYVZ5qi7FP6uLAoWymt8m8aaG2Ld/Ka8/k723fJfiklfuAcwOxfufPJI+nRbT5VcgHGzHAQ== "@nodelib/fs.scandir@2.1.4": version "2.1.4" @@ -979,6 +984,13 @@ "@styled-system/core" "^5.1.2" "@styled-system/css" "^5.1.5" +"@swc/helpers@0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.2.tgz#ed1f6997ffbc22396665d9ba74e2a5c0a2d782f8" + integrity sha512-556Az0VX7WR6UdoTn4htt/l3zPQ7bsQWK+HqdG4swV7beUCxo/BqmvbOpUkTIm/9ih86LIf1qsUnywNL3obGHw== + dependencies: + tslib "^2.4.0" + "@theme-ui/color-modes@0.14.6": version "0.14.6" resolved "https://registry.yarnpkg.com/@theme-ui/color-modes/-/color-modes-0.14.6.tgz#68f70c6e976ab317e435059a0f9501ca607f1888" @@ -2995,28 +3007,31 @@ next-transpile-modules@^9.0.0: enhanced-resolve "^5.7.0" escalade "^3.1.1" -next@^12.1.6: - version "12.1.6" - resolved "https://registry.yarnpkg.com/next/-/next-12.1.6.tgz#eb205e64af1998651f96f9df44556d47d8bbc533" - integrity sha512-cebwKxL3/DhNKfg9tPZDQmbRKjueqykHHbgaoG4VBRH3AHQJ2HO0dbKFiS1hPhe1/qgc2d/hFeadsbPicmLD+A== +next@^12.2.2: + version "12.2.2" + resolved "https://registry.yarnpkg.com/next/-/next-12.2.2.tgz#029bf5e4a18a891ca5d05b189b7cd983fd22c072" + integrity sha512-zAYFY45aBry/PlKONqtlloRFqU/We3zWYdn2NoGvDZkoYUYQSJC8WMcalS5C19MxbCZLUVCX7D7a6gTGgl2yLg== dependencies: - "@next/env" "12.1.6" + "@next/env" "12.2.2" + "@swc/helpers" "0.4.2" caniuse-lite "^1.0.30001332" postcss "8.4.5" styled-jsx "5.0.2" + use-sync-external-store "1.1.0" optionalDependencies: - "@next/swc-android-arm-eabi" "12.1.6" - "@next/swc-android-arm64" "12.1.6" - "@next/swc-darwin-arm64" "12.1.6" - "@next/swc-darwin-x64" "12.1.6" - "@next/swc-linux-arm-gnueabihf" "12.1.6" - "@next/swc-linux-arm64-gnu" "12.1.6" - "@next/swc-linux-arm64-musl" "12.1.6" - "@next/swc-linux-x64-gnu" "12.1.6" - "@next/swc-linux-x64-musl" "12.1.6" - "@next/swc-win32-arm64-msvc" "12.1.6" - "@next/swc-win32-ia32-msvc" "12.1.6" - "@next/swc-win32-x64-msvc" "12.1.6" + "@next/swc-android-arm-eabi" "12.2.2" + "@next/swc-android-arm64" "12.2.2" + "@next/swc-darwin-arm64" "12.2.2" + "@next/swc-darwin-x64" "12.2.2" + "@next/swc-freebsd-x64" "12.2.2" + "@next/swc-linux-arm-gnueabihf" "12.2.2" + "@next/swc-linux-arm64-gnu" "12.2.2" + "@next/swc-linux-arm64-musl" "12.2.2" + "@next/swc-linux-x64-gnu" "12.2.2" + "@next/swc-linux-x64-musl" "12.2.2" + "@next/swc-win32-arm64-msvc" "12.2.2" + "@next/swc-win32-ia32-msvc" "12.2.2" + "@next/swc-win32-x64-msvc" "12.2.2" node-fetch@^2.6.7: version "2.6.7" @@ -3851,6 +3866,11 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + tsparticles-engine@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/tsparticles-engine/-/tsparticles-engine-2.0.6.tgz#27e85d8d014a2d9435ffc9a2c7efd570baf6dc64" @@ -4007,6 +4027,11 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +use-sync-external-store@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.1.0.tgz#3343c3fe7f7e404db70f8c687adf5c1652d34e82" + integrity sha512-SEnieB2FPKEVne66NpXPd1Np4R1lTNKfjuy3XdIoPQKYBAFdzbzSZlSn1KJZUiihQLQC5Znot4SBz1EOTBwQAQ== + uuid@^3.3.2: version "3.4.0" resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz"