i18n prototype

proto/trying-alternative-approach
Alex van Andel 2021-12-06 00:51:02 +01:00
parent 943449ce3d
commit bfc09c5d85
10 changed files with 111 additions and 117 deletions

1
next-env.d.ts vendored
View File

@ -1,5 +1,4 @@
/// <reference types="next" />
/// <reference types="next/types/global" />
/// <reference types="next/image-types/global" />
// NOTE: This file should not be edited

View File

@ -1,5 +1,6 @@
/* eslint-disable @typescript-eslint/no-var-requires */
const withTM = require("@vercel/edge-functions-ui/transpile")(["react-timezone-select"]);
const path = require("path");
// So we can test deploy previews preview
if (process.env.VERCEL_URL && !process.env.BASE_URL) {
@ -61,6 +62,12 @@ module.exports = () => plugins.reduce((acc, next) => next(acc), {
typescript: {
ignoreBuildErrors: true,
},
i18n: {
defaultLocale: "default",
localeDetection: false,
locales: ["default", "en", "fr", "it", "ru", "es", "de", "pt", "ro", "nl", "pt-BR", "es-419", "ko", "ja"],
},
localePath: path.resolve("./public/static/locales"),
webpack: (config) => {
config.resolve.fallback = {
...config.resolve.fallback, // if you miss it, all the other options in fallback, specified

View File

@ -68,7 +68,7 @@
"jimp": "^0.16.1",
"lodash": "^4.17.21",
"micro": "^9.3.4",
"next": "^12.0.4",
"next": "v12.0.8-canary.0",
"next-auth": "^3.29.0",
"next-i18next": "^8.9.0",
"next-seo": "^4.26.0",
@ -91,8 +91,8 @@
"react-use-intercom": "1.4.0",
"short-uuid": "^4.2.0",
"stripe": "^8.191.0",
"tsdav": "^1.1.5",
"superjson": "1.8.0",
"tsdav": "^1.1.5",
"tslog": "^3.2.1",
"uuid": "^8.3.2",
"zod": "^3.8.2"

View File

@ -1,5 +0,0 @@
/**
* Needed for `_middleware.ts` to work properly
* We can decide later what should happen when a user tries to access a locale root.
*/
export default () => null;

View File

@ -44,6 +44,8 @@ export default function User(props: inferSSRProps<typeof getStaticProps>) {
const { user, eventTypes } = query.data;
const nameOrUsername = user.name || user.username || "";
console.log(router.locale);
return (
<>
<HeadSeo

View File

@ -1,35 +1,20 @@
/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
import { NextRequest, NextResponse } from "next/server";
import { i18n } from "../next-i18next.config";
const REDIRECTED_PAGES = ["/[locale]", "/[locale]/[user]"];
const PUBLIC_FILE = /\.(.*)$/;
export async function middleware(req: NextRequest) {
const pageName = req.page.name;
const pathname = req.nextUrl.pathname;
if (!pathname || !pageName) {
return;
}
const parts = pathname.split("/").filter(Boolean);
const [firstPart] = parts;
const isFileRequest = pathname.includes(".");
if (!REDIRECTED_PAGES.includes(pageName) || isFileRequest || i18n.locales.includes(firstPart)) {
return;
}
const localeWithCountry = req.headers.get("accept-language")?.split(",")?.[0] || "en-US";
const locale = localeWithCountry.split("-")[0];
const newPathname = `/${locale}${pathname}`;
console.log("redirect", { pathname, newPathname });
req.nextUrl.pathname = newPathname;
const shouldHandleLocale =
!PUBLIC_FILE.test(req.nextUrl.pathname) &&
!req.nextUrl.pathname.includes("/api/") &&
req.nextUrl.locale === "default";
if (shouldHandleLocale) {
req.nextUrl.locale = locale;
return NextResponse.rewrite(req.nextUrl);
}
}

View File

@ -0,0 +1 @@
{}

175
yarn.lock
View File

@ -1145,20 +1145,20 @@
dependencies:
webpack-bundle-analyzer "4.3.0"
"@next/env@12.0.4":
version "12.0.4"
resolved "https://registry.yarnpkg.com/@next/env/-/env-12.0.4.tgz#effe19526fa51ab2da1a39e594b80a257b3fa1c5"
integrity sha512-QtZ6X5c6Zqa7oWs5csEmZ7xy+gLdtRKKg02SOT5l0Ziea4P5IU8mSOCyNC4fZmXewcRVjpbY+yGqAAP7hJUfOA==
"@next/env@12.0.8-canary.0":
version "12.0.8-canary.0"
resolved "https://registry.yarnpkg.com/@next/env/-/env-12.0.8-canary.0.tgz#a8cd07c21c48fcd94825431e0a4e82957222220a"
integrity sha512-r6Wilr06iYGXdR+IsdHsaUQAAYIZHFS9whKjDcsWDDjqNSfG8yYRpeYZyLNNp2qMX5SCt9JopNietjSDJZsZjA==
"@next/polyfill-module@12.0.4":
version "12.0.4"
resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-12.0.4.tgz#ef4f4fd6d773ad655db1859ca71127e0c358af50"
integrity sha512-mk9yCDNpfXINTJKFTZNgwYs7eqRFpc5D/49O/fKB59blihyKl1GY1sZ0l7a2bn5l1X/WuaZzcIfqnrwkneqeaQ==
"@next/polyfill-module@12.0.8-canary.0":
version "12.0.8-canary.0"
resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-12.0.8-canary.0.tgz#1cf240c91c0927597ce06bed4d680432fbab4d12"
integrity sha512-SihzHZQHBclAXyz1KA/zSvuMXhO6xE74sWg7S2a3P+a+5j/70b5E2TrfD/qWnpwa+a/orww+5ymJmXFNUG1roQ==
"@next/react-dev-overlay@12.0.4":
version "12.0.4"
resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-12.0.4.tgz#c97113df84986233c62eed37382aab85a0ec006e"
integrity sha512-9O0lXyzv5goFSmDwq9Hp8JE+DcObvd+bTXvmGSSvYR91AlIoVlH8/PwATx8Rf5YEuqggn/XKR1hn2kBYcbcGnA==
"@next/react-dev-overlay@12.0.8-canary.0":
version "12.0.8-canary.0"
resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-12.0.8-canary.0.tgz#6c65a471cfc9b5ad511f6c5bfad006d2bcded673"
integrity sha512-ayy/NaneonstTbfU6JV553VBpbNHD1yUAZpsxEqmCOYT+N9K0ZtyMdl8X59stkXWyS8Thb1mUALwZqhrPNPHPA==
dependencies:
"@babel/code-frame" "7.12.11"
anser "1.4.9"
@ -1172,65 +1172,65 @@
stacktrace-parser "0.1.10"
strip-ansi "6.0.1"
"@next/react-refresh-utils@12.0.4":
version "12.0.4"
resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-12.0.4.tgz#20d43626498c451f71bb0bb26c3f780ad90f5fd6"
integrity sha512-kNUDmpBaJ+8Lb8CtKNynRFF9oijCjUKKru6Ont+JKhti9//5dNFFIcuo607bJSH86un06OEK0TZUt5XWVlbkjw==
"@next/react-refresh-utils@12.0.8-canary.0":
version "12.0.8-canary.0"
resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-12.0.8-canary.0.tgz#83e8c8fce1559e7f6fce0832880666f99834f078"
integrity sha512-h3czLlaEFogOUkmTeisIy3RmWFAeApwVGqdg3dFNIFA6mSrRHGT3AVvJ2KFC9iPgheXhwVESYlXSVp5aEq/YmQ==
"@next/swc-android-arm64@12.0.4":
version "12.0.4"
resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.0.4.tgz#e3ad69d3aadbd1d3ff0768b4f02b66c3806aa6b2"
integrity sha512-6mXumia8ZPcy7bYu9kjItfWxrE6SFaJyqQDaFy9G9WrU9x3M1R1Yok8B2X1mboM8itD0tq+t3R/ebQEkkmevUw==
"@next/swc-android-arm64@12.0.8-canary.0":
version "12.0.8-canary.0"
resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.0.8-canary.0.tgz#65b9c6979773a5b5f7875fc05398cab2f7bbbf43"
integrity sha512-sy9LwswHfD3uZq99gF1hgpgjiwhsHJsa7/kdQ6narkKq6M7/Fq7H+n3zZxtkw3bkqROMwn7Q+Id+sfC5pusuPw==
"@next/swc-darwin-arm64@12.0.4":
version "12.0.4"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.0.4.tgz#bc083ed3ad5e6971d2f374f38a7d8f3c46a6de0a"
integrity sha512-7WMen1qhF5JmjKD9S5IEgEoaPJOXyIZj/Nsqa8ZSWxdF5oogp3uYYbKb/rvMYoKzpIbjyoLH/OCM5lm5IFM4iw==
"@next/swc-darwin-arm64@12.0.8-canary.0":
version "12.0.8-canary.0"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.0.8-canary.0.tgz#fadbe66aa2ad69eaa69571e92c2294695a5ceb62"
integrity sha512-/07QfJA2ZKsFGkYAfLykZv5vFLNyXguVry0JaMSvljZlnu67U/xPMi+KZau3XB2S7enZzuS3NijLjGKxbOCIZw==
"@next/swc-darwin-x64@12.0.4":
version "12.0.4"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.0.4.tgz#84855d4c9fef3b3a094c0f2424ae2b7e6dc29caa"
integrity sha512-PVgefMWjxP6CU1HQs39+Bfpjcue6qErJfvJ/+n2zimjLzyeQAmD6LM9f1lDSttW2LjKjasoxR5qkRNLVlqzlaA==
"@next/swc-darwin-x64@12.0.8-canary.0":
version "12.0.8-canary.0"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.0.8-canary.0.tgz#4e47324f2cb9caed816ab9271afb5f7fac333315"
integrity sha512-1XpWD4ikiZkC6n3NNGeWHeWmtVSA0nqUTZrzP+VApGdjSSmfmAmCx7ojzLvb+2BJdpmWrZo7+6cW/kdWrWMATQ==
"@next/swc-linux-arm-gnueabihf@12.0.4":
version "12.0.4"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.0.4.tgz#090156c4fc88d86ebc67df35e99daa97ddb232de"
integrity sha512-8xGQu3sJiIdriKiCux3jDJ9pwivELEg7z2zfW0CqmQMbKNB7qP9lc0pq6CxshtKyXRMczNWRMtQ3Cjwep+UvNg==
"@next/swc-linux-arm-gnueabihf@12.0.8-canary.0":
version "12.0.8-canary.0"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.0.8-canary.0.tgz#31808c002725085d13f0620b139824e123e16f17"
integrity sha512-VTI4/tzu12OYIDRizMyDXjjoVmsnzyWrYDJtJRFF3oap4o15KVP+AHiVD/Vhrwdu/20RLd1+4EzLosRcTWhuzg==
"@next/swc-linux-arm64-gnu@12.0.4":
version "12.0.4"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.0.4.tgz#3ddda6eb703eda411b117d1974f08e028bb987ed"
integrity sha512-HhEWcBkqGr3E7SYLtN9VnYUGamAWaLcXawHN33Em0WP7gzXrBqz0iIJNH7uEzHDS6980EqU/rrkLyhCHrYSZgQ==
"@next/swc-linux-arm64-gnu@12.0.8-canary.0":
version "12.0.8-canary.0"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.0.8-canary.0.tgz#3fafe976ef531b4b9808e0a3004b68965f0cabd1"
integrity sha512-GsNTJc5YKjp1L1b3jPrhtP/RQSZ55REMETvhsHmwbx+Pgajx5BzovuRtiiBQsVjLBhV78cPGU4MiF5xJH6jVlA==
"@next/swc-linux-arm64-musl@12.0.4":
version "12.0.4"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.0.4.tgz#a17985b811166bb3598816009e5f025539827c21"
integrity sha512-oZyQ9wjtE7OX9RlnovP7izNx2AR/RzTuYWU4Ttim8ssABsipQSxSlfRaeb+Qi6jTc6k+lrPhjRfaZ+fGv/m2Ag==
"@next/swc-linux-arm64-musl@12.0.8-canary.0":
version "12.0.8-canary.0"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.0.8-canary.0.tgz#2e7e8bed1c9de2a895e2e1f7e5e2625f2c610400"
integrity sha512-KdIY183Ixsx3s/gND868sVamwPH19cflnCNNWwPShqmQLTj2yaf7iRtnieyFi9j7mL2ptTgLEN0So4IcNk8gGA==
"@next/swc-linux-x64-gnu@12.0.4":
version "12.0.4"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.0.4.tgz#46fa9f4a4d381d41c0fc75912810e72468b0fb49"
integrity sha512-aBuf78QzL93T59Lk9kEGfHcA+9SzYIH7dGon1nqVxtAd2iqicKYNVaVcb38VKeiIBXMSUHXTdu6Ee053ZCOmSw==
"@next/swc-linux-x64-gnu@12.0.8-canary.0":
version "12.0.8-canary.0"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.0.8-canary.0.tgz#597d1dd581855a7c95d4110734cff884ff4b8058"
integrity sha512-jLxv1/K0i2jx9Vhqp/XGSilwgMsJ0mtNEuqLnHQ0Q8y/uDCrMA+dLcWtcXhIgUXcJCQYhADx8cDw6UftvPWnjg==
"@next/swc-linux-x64-musl@12.0.4":
version "12.0.4"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.0.4.tgz#5e07982c84df77ddad537f3abca7d0f52504fc08"
integrity sha512-yDgqUqL4H8M3Y0hv30ZyL9UvjnK4iXmD4I6iJz+XIHSRdA/VUiyKKoL7okf9hxr0mSxBtagbZ5A3qEoW/VliUQ==
"@next/swc-linux-x64-musl@12.0.8-canary.0":
version "12.0.8-canary.0"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.0.8-canary.0.tgz#78984b7da687615a202dda480e3f5c463a8f6a3d"
integrity sha512-n5xQswT0sws5PfF3bnquOz8yrUeUTsRvEFhVZjP2M8MD33uwhBgnAHG616abpH/dxs2GjqheFRrACJo+/dP1dQ==
"@next/swc-win32-arm64-msvc@12.0.4":
version "12.0.4"
resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.0.4.tgz#17705a3d20b35fddd2f61c4d2e491bbf6909e71a"
integrity sha512-evDUrEYsUo+PMHsedaymfZO98VwV9wNFzuWVCyKgqg6SD1ZRpzbpqYQY7aINIuqZVdIWZElBE6EM+oxaj7PuWQ==
"@next/swc-win32-arm64-msvc@12.0.8-canary.0":
version "12.0.8-canary.0"
resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.0.8-canary.0.tgz#360f3b2ed7609793021b6b3325320f6ff5d8f84a"
integrity sha512-6FF/8j2WL3nPtjXHAlARsE61ukIm6E7qwg6m0vTYC+OBeWKDARddKo5fx44vjwNr1RN9Qu1q1vecVvbyspwp3Q==
"@next/swc-win32-ia32-msvc@12.0.4":
version "12.0.4"
resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.0.4.tgz#a2a6d5c09a07c62d3a6b5b6dbc4443b566b8385b"
integrity sha512-Lbmz0xlo8vW4EDWyzCfy3nGfqt7skqwxaERwe+vDVTBZ56mvJ5dsdyjqK24sxu4FFkWR7SaU4eNlHwZR+A3kTg==
"@next/swc-win32-ia32-msvc@12.0.8-canary.0":
version "12.0.8-canary.0"
resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.0.8-canary.0.tgz#e00d165179c71c653f6c55df61395b276a8ec70b"
integrity sha512-dl8JkZToSCCQ3CZ5gCaJtpuMwRU4KLGXqp4G70QACl6Ew2dZRaYsUZf1riEI93ha6ZL1T3QIE8v70M3dRzaA9Q==
"@next/swc-win32-x64-msvc@12.0.4":
version "12.0.4"
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.0.4.tgz#acb9ffb17118b797d8c76dd688dd0aec5fa65cd4"
integrity sha512-f+7WNIJOno5QEelrmob+3vN5EZJb3KCkOrnvUsQ0+LCCD0dIPIhCjeHAh3BGj9msGu8ijnXvD7JxVxE5V26cnQ==
"@next/swc-win32-x64-msvc@12.0.8-canary.0":
version "12.0.8-canary.0"
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.0.8-canary.0.tgz#6467f0bd586f7e5d8568a6f5d32ce3270095efdb"
integrity sha512-GTK9cGoveMZWsoxtpYMDShN6Yj5+0Kykeb3+X7P498c6+1JJzj3DLG0GPorE8IZ9IFnGqFlsZFbkzc9t4bR5Vw==
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
@ -3628,7 +3628,12 @@ ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11:
dependencies:
safe-buffer "^5.0.1"
electron-to-chromium@^1.3.723, electron-to-chromium@^1.3.896:
electron-to-chromium@^1.3.723:
version "1.4.11"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.11.tgz#303c9deebbe90c68bf5c2c81a88a3bf4522c8810"
integrity sha512-2OhsaYgsWGhWjx2et8kaUcdktPbBGjKM2X0BReUCKcSCPttEY+hz2zie820JLbttU8jwL92+JJysWwkut3wZgA==
electron-to-chromium@^1.3.896:
version "1.4.10"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.10.tgz#5f44ae6f6725b1949d6e8d34352f80d4c1880734"
integrity sha512-tFgA40Iq2oy4k2PnZrLJowbgpij+lD6ZLxkw8Ht1NKTYyN8dvSvC5xlo8X0WW2jqhKSzITrbr5mpB4/AZ/8OUA==
@ -6575,18 +6580,18 @@ next-transpile-modules@^9.0.0:
enhanced-resolve "^5.7.0"
escalade "^3.1.1"
next@^12.0.4:
version "12.0.4"
resolved "https://registry.yarnpkg.com/next/-/next-12.0.4.tgz#096578b320f0faf0bd51798decb39aaf00052efe"
integrity sha512-1pvjcSZBm5OLoGmDhp4JwKwIE798WbqUNLuyU7w6a2jUkdWaxOYtkE/ROXQTi2pXHj7+6rm68AvhxROLX2NHQg==
next@v12.0.8-canary.0:
version "12.0.8-canary.0"
resolved "https://registry.yarnpkg.com/next/-/next-12.0.8-canary.0.tgz#77e709178fac8004f404fccc6083fa66f589ce2f"
integrity sha512-nPF0o5QQQLZ4ntOh6wRf2EvapppG2sCCXj0zK8RitmNfB6sH2Un/je+uRNubtuyQCdGwZNm12Flj0xE/S0I9MA==
dependencies:
"@babel/runtime" "7.15.4"
"@hapi/accept" "5.0.2"
"@napi-rs/triples" "1.0.3"
"@next/env" "12.0.4"
"@next/polyfill-module" "12.0.4"
"@next/react-dev-overlay" "12.0.4"
"@next/react-refresh-utils" "12.0.4"
"@next/env" "12.0.8-canary.0"
"@next/polyfill-module" "12.0.8-canary.0"
"@next/react-dev-overlay" "12.0.8-canary.0"
"@next/react-refresh-utils" "12.0.8-canary.0"
acorn "8.5.0"
assert "2.0.0"
browserify-zlib "0.2.0"
@ -6628,19 +6633,19 @@ next@^12.0.4:
use-subscription "1.5.1"
util "0.12.4"
vm-browserify "1.1.2"
watchpack "2.1.1"
watchpack "2.3.0"
optionalDependencies:
"@next/swc-android-arm64" "12.0.4"
"@next/swc-darwin-arm64" "12.0.4"
"@next/swc-darwin-x64" "12.0.4"
"@next/swc-linux-arm-gnueabihf" "12.0.4"
"@next/swc-linux-arm64-gnu" "12.0.4"
"@next/swc-linux-arm64-musl" "12.0.4"
"@next/swc-linux-x64-gnu" "12.0.4"
"@next/swc-linux-x64-musl" "12.0.4"
"@next/swc-win32-arm64-msvc" "12.0.4"
"@next/swc-win32-ia32-msvc" "12.0.4"
"@next/swc-win32-x64-msvc" "12.0.4"
"@next/swc-android-arm64" "12.0.8-canary.0"
"@next/swc-darwin-arm64" "12.0.8-canary.0"
"@next/swc-darwin-x64" "12.0.8-canary.0"
"@next/swc-linux-arm-gnueabihf" "12.0.8-canary.0"
"@next/swc-linux-arm64-gnu" "12.0.8-canary.0"
"@next/swc-linux-arm64-musl" "12.0.8-canary.0"
"@next/swc-linux-x64-gnu" "12.0.8-canary.0"
"@next/swc-linux-x64-musl" "12.0.8-canary.0"
"@next/swc-win32-arm64-msvc" "12.0.8-canary.0"
"@next/swc-win32-ia32-msvc" "12.0.8-canary.0"
"@next/swc-win32-x64-msvc" "12.0.8-canary.0"
nice-try@^1.0.4:
version "1.0.5"
@ -9255,10 +9260,10 @@ walker@^1.0.7:
dependencies:
makeerror "1.0.12"
watchpack@2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.1.tgz#e99630550fca07df9f90a06056987baa40a689c7"
integrity sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==
watchpack@2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.0.tgz#a41bca3da6afaff31e92a433f4c856a0c25ea0c4"
integrity sha512-MnN0Q1OsvB/GGHETrFeZPQaOelWh/7O+EiFlj8sM9GPjtQkis7k01aAxrg/18kTfoIVcLL+haEVFlXDaSRwKRw==
dependencies:
glob-to-regexp "^0.4.1"
graceful-fs "^4.1.2"