diff --git a/package.json b/package.json
index 25f481b..1301f28 100644
--- a/package.json
+++ b/package.json
@@ -17,6 +17,7 @@
"@radix-ui/react-popover": "^1.0.7",
"@radix-ui/react-slot": "^1.0.2",
"@radix-ui/react-toast": "^1.1.5",
+ "@types/qrcode": "^1.5.5",
"class-variance-authority": "^0.7.0",
"clsx": "^2.1.0",
"immer": "^10.0.4",
@@ -24,6 +25,7 @@
"lucide-react": "^0.367.0",
"next": "14.1.3",
"nookies": "^2.5.2",
+ "qrcode": "^1.5.3",
"qs": "^6.12.0",
"react": "^18",
"react-dom": "^18",
diff --git a/src/components/Footer/DownLoadItem.tsx b/src/components/Footer/DownLoadItem.tsx
index b571844..05e54a9 100644
--- a/src/components/Footer/DownLoadItem.tsx
+++ b/src/components/Footer/DownLoadItem.tsx
@@ -1,19 +1,3 @@
-import QRCodeDialog from './QRCodeDialog';
-
-import { apiAppVersionCheck } from '@/services';
-
-const getData = async (platform: AppPlatform) => {
- const res = await apiAppVersionCheck(platform);
- if (res.code === 200) {
- return res.data;
- } else {
- return {
- version: '1.0.0',
- url: '',
- };
- }
-};
-
const IconIos = ({ className }: { className?: string }) => {
return (
{count}
diff --git a/src/components/common/QRCode.tsx b/src/components/common/QRCode.tsx
new file mode 100644
index 0000000..8ad78e0
--- /dev/null
+++ b/src/components/common/QRCode.tsx
@@ -0,0 +1,24 @@
+'use client';
+
+import React, { useState, useEffect } from 'react';
+
+import QRCode from 'qrcode';
+
+const QRCodeComponent = ({ text, className }: { text: string; className?: string }) => {
+ const [src, setSrc] = useState('');
+
+ useEffect(() => {
+ if (!text) return;
+ QRCode.toDataURL(text)
+ .then((url) => {
+ setSrc(url);
+ })
+ .catch((err) => {
+ console.error(err);
+ });
+ }, [text]);
+
+ return ;
+};
+
+export default QRCodeComponent;
diff --git a/src/components/index.ts b/src/components/index.ts
index e7675c7..5d9a02c 100644
--- a/src/components/index.ts
+++ b/src/components/index.ts
@@ -33,6 +33,7 @@ export { default as Input } from './common/Input';
export { default as Button } from './common/Button';
export { default as AutoScrollContainer } from './common/AutoScrollContainer';
export { default as Avatar } from './Avatar';
+export { default as QRCode } from './common/QRCode';
// Audio Player
export { default as PlayerBar } from './AudioPlayer/PlayerBar';
diff --git a/src/services/client/app.ts b/src/services/client/app.ts
new file mode 100644
index 0000000..0e0b469
--- /dev/null
+++ b/src/services/client/app.ts
@@ -0,0 +1,15 @@
+import clientHttp from '@/utils/request/client';
+
+/**
+ * @description 查询版本号
+ */
+
+export const apiAppVersionCheck: (platform: AppPlatform) => Promise> = async (platform) => {
+ const params = {
+ platform,
+ deviceId: 'web',
+ appVersion: '1.0.0',
+ };
+ const result: FetchResponse = await clientHttp.post(`/queyueapi/user/update/checkVersion`, params);
+ return result;
+};
diff --git a/src/services/index.ts b/src/services/index.ts
index e9d8b16..229c751 100644
--- a/src/services/index.ts
+++ b/src/services/index.ts
@@ -3,12 +3,12 @@
*/
export * from './server/user';
export * from './server/journal';
-export * from './server/app';
/**
* @description client request
*/
+export * from './client/app';
+export * from './client/audio';
export * from './client/user';
export * from './client/operate';
export * from './client/comment';
-export * from './client/audio';
diff --git a/src/services/server/app.ts b/src/services/server/app.ts
deleted file mode 100644
index cfecce7..0000000
--- a/src/services/server/app.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import serverHttp from '@/utils/request/server';
-
-/**
- * @description 查询版本号
- */
-export const apiAppVersionCheck: (platform: AppPlatform) => Promise> = async (platform) => {
- const data = new FormData();
- data.append('platform', platform);
- data.append('deviceId', 'web');
- data.append('appVersion', '1.0.0');
-
- const request = new Request('http://localhost', {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
- requestUrl: `/user/update/checkVersion`,
- },
- body: data,
- });
- const res = await serverHttp.post(request);
- return res;
-};
diff --git a/src/utils/request/client/index.ts b/src/utils/request/client/index.ts
index fc13a85..fbde95f 100644
--- a/src/utils/request/client/index.ts
+++ b/src/utils/request/client/index.ts
@@ -24,7 +24,7 @@ export const post = async (url: string, data: any, headers?: any, revalidate
Connection: 'keep-alive',
},
method: 'POST',
- body: data && headers?.['Content-Type'] === 'application/json' ? JSON.stringify(data) : createFormBody(data),
+ body: headers?.['Content-Type'] === 'application/json' ? JSON.stringify(data) : createFormBody(data),
next: {
revalidate: revalidate,
},
diff --git a/src/utils/request/server/utils.ts b/src/utils/request/server/utils.ts
index ac2ea19..fbc5d2d 100644
--- a/src/utils/request/server/utils.ts
+++ b/src/utils/request/server/utils.ts
@@ -71,3 +71,13 @@ const streamToFormUrlEncoded = async (stream: ReadableStream | null)
return urlEncodedFormData;
};
+
+export const createFormBody: (formDataObject: any) => string = (formDataObject: any) => {
+ const encodedForm = new URLSearchParams();
+ for (const key in formDataObject) {
+ if (formDataObject.hasOwnProperty(key)) {
+ encodedForm.append(key, formDataObject[key]);
+ }
+ }
+ return encodedForm.toString();
+};
diff --git a/yarn.lock b/yarn.lock
index 85a82ba..89d6244 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1355,6 +1355,13 @@
resolved "https://registry.npmmirror.com/@types/prop-types/-/prop-types-15.7.11.tgz"
integrity sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==
+"@types/qrcode@^1.5.5":
+ version "1.5.5"
+ resolved "https://registry.npmmirror.com/@types/qrcode/-/qrcode-1.5.5.tgz#993ff7c6b584277eee7aac0a20861eab682f9dac"
+ integrity sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==
+ dependencies:
+ "@types/node" "*"
+
"@types/qs@^6.9.14":
version "6.9.14"
resolved "https://registry.npmmirror.com/@types/qs/-/qs-6.9.14.tgz"
@@ -2020,6 +2027,11 @@ callsites@^3.0.0:
resolved "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz"
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+camelcase@^5.0.0:
+ version "5.3.1"
+ resolved "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001587, caniuse-lite@^1.0.30001591:
version "1.0.30001597"
resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001597.tgz"
@@ -2089,6 +2101,15 @@ client-only@0.0.1:
resolved "https://registry.npmmirror.com/client-only/-/client-only-0.0.1.tgz"
integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==
+cliui@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1"
+ integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.0"
+ wrap-ansi "^6.2.0"
+
cliui@^8.0.1:
version "8.0.1"
resolved "https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz"
@@ -2288,6 +2309,11 @@ debug@^3.2.7:
dependencies:
ms "^2.1.1"
+decamelize@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==
+
deep-is@^0.1.3:
version "0.1.4"
resolved "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz"
@@ -2331,6 +2357,11 @@ detect-node-es@^1.1.0:
resolved "https://registry.npmmirror.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493"
integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==
+dijkstrajs@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz#4c8dbdea1f0f6478bff94d9c49c784d623e4fc23"
+ integrity sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==
+
dir-glob@^3.0.1:
version "3.0.1"
resolved "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz"
@@ -2389,6 +2420,11 @@ emoji-regex@^9.2.2:
resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz"
integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
+encode-utf8@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda"
+ integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==
+
enhanced-resolve@^5.12.0:
version "5.16.0"
resolved "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz"
@@ -2842,6 +2878,14 @@ fill-range@^7.0.1:
dependencies:
to-regex-range "^5.0.1"
+find-up@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
+ integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
+ dependencies:
+ locate-path "^5.0.0"
+ path-exists "^4.0.0"
+
find-up@^5.0.0:
version "5.0.0"
resolved "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz"
@@ -2928,7 +2972,7 @@ gensync@^1.0.0-beta.2:
resolved "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz"
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
-get-caller-file@^2.0.5:
+get-caller-file@^2.0.1, get-caller-file@^2.0.5:
version "2.0.5"
resolved "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
@@ -3612,6 +3656,13 @@ local-pkg@^0.5.0:
mlly "^1.4.2"
pkg-types "^1.0.3"
+locate-path@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
+ integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
+ dependencies:
+ p-locate "^4.1.0"
+
locate-path@^6.0.0:
version "6.0.0"
resolved "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz"
@@ -3995,6 +4046,13 @@ optionator@^0.9.3:
prelude-ls "^1.2.1"
type-check "^0.4.0"
+p-limit@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
+ dependencies:
+ p-try "^2.0.0"
+
p-limit@^3.0.2:
version "3.1.0"
resolved "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz"
@@ -4009,6 +4067,13 @@ p-limit@^4.0.0:
dependencies:
yocto-queue "^1.0.0"
+p-locate@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
+ integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
+ dependencies:
+ p-limit "^2.2.0"
+
p-locate@^5.0.0:
version "5.0.0"
resolved "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz"
@@ -4023,6 +4088,11 @@ p-locate@^6.0.0:
dependencies:
p-limit "^4.0.0"
+p-try@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
parent-module@^1.0.0:
version "1.0.1"
resolved "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz"
@@ -4117,6 +4187,11 @@ pkg-types@^1.0.3:
mlly "^1.2.0"
pathe "^1.1.0"
+pngjs@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb"
+ integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==
+
possible-typed-array-names@^1.0.0:
version "1.0.0"
resolved "https://registry.npmmirror.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz"
@@ -4445,6 +4520,16 @@ punycode@^2.1.0:
resolved "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz"
integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
+qrcode@^1.5.3:
+ version "1.5.3"
+ resolved "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.3.tgz#03afa80912c0dccf12bc93f615a535aad1066170"
+ integrity sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==
+ dependencies:
+ dijkstrajs "^1.0.1"
+ encode-utf8 "^1.0.3"
+ pngjs "^5.0.0"
+ yargs "^15.3.1"
+
qs@^6.12.0:
version "6.12.0"
resolved "https://registry.npmmirror.com/qs/-/qs-6.12.0.tgz"
@@ -4550,6 +4635,11 @@ require-from-string@^2.0.2:
resolved "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz"
integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
+require-main-filename@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
+ integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
+
resolve-from@^4.0.0:
version "4.0.0"
resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz"
@@ -4653,6 +4743,11 @@ semver@^7.5.4, semver@^7.6.0:
dependencies:
lru-cache "^6.0.0"
+set-blocking@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==
+
set-cookie-parser@^2.4.6:
version "2.6.0"
resolved "https://registry.npmmirror.com/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz"
@@ -5195,6 +5290,11 @@ which-collection@^1.0.1:
is-weakmap "^2.0.2"
is-weakset "^2.0.3"
+which-module@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409"
+ integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==
+
which-typed-array@^1.1.14, which-typed-array@^1.1.9:
version "1.1.15"
resolved "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.15.tgz"
@@ -5222,6 +5322,15 @@ which@^2.0.1:
string-width "^4.1.0"
strip-ansi "^6.0.0"
+wrap-ansi@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
+ integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
wrap-ansi@^7.0.0:
version "7.0.0"
resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
@@ -5254,6 +5363,11 @@ wrappy@1:
resolved "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz"
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
+y18n@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf"
+ integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==
+
y18n@^5.0.5:
version "5.0.8"
resolved "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz"
@@ -5274,11 +5388,36 @@ yaml@2.3.4:
resolved "https://registry.npmmirror.com/yaml/-/yaml-2.3.4.tgz"
integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==
+yargs-parser@^18.1.2:
+ version "18.1.3"
+ resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
+ integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
yargs-parser@^21.1.1:
version "21.1.1"
resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz"
integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
+yargs@^15.3.1:
+ version "15.4.1"
+ resolved "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8"
+ integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==
+ dependencies:
+ cliui "^6.0.0"
+ decamelize "^1.2.0"
+ find-up "^4.1.0"
+ get-caller-file "^2.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^4.2.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^18.1.2"
+
yargs@^17.0.0:
version "17.7.2"
resolved "https://registry.npmmirror.com/yargs/-/yargs-17.7.2.tgz"