diff --git a/example/src/App.jsx b/example/src/App.jsx
index 3fb6fc0..c8381eb 100644
--- a/example/src/App.jsx
+++ b/example/src/App.jsx
@@ -5,7 +5,7 @@ import UseQueryParamCode from '!!raw-loader!./UseQueryParam'
import UseRouteParamCode from '!!raw-loader!./UseRouteParam'
import { Box, Card, CardContent, CardMedia, Typography } from '@material-ui/core'
import React from 'react'
-import { BrowserRouter, Route, Switch } from 'react-router-dom'
+import { BrowserRouter, Route, Routes } from 'react-router-dom'
import SyntaxHighlighter from 'react-syntax-highlighter'
import CreateLinkWithState from './CreateLinkWithState'
import UseArrayQueryKey from './UseArrayQueryKey'
@@ -64,9 +64,11 @@ const App = () => {
return (
-
-
-
+
+
+
+
+
)
}
diff --git a/example/src/UseQueryParam.jsx b/example/src/UseQueryParam.jsx
index cdc2698..da8f1fd 100644
--- a/example/src/UseQueryParam.jsx
+++ b/example/src/UseQueryParam.jsx
@@ -1,17 +1,17 @@
-import { Box, TextField, Typography } from '@material-ui/core'
+import { Box, TextField } from '@material-ui/core'
import React from 'react'
import { useQueryString } from 'use-route-as-state'
import SearchList from './SearchList'
const UseQueryParam = () => {
- const [params, updateParams] = useQueryString()
+ const [params, updateParams] = useQueryString({ qParam: '' })
const onChange = (e) => updateParams({ [e.target.id]: e.target.value })
return
-
+
}
diff --git a/example/src/UseRouteParam.jsx b/example/src/UseRouteParam.jsx
index 70ad5f9..8da535a 100644
--- a/example/src/UseRouteParam.jsx
+++ b/example/src/UseRouteParam.jsx
@@ -1,10 +1,10 @@
import { Box, TextField, Typography } from '@material-ui/core'
import React from 'react'
-import { Route, Switch, useRouteMatch } from 'react-router-dom'
+import { Route, Routes, useRouteMatch } from 'react-router-dom'
import { useRouteParams } from 'use-route-as-state'
const UseRouteParam = () => {
- const [params, updateParams] = useRouteParams()
+ const [params, updateParams] = useRouteParams({ rParam: '' })
const onChange = (e) => updateParams(e.target.value && { [e.target.id]: e.target.value })
@@ -18,7 +18,9 @@ const UseRouteParam = () => {
export default () => {
const { path } = useRouteMatch()
- return
-
-
+ return
+
+
+
+
}
diff --git a/example/yarn.lock b/example/yarn.lock
index 40d8dcb..04648a0 100644
--- a/example/yarn.lock
+++ b/example/yarn.lock
@@ -1172,6 +1172,13 @@
dependencies:
regenerator-runtime "^0.13.4"
+"@babel/runtime@^7.7.6":
+ version "7.17.9"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72"
+ integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
"@babel/template@^7.10.4", "@babel/template@^7.16.0", "@babel/template@^7.3.3":
version "7.16.0"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6"
@@ -5563,6 +5570,13 @@ highlight.js@^10.1.1, highlight.js@~10.7.0:
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531"
integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==
+history@^5.2.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/history/-/history-5.3.0.tgz#1548abaa245ba47992f063a0783db91ef201c73b"
+ integrity sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==
+ dependencies:
+ "@babel/runtime" "^7.7.6"
+
hmac-drbg@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
@@ -9318,6 +9332,14 @@ react-refresh@^0.8.3:
"react-router-dom@link:../node_modules/react-router-dom":
version "0.0.0"
+ uid ""
+
+react-router@6.3.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.3.0.tgz#3970cc64b4cb4eae0c1ea5203a80334fdd175557"
+ integrity sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==
+ dependencies:
+ history "^5.2.0"
react-scripts@^4.0.1:
version "4.0.3"
@@ -9408,6 +9430,7 @@ react-transition-group@^4.4.0:
"react@link:../node_modules/react":
version "0.0.0"
+ uid ""
read-pkg-up@^7.0.1:
version "7.0.1"
@@ -11069,7 +11092,8 @@ url@^0.11.0:
querystring "0.2.0"
"use-route-as-state@link:..":
- version "0.0.0-development"
+ version "0.0.0"
+ uid ""
use@^3.1.0:
version "3.1.1"
diff --git a/package.json b/package.json
index 9c089b1..2e5e941 100644
--- a/package.json
+++ b/package.json
@@ -58,7 +58,7 @@
"@testing-library/react-hooks": "^7.0.0",
"@types/jest": "^26.0.13",
"@types/react": "^17.0.0",
- "@types/react-router-dom": "^5.1.5",
+ "@types/react-router-dom": "^5.2.0",
"@typescript-eslint/eslint-plugin": "^4.1.1",
"@typescript-eslint/parser": "^4.1.1",
"conventional-changelog-eslint": "^3.0.9",
@@ -66,9 +66,8 @@
"eslint": "^7.9.0",
"eslint-friendly-formatter": "^4.0.1",
"eslint-plugin-react-hooks": "^4.1.2",
- "history": "^4.0.0",
"react": "^17.0.1",
- "react-router-dom": "^5.2.0",
+ "react-router-dom": "^6.3.0",
"react-scripts": "^4.0.1",
"react-test-renderer": "^17.0.1",
"rollup": "^2.26.9",
diff --git a/src/deprecated/encodeDecode.ts b/src/deprecated/encodeDecode.ts
deleted file mode 100644
index 6a58de9..0000000
--- a/src/deprecated/encodeDecode.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import { useMemo } from "react"
-import { useLocation, useRouteMatch } from "react-router-dom"
-import { getQueryParamsAsObject } from "./helpers"
-import { State } from "./types"
-
-export const useDecodedLocation = () => {
- const { search, ...rest } = useLocation()
-
- const decodedSearch = useMemo(() => getQueryParamsAsObject(search), [search])
-
- return { search: decodedSearch, ...rest }
-}
-
-export const useDecodedRouteMatch = () => {
- const { params, ...rest } = useRouteMatch()
-
- const decodedParams = useMemo(() => decodeValues(params as T), [params])
-
- return { params: decodedParams, ...rest }
-}
-
-export const decodeValues = (obj: T) => Object.keys(obj)
- .reduce((acc, key) => ({
- ...acc,
- [key]: obj[key] && decodeURIComponent(obj[key])
- }), {} as T)
-
-export const encodeValues = (obj: T) => Object.keys(obj)
- .reduce((acc, key) => ({
- ...acc,
- [key]: obj[key] && encodeURIComponent(obj[key])
- }), {} as T)
\ No newline at end of file
diff --git a/src/deprecated/helpers.ts b/src/deprecated/helpers.ts
deleted file mode 100644
index 47e9453..0000000
--- a/src/deprecated/helpers.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { State } from "./types"
-
-export const getQueryParamsAsObject = (search: string) => {
- const params: State = {}
-
- new URLSearchParams(search).forEach((value, key) => params[key] = value)
-
- return params
-}
-
-export const removeUndefined = (obj: T) => Object.keys(obj)
- .filter((key) => obj[key] !== undefined)
- .reduce((acc, key) => ({
- ...acc,
- [key]: obj[key]
- }), {} as Partial)
-
-export const objectToQueryParams = (obj: State) => '?' + Object.keys(obj)
- .filter((key) => obj[key] !== undefined)
- .map((key) => `${key}=${obj[key]}`)
- .join('&')
diff --git a/src/deprecated/index.ts b/src/deprecated/index.ts
deleted file mode 100644
index 1014088..0000000
--- a/src/deprecated/index.ts
+++ /dev/null
@@ -1,50 +0,0 @@
-import { useCallback, useMemo } from 'react'
-import { generatePath, useHistory } from 'react-router-dom'
-import { encodeValues, useDecodedLocation, useDecodedRouteMatch } from './encodeDecode'
-import { objectToQueryParams, removeUndefined } from './helpers'
-import { State } from './types'
-
-/**
- *
- * @deprecated Use `useQueryString`
- */
-export const useQueryAsState = (defaultValues?: T): [T, (updatedParams: Partial) => void] => {
- const { pathname, search } = useDecodedLocation()
- const history = useHistory()
-
- const updateQuery = useCallback((updatedParams: Partial) => {
- history.replace(pathname + objectToQueryParams(encodeValues({ ...search, ...updatedParams })))
- }, [search, pathname, history])
-
- const queryWithDefault = useMemo(() => Object.assign({}, defaultValues, removeUndefined(search)), [search, defaultValues])
-
- return [queryWithDefault, updateQuery]
-}
-
-/**
- *
- * @deprecated Use `useQueryStringKey`
- */
-export const useQueryKeyAsState = (key: string, defaultValue?: string): [string, (updatedValue: string) => void] => {
- const [{ [key]: value }, updateQuery] = useQueryAsState(defaultValue === undefined ? undefined : { [key]: defaultValue })
- const updateKey = useCallback((newValue: string) => updateQuery({ [key]: newValue }), [updateQuery, key])
-
- return [value, updateKey]
-}
-
-/**
- *
- * @deprecated Use `useRouteParams`
- */
-export const useParamsAsState = (defaultValues?: T): [T, (updatedParams: Partial) => void] => {
- const { path, params } = useDecodedRouteMatch()
- const history = useHistory()
-
- const updateParams = useCallback((updatedParams: Partial) => {
- history.push(generatePath(path, encodeValues({ ...params, ...updatedParams })))
- }, [path, params, history])
-
- const paramsWithDefault = useMemo(() => Object.assign({}, defaultValues, removeUndefined(params)), [params, defaultValues])
-
- return [paramsWithDefault, updateParams]
-}
diff --git a/src/deprecated/types.ts b/src/deprecated/types.ts
deleted file mode 100644
index 6256c27..0000000
--- a/src/deprecated/types.ts
+++ /dev/null
@@ -1 +0,0 @@
-export type State = Record
\ No newline at end of file
diff --git a/src/encodeDecode.ts b/src/encodeDecode.ts
index c1efb62..55f5164 100644
--- a/src/encodeDecode.ts
+++ b/src/encodeDecode.ts
@@ -1,5 +1,5 @@
import { useMemo } from "react"
-import { useLocation, useRouteMatch } from "react-router-dom"
+import { useLocation, useMatch } from "react-router-dom"
import { getQueryParamsAsObject, removeUndefined } from "./helpers"
export const useDecodedLocation = () => {
@@ -11,24 +11,25 @@ export const useDecodedLocation = () => {
}
export const useDecodedRouteMatch = () => {
- const { params, ...rest } = useRouteMatch()
+ const match = useMatch('*')
+ const { params, path } = useMemo(() => ({ params: match?.params || {}, path: match?.pathname }), [match])
- const decodedParams = useMemo(() => decodeValues(params as Record), [params])
+ const decodedParams = useMemo(() => decodeValues(params), [params])
- return { params: decodedParams, ...rest }
+ return { params: decodedParams, path }
}
-export const decodeValues = (obj: Record) => {
+export const decodeValues = (obj: Record) => {
const data = Object.keys(obj).reduce((acc, key) => {
acc[key] = obj[key] && decodeURIComponent(obj[key] as string)
return acc
- }, {} as Record)
+ }, {} as Record)
return data
}
-export const encodeValues = >(obj: T) => {
+export const encodeValues = >(obj: T) => {
const data = Object.entries(removeUndefined(obj))
.reduce((acc, [key, value]) => {
diff --git a/src/index.ts b/src/index.ts
index 2b2c5e3..402c2b0 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,21 +1,20 @@
import { Dispatch, SetStateAction, useCallback, useMemo } from 'react'
-import { generatePath, useHistory } from 'react-router-dom'
+import { generatePath, useNavigate } from 'react-router-dom'
import { encodeValues, useDecodedLocation, useDecodedRouteMatch } from './encodeDecode'
import { objectToQueryParams, removeUndefined } from './helpers'
-export * from './deprecated'
type DispatchState = Dispatch>
type RouteObject = Record
-type ParamsRouteObject = Record
+type ParamsRouteObject = Record
export const useQueryString = (defaultValues?: RouteObject): [RouteObject, DispatchState] => {
const { pathname, search } = useDecodedLocation()
- const history = useHistory()
+ const navigate = useNavigate()
const updateQuery: DispatchState = useCallback((dispatch: SetStateAction) => {
const updatedParams = typeof dispatch === 'function' ? dispatch(search) : dispatch
- history.replace(pathname + objectToQueryParams(encodeValues(updatedParams)))
- }, [search, pathname, history])
+ navigate(pathname + objectToQueryParams(encodeValues(updatedParams)), { replace: true })
+ }, [search, pathname, navigate])
const queryWithDefault = useMemo(() => Object.assign({}, defaultValues, removeUndefined(search)), [search, defaultValues])
@@ -34,12 +33,12 @@ export const useQueryStringKey = (key: string, defaultValue?: string | string[])
export const useRouteParams = (defaultValues?: ParamsRouteObject): [ParamsRouteObject, DispatchState] => {
const { path, params } = useDecodedRouteMatch()
- const history = useHistory()
+ const navigate = useNavigate()
const updateParams = useCallback((dispatch: SetStateAction) => {
const updatedParams = typeof dispatch === 'function' ? dispatch(params) : dispatch
- history.push(generatePath(path, encodeValues(updatedParams)))
- }, [path, params, history])
+ navigate(generatePath(path, encodeValues(updatedParams)))
+ }, [path, params, navigate])
const paramsWithDefault = useMemo(() => Object.assign({}, defaultValues, removeUndefined(params)), [params, defaultValues])
@@ -51,7 +50,7 @@ export type UrlState = {
query: RouteObject
}
export const useUrlState = (defaultValues?: UrlState): [UrlState, DispatchState] => {
- const history = useHistory()
+ const navigate = useNavigate()
const { path, params } = useDecodedRouteMatch()
const { search } = useDecodedLocation()
@@ -59,8 +58,8 @@ export const useUrlState = (defaultValues?: UrlState): [UrlState, DispatchState<
const updatedState = typeof dispatch === 'function' ? dispatch({ params, query: search }) : dispatch
const updatedParams = encodeValues(updatedState.params)
const updatedQuery = objectToQueryParams(encodeValues(updatedState.query))
- history.push(generatePath(path, updatedParams) + updatedQuery)
- }, [history, params, path, search])
+ navigate(generatePath(path, updatedParams) + updatedQuery)
+ }, [navigate, params, path, search])
const stateWithdefaults = useMemo(() => {
return {
diff --git a/src/test/RouterWrapper.tsx b/src/test/RouterWrapper.tsx
index 63e9a5a..a43965d 100644
--- a/src/test/RouterWrapper.tsx
+++ b/src/test/RouterWrapper.tsx
@@ -1,16 +1,20 @@
-import { createMemoryHistory } from "history"
-import React from "react"
-import { Route, Router } from "react-router-dom"
+import { createMemoryHistory } from "history";
+import React from "react";
+// https://reactrouter.com/docs/en/v6/api#unstable_historyrouter
+import { Route, Routes, unstable_HistoryRouter as HistoryRouter } from "react-router-dom";
export const getHistoryWrapper = (path?: string) => {
- const history = createMemoryHistory()
+ const history = createMemoryHistory()
- const wrapper: React.FC<{ path?: string }> = ({ children }) =>
-
-
- {children}
-
-
+ const wrapper: React.FC = ({ children }) =>
+
+
+
+ {/* {children}
+ */}
+
+
+
return {
history,
wrapper
diff --git a/src/test/renderer.ts b/src/test/renderer.ts
index 906108b..15203ec 100644
--- a/src/test/renderer.ts
+++ b/src/test/renderer.ts
@@ -10,7 +10,8 @@ type HookAction = (props: unknown) => [TState | undefined, Dispatch(action: HookAction, path?: string) => {
const { wrapper, history } = getHistoryWrapper(path)
- const { result } = renderHook(action, { wrapper })
+ const { result, rerender } = renderHook(action, { wrapper })
+ rerender()
return {
result,
diff --git a/src/test/useQueryArrayStringKey.test.ts b/src/test/useQueryArrayStringKey.test.ts
index 3e9387e..87dc757 100644
--- a/src/test/useQueryArrayStringKey.test.ts
+++ b/src/test/useQueryArrayStringKey.test.ts
@@ -5,9 +5,10 @@ import renderer from "./renderer";
describe('useArrayQueryStringKey', () => {
it('Should be undefined by default', () => {
- const { state, history } = renderer(() => useQueryStringKey('foo'))
+ const { state, history } = renderer(() => useQueryStringKey('foo'), '/')
- expect(state.get).toBe(undefined)
+ const s = state.get
+ expect(s).toBe(undefined)
expect(history.location.search).toBe('')
})
@@ -19,9 +20,11 @@ describe('useArrayQueryStringKey', () => {
})
it('Should add one array element', () => {
- const { state, history } = renderer(() => useQueryStringKey('foo', []))
+ //useQueryStringKey('foo', [])
+ const { state, history, result } = renderer(() => useQueryStringKey('foo', []))
act(() => {
+ result.current[1](['bar'])
state.set(['bar'])
})
diff --git a/src/test/useRouteParams.test.ts b/src/test/useRouteParams.test.ts
index dbcfa76..ad30e1c 100644
--- a/src/test/useRouteParams.test.ts
+++ b/src/test/useRouteParams.test.ts
@@ -7,7 +7,8 @@ describe('useRouteParams', () => {
it('Should have default empty', () => {
const { state, history } = renderer(() => useRouteParams(), '/:foo?/:bar?')
- expect(state.get).toStrictEqual({})
+ const s = state.get
+ expect(s).toStrictEqual({})
expect(history.location.pathname).toBe('/')
})
diff --git a/yarn.lock b/yarn.lock
index d92c54c..c48eb05 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1165,13 +1165,20 @@
dependencies:
regenerator-runtime "^0.13.4"
-"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4":
+"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4":
version "7.16.3"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.3.tgz#b86f0db02a04187a3c17caa77de69840165d42d5"
integrity sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==
dependencies:
regenerator-runtime "^0.13.4"
+"@babel/runtime@^7.7.6":
+ version "7.17.9"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72"
+ integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
"@babel/template@^7.10.4", "@babel/template@^7.16.0", "@babel/template@^7.3.3":
version "7.16.0"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6"
@@ -2172,6 +2179,11 @@
resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.9.tgz#1cfb6d60ef3822c589f18e70f8b12f9a28ce8724"
integrity sha512-MUc6zSmU3tEVnkQ78q0peeEjKWPUADMlC/t++2bI8WnAG2tvYRPIgHG8lWkXwqc8MsUF6Z2MOf+Mh5sazOmhiQ==
+"@types/history@^4.7.11":
+ version "4.7.11"
+ resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64"
+ integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==
+
"@types/html-minifier-terser@^5.0.0":
version "5.1.2"
resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz#693b316ad323ea97eed6b38ed1a3cc02b1672b57"
@@ -2261,12 +2273,12 @@
dependencies:
"@types/react" "*"
-"@types/react-router-dom@^5.1.5":
- version "5.3.2"
- resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.2.tgz#ebd8e145cf056db5c66eb1dac63c72f52e8542ee"
- integrity sha512-ELEYRUie2czuJzaZ5+ziIp9Hhw+juEw8b7C11YNA4QdLCVbQ3qLi2l4aq8XnlqM7V31LZX8dxUuFUCrzHm6sqQ==
+"@types/react-router-dom@^5.2.0":
+ version "5.3.3"
+ resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.3.tgz#e9d6b4a66fcdbd651a5f106c2656a30088cc1e83"
+ integrity sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==
dependencies:
- "@types/history" "*"
+ "@types/history" "^4.7.11"
"@types/react" "*"
"@types/react-router" "*"
@@ -6491,17 +6503,12 @@ hex-color-regex@^1.1.0:
resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
-history@^4.0.0, history@^4.9.0:
- version "4.10.1"
- resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3"
- integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==
+history@^5.2.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/history/-/history-5.3.0.tgz#1548abaa245ba47992f063a0783db91ef201c73b"
+ integrity sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==
dependencies:
- "@babel/runtime" "^7.1.2"
- loose-envify "^1.2.0"
- resolve-pathname "^3.0.0"
- tiny-invariant "^1.0.2"
- tiny-warning "^1.0.0"
- value-equal "^1.0.1"
+ "@babel/runtime" "^7.7.6"
hmac-drbg@^1.0.1:
version "1.0.1"
@@ -6512,13 +6519,6 @@ hmac-drbg@^1.0.1:
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.1"
-hoist-non-react-statics@^3.1.0:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
- integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
- dependencies:
- react-is "^16.7.0"
-
hook-std@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/hook-std/-/hook-std-2.0.0.tgz#ff9aafdebb6a989a354f729bb6445cf4a3a7077c"
@@ -7348,11 +7348,6 @@ is-wsl@^2.1.1, is-wsl@^2.2.0:
dependencies:
is-docker "^2.0.0"
-isarray@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
- integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
-
isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
@@ -8415,7 +8410,7 @@ loglevel@^1.6.8:
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.8.0.tgz#e7ec73a57e1e7b419cb6c6ac06bf050b67356114"
integrity sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==
-loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0:
+loose-envify@^1.1.0, loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
@@ -8682,14 +8677,6 @@ min-indent@^1.0.0:
resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
-mini-create-react-context@^0.4.0:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e"
- integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==
- dependencies:
- "@babel/runtime" "^7.12.1"
- tiny-warning "^1.0.3"
-
mini-css-extract-plugin@0.11.3:
version "0.11.3"
resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz#15b0910a7f32e62ffde4a7430cfefbd700724ea6"
@@ -9809,13 +9796,6 @@ path-to-regexp@0.1.7:
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
-path-to-regexp@^1.7.0:
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a"
- integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==
- dependencies:
- isarray "0.0.1"
-
path-type@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
@@ -10720,7 +10700,7 @@ promzard@^0.3.0:
dependencies:
read "1"
-prop-types@^15.6.2, prop-types@^15.7.2:
+prop-types@^15.7.2:
version "15.7.2"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
@@ -10963,7 +10943,7 @@ react-error-overlay@^6.0.9:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
-react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1:
+react-is@^16.8.1:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
@@ -10973,34 +10953,20 @@ react-refresh@^0.8.3:
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f"
integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==
-react-router-dom@^5.2.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.0.tgz#da1bfb535a0e89a712a93b97dd76f47ad1f32363"
- integrity sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ==
- dependencies:
- "@babel/runtime" "^7.12.13"
- history "^4.9.0"
- loose-envify "^1.3.1"
- prop-types "^15.6.2"
- react-router "5.2.1"
- tiny-invariant "^1.0.2"
- tiny-warning "^1.0.0"
-
-react-router@5.2.1:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.1.tgz#4d2e4e9d5ae9425091845b8dbc6d9d276239774d"
- integrity sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ==
- dependencies:
- "@babel/runtime" "^7.12.13"
- history "^4.9.0"
- hoist-non-react-statics "^3.1.0"
- loose-envify "^1.3.1"
- mini-create-react-context "^0.4.0"
- path-to-regexp "^1.7.0"
- prop-types "^15.6.2"
- react-is "^16.6.0"
- tiny-invariant "^1.0.2"
- tiny-warning "^1.0.0"
+react-router-dom@^6.3.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.3.0.tgz#a0216da813454e521905b5fa55e0e5176123f43d"
+ integrity sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==
+ dependencies:
+ history "^5.2.0"
+ react-router "6.3.0"
+
+react-router@6.3.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.3.0.tgz#3970cc64b4cb4eae0c1ea5203a80334fdd175557"
+ integrity sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==
+ dependencies:
+ history "^5.2.0"
react-scripts@^4.0.1:
version "4.0.3"
@@ -11405,11 +11371,6 @@ resolve-from@^5.0.0:
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
-resolve-pathname@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd"
- integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==
-
resolve-url-loader@^3.1.2:
version "3.1.4"
resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.4.tgz#3c16caebe0b9faea9c7cc252fa49d2353c412320"
@@ -12716,21 +12677,11 @@ timsort@^0.3.0:
resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
-tiny-invariant@^1.0.2:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9"
- integrity sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==
-
tiny-relative-date@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz#fa08aad501ed730f31cc043181d995c39a935e07"
integrity sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A==
-tiny-warning@^1.0.0, tiny-warning@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
- integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
-
tmpl@1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc"
@@ -13227,11 +13178,6 @@ validate-npm-package-name@^3.0.0, validate-npm-package-name@~3.0.0:
dependencies:
builtins "^1.0.3"
-value-equal@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c"
- integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==
-
vary@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"