From a64371bf22391fed8176b0ddd676d438ddb9259c Mon Sep 17 00:00:00 2001 From: zuofenghua <11100776@bbktel.com> Date: Wed, 28 Jul 2021 17:19:45 +0800 Subject: [PATCH] feat: add useUrlState hook --- docs/.vitepress/router.js | 1 + package.json | 6 +- src/index.ts | 24 +++--- src/useToggle/index.en-US.md | 2 +- src/useUrlState/demo/demo.vue | 22 ++++++ src/useUrlState/demo/index.ts | 1 + src/useUrlState/index.en-US.md | 48 ++++++++++++ src/useUrlState/index.ts | 114 +++++++++++++++++++++++++++ src/useUrlState/index.zh-CN.md | 48 ++++++++++++ yarn.lock | 139 +++++++++++++++++++++++++-------- 10 files changed, 358 insertions(+), 47 deletions(-) create mode 100644 src/useUrlState/demo/demo.vue create mode 100644 src/useUrlState/demo/index.ts create mode 100644 src/useUrlState/index.en-US.md create mode 100644 src/useUrlState/index.ts create mode 100644 src/useUrlState/index.zh-CN.md diff --git a/docs/.vitepress/router.js b/docs/.vitepress/router.js index 0fa9624..35886dd 100644 --- a/docs/.vitepress/router.js +++ b/docs/.vitepress/router.js @@ -11,6 +11,7 @@ const Router = { 'useInViewport', ], State: [ + 'useUrlState', 'useToggle', 'useLocalStorageState', // 'useLocalforage', diff --git a/package.json b/package.json index dc72855..4a3fbd7 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ } }, "scripts": { - "dev": "vitepress-fc dev docs", + "dev": "vitepress-fc dev docs --host", "build": "vite build && yarn type", "type": "tsc -d", "test": "jest", @@ -45,6 +45,7 @@ "devDependencies": { "@types/jest": "^25.1.3", "@types/lodash": "^4.14.159", + "@types/qs": "^6.9.7", "@types/whatwg-fetch": "^0.0.33", "@typescript-eslint/eslint-plugin": "^4.14.1", "@typescript-eslint/parser": "^4.14.1", @@ -68,13 +69,14 @@ "screenfull": "^5.1.0", "ts-jest": "^25.2.1", "typescript": "^4.1.5", - "vitepress-for-component": "^0.14.4", + "vitepress-for-component": "^0.14.8", "vue": "^3.0.1", "whatwg-fetch": "^3.5.0" }, "homepage": "https://dewfall123.github.io/ahooks-vue/", "dependencies": { "lodash": "^4.17.20", + "qs": "^6.10.1", "vue-demi": "^0.6.0" }, "peerDependencies": { diff --git a/src/index.ts b/src/index.ts index 80a8b0a..dfb6ad8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,17 +1,19 @@ -export * from './useToggle'; -export * from './useFullscreen'; -export * from './useLocalStorageState'; +export * from './useAxios'; +export * from './useDebounce'; export * from './useDocumentVisibility'; +export * from './useFullscreen'; export * from './useHover'; export * from './useInViewport'; -export * from './useSize'; -export * from './useWorkerFunction'; -export * from './useThrottle'; -export * from './useDebounce'; -export * from './useTable'; export * from './useKeyPress'; +export * from './useLocalforage'; +export * from './useLocalStorageState'; export * from './useOLAP'; -export * from './useRequest'; export * from './usePaginatedRequest'; -export * from './useAxios'; -export * from './useLocalforage'; +export * from './useRequest'; +export * from './useSize'; +export * from './useTable'; +export * from './useThrottle'; +export * from './useToggle'; +export * from './useUrlState'; +export * from './useWorkerFunction'; + diff --git a/src/useToggle/index.en-US.md b/src/useToggle/index.en-US.md index a0c97bc..13fb901 100644 --- a/src/useToggle/index.en-US.md +++ b/src/useToggle/index.en-US.md @@ -18,7 +18,7 @@ The API is different from [ahooks](https://ahooks.js.org/hooks/state/use-toggle) + desc="Accept two parameters, switch between them."> diff --git a/src/useUrlState/demo/demo.vue b/src/useUrlState/demo/demo.vue new file mode 100644 index 0000000..92275d2 --- /dev/null +++ b/src/useUrlState/demo/demo.vue @@ -0,0 +1,22 @@ + + + diff --git a/src/useUrlState/demo/index.ts b/src/useUrlState/demo/index.ts new file mode 100644 index 0000000..ce3efa2 --- /dev/null +++ b/src/useUrlState/demo/index.ts @@ -0,0 +1 @@ +export { default } from './demo.vue'; diff --git a/src/useUrlState/index.en-US.md b/src/useUrlState/index.en-US.md new file mode 100644 index 0000000..9e956e5 --- /dev/null +++ b/src/useUrlState/index.en-US.md @@ -0,0 +1,48 @@ +--- +map: + path: /use-url-state +--- + +# useUrlState + +一个同步组件内部状态和 query 参数的 hook。 + +::: warning +API 有改动,见[ahooks](https://ahooks.js.org/zh-CN/hooks/state)。 +::: + +## Examples + +### Basic usage + + + + +## API + +```typescript +const state = useUrlState(routerPush, DefaultState, { + localStorageKey: 'localStorageKey', +}); + +interface UseUrlStateOptions { + localStorageKey?: string; +} +``` + +### Params + +| Property | Description | Type | Default | +| ------------ | --------------------------------------------------------------------------------------------------------------------- | --------------- | ------- | +| routerPushFn | Pass `router.push` | `function` | - | +| initialState | defaultValue | `S | (() => S)` | - | +| options | If set the `options.localStorageKey` is set, state will use the state saved in localStorage when url params is empty. | UseUrlStateOptions | - | + +### Result + +| Property | Description | Type | +| -------- | ----------- | ---- | +| state | state ref | - | diff --git a/src/useUrlState/index.ts b/src/useUrlState/index.ts new file mode 100644 index 0000000..6078bc7 --- /dev/null +++ b/src/useUrlState/index.ts @@ -0,0 +1,114 @@ +import qs from 'qs'; +import { Ref, ref, watch } from 'vue-demi'; +import { useLocalStorageState } from '../useLocalStorageState'; + +export interface UseUrlStateOptions { + localStorageKey?: string; +} + +interface UrlState { + [key: string]: any; +} + +function encodeParams(value: UrlState) { + return qs.stringify(value); +} + +function decodeParams(valueStr: string) { + // return JSON.parse(decodeURIComponent(atob(valueStr))); + return qs.parse(valueStr, { + decoder(str, decoder, charset) { + const strWithoutPlus = str.replace(/\+/g, ' '); + if (charset === 'iso-8859-1') { + // unescape never throws, no try...catch needed: + return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape); + } + + if (/^[+-]?\d+(\.\d+)?$/.test(str)) { + return parseFloat(str); + } + + const keywords: Record = { + true: true, + false: false, + null: null, + undefined, + }; + if (str in keywords) { + return keywords[str]; + } + + // utf-8 + try { + return decodeURIComponent(strWithoutPlus); + } catch (e) { + return strWithoutPlus; + } + }, + }); +} + +export function useUrlState( + routerPushFn: (path: string) => void, + initialState?: S | (() => S), + options?: UseUrlStateOptions, +): Ref { + const { localStorageKey } = options ?? {}; + + const [path, paramsStr] = location.hash.slice(1).split('?'); + + const defaultState = + (typeof initialState === 'function' + ? (initialState as () => S)() + : initialState) ?? ({} as S); + let state = ref(defaultState) as Ref; + + if (localStorageKey) { + state = useLocalStorageState(localStorageKey, defaultState) as Ref; + } + + // 初始状态 url > localstorage + if (paramsStr) { + try { + const paramsValue = decodeParams(paramsStr); + console.log('解析url结果:'); + console.log(paramsValue); + state.value = { + ...defaultState, + ...state.value, + ...paramsValue, + }; + } catch { + state.value = defaultState; + } + } + + // 去掉多余的key + if (initialState && Object.keys(initialState).length) { + let newState = { ...initialState } as any; + for (const key in newState) { + if (key in state.value) { + newState[key] = state.value[key]; + } + } + state.value = newState; + } + + // 把params写到url + watch( + state, + () => { + const newParamsStr = encodeParams(state.value); + + routerPushFn(`${path}?${newParamsStr}`); + console.log('写url'); + console.log(`${path}?${newParamsStr}`); + }, + { + deep: true, + immediate: true, + }, + ); + + return state; +} diff --git a/src/useUrlState/index.zh-CN.md b/src/useUrlState/index.zh-CN.md new file mode 100644 index 0000000..6aff236 --- /dev/null +++ b/src/useUrlState/index.zh-CN.md @@ -0,0 +1,48 @@ +--- +map: + path: /use-url-state +--- + +# useUrlState + +一个同步组件内部状态和 query 参数的 hook。 + +::: warning +API 有改动,见[ahooks](https://ahooks.js.org/zh-CN/hooks/state)。 +::: + +## Examples + +### 基础用法 + + + + +## API + +```typescript +const state = useUrlState(routerPush, DefaultState, { + localStorageKey: 'localStorageKey', +}); + +interface UseUrlStateOptions { + localStorageKey?: string; +} +``` + +### Params + +| 参数 | 说明 | 类型 | 默认值 | +| ------------ | ------------------------------------------------------------------------ | ------------------ | ------ | +| routerPushFn | 一般来说,传 vue-router 的 `router.push`方法就行 | `function` | - | +| initialState | 默认值 | `S | (() => S)` | - | +| options | 设置`localStorageKey`的话,若 url 没有参数,会使用存在 localStorage 的值 | UseUrlStateOptions | - | + +### Result + +| 参数 | 说明 | 类型 | +| ----- | ------ | ---- | +| state | 状态值 | - | diff --git a/yarn.lock b/yarn.lock index 43eb09b..de81266 100644 --- a/yarn.lock +++ b/yarn.lock @@ -831,6 +831,11 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f" integrity sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ== +"@types/qs@^6.9.7": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + "@types/responselike@*": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" @@ -1680,6 +1685,14 @@ cacheable-request@^7.0.1: normalize-url "^4.1.0" responselike "^2.0.0" +call-bind@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + callsites@^3.0.0, callsites@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -1924,10 +1937,10 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colorette@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" - integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== +colorette@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" + integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" @@ -2591,10 +2604,10 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -esbuild@^0.8.34: - version "0.8.39" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.8.39.tgz#18b84a3d56173c55ee8f45bc6c7b5374b0a98ecb" - integrity sha512-/do5H74a5ChyeKRWfkDh3EpICXpsz6dWTtFFbotb7BlIHvWqnRrZYDb8IBubOHdEtKzuiksilRO19aBtp3/HHQ== +esbuild@^0.12.8: + version "0.12.15" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.12.15.tgz#9d99cf39aeb2188265c5983e983e236829f08af0" + integrity sha512-72V4JNd2+48eOVCXx49xoSWHgC3/cCy96e7mbXKY+WOWghN00cCmlGnwVLRhRHorvv0dgCyuMYBZlM2xDM5OQw== escape-goat@^2.0.0: version "2.1.1" @@ -3146,6 +3159,11 @@ fsevents@^2.1.2, fsevents@~2.3.1: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.1.tgz#b209ab14c61012636c8863507edf7fb68cc54e9f" integrity sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw== +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -3173,6 +3191,15 @@ get-caller-file@^2.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-intrinsic@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -3462,6 +3489,11 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-symbols@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -3800,6 +3832,13 @@ is-core-module@^2.1.0: dependencies: has "^1.0.3" +is-core-module@^2.2.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.5.0.tgz#f754843617c70bfd29b7bd87327400cda5c18491" + integrity sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -5261,10 +5300,10 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nanoid@^3.1.20: - version "3.1.20" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" - integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== +nanoid@^3.1.23: + version "3.1.23" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" + integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== nanomatch@^1.2.9: version "1.2.13" @@ -5490,6 +5529,11 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" +object-inspect@^1.9.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" + integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== + object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -6003,14 +6047,14 @@ postcss@^7.0.14, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: source-map "^0.6.1" supports-color "^6.1.0" -postcss@^8.2.1: - version "8.2.4" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.4.tgz#20a98a39cf303d15129c2865a9ec37eda0031d04" - integrity sha512-kRFftRoExRVXZlwUuay9iC824qmXPcQQVzAjbCCgjpXnkdMCJYBu2gTwAaFBzv8ewND6O8xFb3aELmEkh9zTzg== +postcss@^8.3.5: + version "8.3.5" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.5.tgz#982216b113412bc20a86289e91eb994952a5b709" + integrity sha512-NxTuJocUhYGsMiMFHDUkmjSKT3EdH4/WbGF6GCi1NDGk+vbcUTun4fpbOqaPtD8IIsztA2ilZm2DhYCuyN58gA== dependencies: - colorette "^1.2.1" - nanoid "^3.1.20" - source-map "^0.6.1" + colorette "^1.2.2" + nanoid "^3.1.23" + source-map-js "^0.6.2" preact@^10.0.0: version "10.5.12" @@ -6119,6 +6163,13 @@ q@^1.5.1: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= +qs@^6.10.1: + version "6.10.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a" + integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg== + dependencies: + side-channel "^1.0.4" + qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" @@ -6400,7 +6451,7 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.17.0, resolve@^1.19.0: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.17.0: version "1.19.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== @@ -6408,6 +6459,14 @@ resolve@^1.1.6, resolve@^1.10.0, resolve@^1.17.0, resolve@^1.19.0: is-core-module "^2.1.0" path-parse "^1.0.6" +resolve@^1.20.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" @@ -6654,6 +6713,15 @@ shellwords@^0.1.1: resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" @@ -6729,6 +6797,11 @@ sort-keys@^1.0.0: dependencies: is-plain-obj "^1.0.0" +source-map-js@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" + integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== + source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -7569,22 +7642,22 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vite@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/vite/-/vite-2.0.1.tgz#348fc5c0de510aa90bd01ecf87df210ce741b38e" - integrity sha512-x7ZfikjNs+6n4cdvwb9L5r5xBCdjmtmHFHaI4JVR3nAkJbMCK/dynfDWky8/NseZ9Ncz1jVxTQ/Bcf+n1ps1Ww== +vite@^2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/vite/-/vite-2.4.2.tgz#07d00615775c808530bc9f65641062b349b67929" + integrity sha512-2MifxD2I9fjyDmmEzbULOo3kOUoqX90A58cT6mECxoVQlMYFuijZsPQBuA14mqSwvV3ydUsqnq+BRWXyO9Qa+w== dependencies: - esbuild "^0.8.34" - postcss "^8.2.1" - resolve "^1.19.0" + esbuild "^0.12.8" + postcss "^8.3.5" + resolve "^1.20.0" rollup "^2.38.5" optionalDependencies: - fsevents "~2.3.1" + fsevents "~2.3.2" -vitepress-for-component@^0.14.4: - version "0.14.4" - resolved "https://registry.yarnpkg.com/vitepress-for-component/-/vitepress-for-component-0.14.4.tgz#6dee452d2740464847976bf5026e1415f2a7beee" - integrity sha512-k+o12vEMmERp4UwOwEjyIuzuXI6Kqql/5xZn5lyjg3ODQI8CyMyuRjd+7XUISUOI/CQx9GCasmQ9O7RCeDml6g== +vitepress-for-component@^0.14.8: + version "0.14.8" + resolved "https://registry.yarnpkg.com/vitepress-for-component/-/vitepress-for-component-0.14.8.tgz#b3ab5f089062c76bde31d8e7fa35485376e22019" + integrity sha512-DxtB4tTg9Ck7ZaDSOzEG/tIbk0ymfDB86/F5Ne8SqR3FxNE2nF4gcIVFs0nbG0HmiWWZBP+mR/Ek4GYAOyK0mQ== dependencies: "@docsearch/css" "^1.0.0-alpha.28" "@docsearch/js" "^1.0.0-alpha.28" @@ -7616,7 +7689,7 @@ vitepress-for-component@^0.14.4: sirv "^1.0.11" slash "^3.0.0" stylus "^0.54.8" - vite "^2.0.1" + vite "^2.4.1" vue "^3.0.5" vue-demi@^0.6.0: