瀏覽代碼

提交一下到二维码分享

1
mo 3 年之前
父節點
當前提交
6f2ae937e7
共有 38 個文件被更改,包括 71 次插入99 次删除
  1. 1 1
      .gitignore
  2. 二進制
      dist/assets/404.538aa4d7.png
  3. 二進制
      dist/assets/404_cloud.98e7ac66.png
  4. 二進制
      dist/assets/from-bg.1957537a.png
  5. 0 0
      dist/assets/index-legacy.26f8dd5f.js
  6. 0 0
      dist/assets/index-legacy.502c7746.js
  7. 0 0
      dist/assets/index-legacy.7cf04075.js
  8. 0 0
      dist/assets/index-legacy.997f385b.js
  9. 0 0
      dist/assets/index.49150f4c.css
  10. 0 0
      dist/assets/index.526ec19c.css
  11. 0 0
      dist/assets/index.76543d1a.js
  12. 0 0
      dist/assets/index.7fe069c0.css
  13. 0 0
      dist/assets/index.8074ef92.css
  14. 0 0
      dist/assets/index.8ea5a330.js
  15. 0 0
      dist/assets/index.bdaa7270.js
  16. 1 0
      dist/assets/index.dd65b2b0.js
  17. 二進制
      dist/assets/login-bg.efff4051.jpg
  18. 二進制
      dist/assets/logo.1cbb4412.png
  19. 0 0
      dist/assets/polyfills-legacy.70c21091.js
  20. 0 0
      dist/assets/vendor-legacy.1fc911ea.js
  21. 0 0
      dist/assets/vendor.2b18510b.js
  22. 二進制
      dist/favicon.ico
  23. 20 0
      dist/index.html
  24. 1 0
      dist/manifest.webmanifest
  25. 二進制
      dist/pwa-192x192.png
  26. 二進制
      dist/pwa-512x512.png
  27. 1 0
      dist/registerSW.js
  28. 1 0
      dist/sw.js
  29. 0 0
      dist/workbox-3e4da89b.js
  30. 1 1
      package.json
  31. 8 22
      src/App.vue
  32. 1 2
      src/components/live-message/model/join-model.tsx
  33. 1 3
      src/components/live-message/model/look-model.tsx
  34. 3 46
      src/components/live-message/model/message-model.tsx
  35. 1 2
      src/helpers/request.ts
  36. 1 17
      src/pages/login/index.tsx
  37. 5 5
      src/permission.ts
  38. 25 0
      yarn.lock

+ 1 - 1
.gitignore

@@ -8,7 +8,7 @@ pnpm-debug.log*
 lerna-debug.log*
 
 node_modules
-dist
+# dist
 dist-ssr
 *.local
 

二進制
dist/assets/404.538aa4d7.png


二進制
dist/assets/404_cloud.98e7ac66.png


二進制
dist/assets/from-bg.1957537a.png


File diff suppressed because it is too large
+ 0 - 0
dist/assets/index-legacy.26f8dd5f.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/index-legacy.502c7746.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/index-legacy.7cf04075.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/index-legacy.997f385b.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/index.49150f4c.css


File diff suppressed because it is too large
+ 0 - 0
dist/assets/index.526ec19c.css


File diff suppressed because it is too large
+ 0 - 0
dist/assets/index.76543d1a.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/index.7fe069c0.css


File diff suppressed because it is too large
+ 0 - 0
dist/assets/index.8074ef92.css


File diff suppressed because it is too large
+ 0 - 0
dist/assets/index.8ea5a330.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/index.bdaa7270.js


+ 1 - 0
dist/assets/index.dd65b2b0.js

@@ -0,0 +1 @@
+import{d as i,f as s,l as t}from"./vendor.2b18510b.js";const e="_wscnHttp404Container_1v1ex_1",c="_wscnHttp404_1v1ex_1",u="_pic404_1v1ex_13",n="_pic404__parent_1v1ex_19",o="_pic404__child_1v1ex_22",a="_left_1v1ex_25",d="_cloudLeft_1v1ex_1",r="_mid_1v1ex_36",h="_cloudMid_1v1ex_1",p="_right_1v1ex_47",v="_cloudRight_1v1ex_1",b="_bullshit_1v1ex_124",x="_bullshit__oops_1v1ex_132",m="_slideUp_1v1ex_1",f="_bullshit__headline_1v1ex_143",g="_bullshit__info_1v1ex_155",H="_bullshit__returnHome_1v1ex_166";var _={wscnHttp404Container:e,wscnHttp404:c,pic404:u,pic404__parent:n,pic404__child:o,left:a,cloudLeft:d,mid:r,cloudMid:h,right:p,cloudRight:v,bullshit:b,bullshit__oops:x,slideUp:m,bullshit__headline:f,bullshit__info:g,bullshit__returnHome:H},F="./assets/404.538aa4d7.png",l="./assets/404_cloud.98e7ac66.png",w=i({name:"Page404",data(){return{message:"\u5F88\u62B1\u6B49\uFF0C\u4F60\u8BBF\u95EE\u7684\u9875\u9762\u4E0D\u5B58\u5728"}},render(){return s("div",{class:_.wscnHttp404Container},[s("div",{class:_.wscnHttp404},[s("div",{class:_.pic404},[s("img",{class:_.pic404__parent,src:F,alt:"404"},null),s("img",{class:[_.pic404__child,_.left],src:l,alt:"404"},null),s("img",{class:[_.pic404__child,_.mid],src:l,alt:"404"},null),s("img",{class:[_.pic404__child,_.right],src:l,alt:"404"},null)]),s("div",{class:_.bullshit},[s("div",{class:_.bullshit__oops},[t("OOPS!")]),s("div",{class:_.bullshit__headline},[this.message]),s("div",{class:_.bullshit__info},[t("\u8BF7\u68C0\u67E5\u60A8\u8F93\u5165\u7684\u7F51\u5740\u662F\u5426\u6B63\u786E\uFF0C\u6216\u8005\u70B9\u51FB\u94FE\u63A5\u7EE7\u7EED\u6D4F\u89C8")]),s("a",{href:"",class:_.bullshit__returnHome},[t("\u8FD4\u56DE\u9996\u9875")])])])])}});export{w as default};

二進制
dist/assets/login-bg.efff4051.jpg


二進制
dist/assets/logo.1cbb4412.png


File diff suppressed because it is too large
+ 0 - 0
dist/assets/polyfills-legacy.70c21091.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/vendor-legacy.1fc911ea.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/vendor.2b18510b.js


二進制
dist/favicon.ico


+ 20 - 0
dist/index.html

@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html lang="zh">
+  <head>
+    <meta charset="UTF-8" />
+    <link rel="icon" href="./favicon.ico" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>管乐迷</title>
+    <script type="module" crossorigin src="./assets/index.8ea5a330.js"></script>
+    <link rel="modulepreload" href="./assets/vendor.2b18510b.js">
+    <link rel="stylesheet" href="./assets/index.7fe069c0.css">
+  <link rel="manifest" href="./manifest.webmanifest"><script src="./registerSW.js"></script>  <script type="module">!function(){try{new Function("m","return import(m)")}catch(o){console.warn("vite: loading legacy build because dynamic import is unsupported, syntax error above should be ignored");var e=document.getElementById("vite-legacy-polyfill"),n=document.createElement("script");n.src=e.src,n.onload=function(){System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))},document.body.appendChild(n)}}();</script>
+</head>
+  <body>
+    <div id="app"></div>
+    
+    <script nomodule>!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",(function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()}),!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script>
+    <script nomodule id="vite-legacy-polyfill" src="./assets/polyfills-legacy.70c21091.js"></script>
+    <script nomodule id="vite-legacy-entry" data-src="./assets/index-legacy.7cf04075.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
+  </body>
+</html>

+ 1 - 0
dist/manifest.webmanifest

@@ -0,0 +1 @@
+{"name":"管乐迷","short_name":"管乐迷","start_url":"./","display":"standalone","background_color":"#ffffff","lang":"en","scope":"./","theme_color":"#01C1B5","icons":[{"src":"./pwa-192x192.png","sizes":"192x192","type":"image/png"},{"src":"./pwa-512x512.png","sizes":"512x512","type":"image/png"}]}

二進制
dist/pwa-192x192.png


二進制
dist/pwa-512x512.png


+ 1 - 0
dist/registerSW.js

@@ -0,0 +1 @@
+if('serviceWorker' in navigator) {window.addEventListener('load', () => {navigator.serviceWorker.register('./sw.js', { scope: './' })})}

+ 1 - 0
dist/sw.js

@@ -0,0 +1 @@
+if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()})).then((()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e})));self.define=(n,l)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(s[r])return;let u={};const o=e=>i(e,r),t={module:{uri:r},exports:u,require:o};s[r]=Promise.all(n.map((e=>t[e]||o(e)))).then((e=>(l(...e),u)))}}define(["./workbox-3e4da89b"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.precacheAndRoute([{url:"assets/index-legacy.26f8dd5f.js",revision:null},{url:"assets/index-legacy.502c7746.js",revision:null},{url:"assets/index-legacy.7cf04075.js",revision:null},{url:"assets/index-legacy.997f385b.js",revision:null},{url:"assets/index.49150f4c.css",revision:null},{url:"assets/index.526ec19c.css",revision:null},{url:"assets/index.76543d1a.js",revision:null},{url:"assets/index.7fe069c0.css",revision:null},{url:"assets/index.8074ef92.css",revision:null},{url:"assets/index.8ea5a330.js",revision:null},{url:"assets/index.bdaa7270.js",revision:null},{url:"assets/index.dd65b2b0.js",revision:null},{url:"assets/polyfills-legacy.70c21091.js",revision:null},{url:"assets/vendor-legacy.1fc911ea.js",revision:null},{url:"assets/vendor.2b18510b.js",revision:null},{url:"index.html",revision:"4e8358ecfd33fab2b25d2b36397f061a"},{url:"registerSW.js",revision:"402b66900e731ca748771b6fc5e7a068"},{url:"./pwa-192x192.png",revision:"144ca4ef34624022115c42af32467546"},{url:"./pwa-512x512.png",revision:"20d9c073708b48a904cefb9dff19d953"},{url:"manifest.webmanifest",revision:"4ce737594a4ed2f47d75bd675ae58fc0"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))}));

File diff suppressed because it is too large
+ 0 - 0
dist/workbox-3e4da89b.js


+ 1 - 1
package.json

@@ -19,7 +19,7 @@
     "js-cookie": "^3.0.1",
     "mitt": "^3.0.0",
     "nprogress": "^0.2.0",
-    "qrcodejs2": "0.0.2",
+    "query-string": "^7.1.1",
     "umi-request": "^1.4.0",
     "vue": "^3.2.25",
     "vue-router": "^4.0.12"

+ 8 - 22
src/App.vue

@@ -1,28 +1,14 @@
 <script setup lang="ts">
 // This starter template is using Vue 3 <script setup> SFCs
 // Check out https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup
-import { ElMessage } from "element-plus";
-const getQueryVariable = (variable: string) => {
-  if (window.location.hash.indexOf("?") < 0) {
-    return null;
-  }
-  let query = window.location.hash.split("?")[1];
-  let vars = query.split("&");
-  for (let i = 0; i < vars.length; i++) {
-    let pair = vars[i].split("=");
-    if (pair[0] == variable) {
-      return pair[1];
-    }
-  }
-  return false;
-};
-const roomUid =
-  getQueryVariable("roomUid") || sessionStorage.getItem("roomUid");
-
-if (!roomUid) {
-  ElMessage.error("房间不存在");
-} else {
-  sessionStorage.setItem("roomUid", roomUid);
+import qs from 'query-string'
+const parseSearch: any = qs.parse(location.search)
+const hashSearch = location.href.split('#/')[1]
+const hashParams = qs.parse(hashSearch.split('?')[1])
+const roomUid: string = parseSearch.roomUid || hashParams.roomUid || ''
+// 如果房间号的值时则替换
+if(roomUid) {
+  sessionStorage.setItem('roomUid', roomUid)
 }
 </script>
 

+ 1 - 2
src/components/live-message/model/join-model.tsx

@@ -101,7 +101,6 @@ export default defineComponent({
       <div style={{ minHeight: '100%', position: 'relative' }}>
         {list.length > 0 ? list.map((item: any) => (
           <div class={styles.itemContent}>
-            {/* <img src="/src/assets/home/placehorder-icon.png" alt="" /> */}
             <div class={styles.itemInfo}>
               <div class={styles.itemName}>
                 <p class={styles.userName}>
@@ -126,7 +125,7 @@ export default defineComponent({
               </div>
             </div>
           </div>
-        )) : this.loadingJoin ? <div class={styles.loadingStyle} v-loading={this.loadingJoin} element-loading-background="rgba(0, 0, 0, 0.8)"></div> : <Empty style={{ paddingTop: '120px' }} text="暂无学员发起连麦!" icon="noData-no-join" />}
+        )) : this.loadingJoin ? <div class={styles.loadingStyle}><div class="el-loading-mask" style="background-color: rgba(0, 0, 0, 0.8);"><div class="el-loading-spinner"><svg class="circular" viewBox="25 25 50 50"><circle class="path" cx="50" cy="50" r="20" fill="none"></circle></svg></div></div></div> : <Empty style={{ paddingTop: '120px' }} text="暂无学员发起连麦!" icon="noData-no-join" />}
       </div>
     )
   }

+ 1 - 3
src/components/live-message/model/look-model.tsx

@@ -148,16 +148,14 @@ export default defineComponent({
       <div>
         {runtimeModel.lookList.length > 0 ? runtimeModel.lookList.map((item : any) => (
           <div class={styles.itemContent}>
-            {/* <img src="/src/assets/home/placehorder-icon.png" alt="" /> */}
             <div class={styles.itemInfo} >
               <div class={styles.itemName}>
                 <p class={styles.userName}>{item.name}</p>
                 {item.type == 1 ? <ElButton size="small" type="primary" class={styles.btn} onClick={() => this.onUpLook(item)}>上麦</ElButton> : <ElButton size="small" plain class={[styles.btn, styles.downBtn]} onClick={() => this.onDownLook(item)}>下麦</ElButton>}
-                {/* {item.type == 1 ? <a href="javascript:;" class={[styles.btn, styles.downBtn]} onClick={() => this.onDownLook(item)}>下麦</a> : <a href="javascript:;" class={styles.btn} onClick={() => this.onUpLook(item)}>上麦</a>} */}
               </div>
             </div>
           </div>
-        )) : this.loadingLook ? <div class={styles.loadingStyle} v-loading={this.loadingLook} element-loading-background="rgba(0, 0, 0, 0.8)"></div> : <Empty style={{ paddingTop: '120px' }} text="暂无学员观看!" icon="noData-no-user" />}
+        )) : this.loadingLook ? <div class={styles.loadingStyle} ><div class="el-loading-mask" style="background-color: rgba(0, 0, 0, 0.8);"><div class="el-loading-spinner"><svg class="circular" viewBox="25 25 50 50"><circle class="path" cx="50" cy="50" r="20" fill="none"></circle></svg></div></div></div> : <Empty style={{ paddingTop: '120px' }} text="暂无学员观看!" icon="noData-no-user" />}
       </div>
     )
   }

+ 3 - 46
src/components/live-message/model/message-model.tsx

@@ -11,12 +11,6 @@ import Empty from "/src/components/empty";
 import runtime, * as RuntimeUtils from '/src/components/live-message/model/runtime'
 
 export default defineComponent({
-  props: {
-    data: {
-      type: Array,
-      default: () => ([])
-    }
-  },
   data() {
     return {
       messageList: [] as any[], // 回复学生列表
@@ -85,48 +79,9 @@ export default defineComponent({
   },
   render() {
     return (
-      // <RecycleScroller class="virtual-list"
-      //   style="height: 185px"
-      //   item-height={85}
-      //   items={this.messageList}
-      //   key-field="id"
-      // >
-      //   <div style={{ color: '#fff' }}>showInfo</div>
-      // </RecycleScroller>
-      //     <VirtualList class="list-dynamic scroll-touch"
-      //     :data-key="'id'"
-      //     :data-sources="items"
-      //     :estimate-size="80"
-      //     :item-class="'list-item-dynamic'"
-      //     ref="virtualList"
-      //   >
-      //   <template #={source}>
-      //       <div class="item-inner">
-      //           <div class="head">
-      //               <span># {{ source.index }}</span>
-      //               <span>{{ source.name }}</span>
-      //           </div>
-      //           <div class="desc">{{ source.desc }}</div>
-      //       </div>
-      //   </template>
-      // </VirtualList>
-      // <VirtualList class={styles.itemContent}
-      //   dataKey="id"
-      //   dataSources={this.messageList}
-      //   estimateSize="85"
-      //   itemClass="'itemInfo'"
-      //   ref="virtualList">
-      //     <template v-slot={source}>
-      //       <div style={{ color: 'red' }}>
-      //         { source }
-      //       </div>
-      //     </template>
-      // </VirtualList>
-
       <div style={{ minHeight: '100%', position: 'relative' }} id="messageList">
         {runtime.messageList.length > 0 ? runtime.messageList.map((item: any) => (
           <div class={styles.itemContent}>
-            {/* <img src="/src/assets/home/placeholder-icon.png" alt="" /> */}
             <div class={styles.itemInfo}>
               <div class={styles.itemName}>
                 <p class={styles.userName}>
@@ -139,7 +94,9 @@ export default defineComponent({
               </div>
             </div>
           </div>
-        )) : (this.loadingMessage ? <div class={styles.loadingStyle} v-loading={this.loadingMessage} element-loading-background="rgba(0, 0, 0, 0.8)"></div> : <Empty style={{ paddingTop: '120px' }} text="暂无学员互动!" icon="noData-no-message" />)}
+        )) : (this.loadingMessage ? <div class={styles.loadingStyle}>
+          <div class="el-loading-mask" style="background-color: rgba(0, 0, 0, 0.8);"><div class="el-loading-spinner"><svg class="circular" viewBox="25 25 50 50"><circle class="path" cx="50" cy="50" r="20" fill="none"></circle></svg></div></div>
+          </div>: <Empty style={{ paddingTop: '120px' }} text="暂无学员互动!" icon="noData-no-message" />)}
       </div>
     )
   }

+ 1 - 2
src/helpers/request.ts

@@ -76,8 +76,7 @@ request.interceptors.response.use(async (res, options) => {
       if(!hideMessage) {
         ElMessage.error(`登录过期,请重新登录!`)
       }
-      const url = window.location.href.split('#')[0]
-      router.push(`/login?redirect=${url}`)
+      router.push(`/login`)
     }
     if(data.code === 404) {
       if(!hideMessage) {

+ 1 - 17
src/pages/login/index.tsx

@@ -9,14 +9,6 @@ import FromBg from './images/from-bg.png'
 
 export default defineComponent({
   data() {
-    // const validateUsername = (rule: any, value: any, callback: () => void) => {
-    //   if (!value) {
-    //     // @ts-ignore
-    //     callback(new Error("请输入手机号"));
-    //   } else {
-    //     callback();
-    //   }
-    // }
     const validatePassword = (rule: any, value: string | any[], callback: () => void) => {
       if (value.length < 6) {
         // @ts-ignore
@@ -80,13 +72,6 @@ export default defineComponent({
         if (valid) {
           try {
             // 根据手机号获取学生信息
-            // export const checkStudentPhone = (data) => request2({
-            //   url: '/api-web/studentManage/queryUserByPhone',
-            //   method: 'get',
-            //   params: data,
-            //   hideLoading: true
-            // })
-            // /auth-server/user/queryUserByPhone
             const resPhone: any = await request('/api-auth/user/queryClient', {
               params: {
                 phone: loginForm.username
@@ -110,7 +95,6 @@ export default defineComponent({
               }
             })
             let token: string = res?.data.authentication.token_type + ' ' + res?.data.authentication.access_token;
-            console.log(token);
             setToken(token)
 
             const roomUid = sessionStorage.getItem('roomUid')
@@ -119,7 +103,7 @@ export default defineComponent({
                 roomUid: roomUid
               }
             })
-          
+
             sessionStorage.setItem('details',JSON.stringify(details.data))
             ElMessage.success('登录成功')
             this.$router.push(this.redirect || '/')

+ 5 - 5
src/permission.ts

@@ -4,8 +4,9 @@ import request from '/src/helpers/request'
 import { ElMessage } from "element-plus";
 import { state } from "./state";
 // import NProgress from "nprogress"; // progress bar
-import "nprogress/nprogress.css"; // progress bar style
+// import "nprogress/nprogress.css"; // progress bar style
 import { getToken, removeToken } from "./utils/auth";
+import qs from 'query-string'
 // import getPageTitle from '@/utils/get-page-title'
 
 // NProgress.configure({ showSpinner: false }); // NProgress Configuration
@@ -19,7 +20,7 @@ router.beforeEach(async (to, from, next) => {
   const hasToken = getToken();
   if (hasToken) {
     if (to.path === "/login") {
-      // 如果有tonken直接跳转到首页
+      // 如果有token直接跳转到首页
       next({ path: "/" });
 
       // NProgress.done();
@@ -46,8 +47,7 @@ router.beforeEach(async (to, from, next) => {
             ElMessage.error(error.msg);
           }
           removeToken();
-          // ?redirect=${to.fullPath}
-          next(`/login`);
+          next(`/login?${qs.stringify(to.query)}`);
           // NProgress.done();
         }
       }
@@ -59,7 +59,7 @@ router.beforeEach(async (to, from, next) => {
       next();
     } else {
       // other pages that do not have permission to access are redirected to the login page.
-      next(`/login?redirect=${to.fullPath}`);
+      next(`/login?${qs.stringify(to.query)}`);
       // NProgress.done();
     }
   }

+ 25 - 0
yarn.lock

@@ -2350,6 +2350,11 @@ fill-range@^7.0.1:
   dependencies:
     to-regex-range "^5.0.1"
 
+filter-obj@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.npmmirror.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b"
+  integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==
+
 for-in@^1.0.2:
   version "1.0.2"
   resolved "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
@@ -3671,6 +3676,16 @@ query-string@^4.3.2:
     object-assign "^4.1.0"
     strict-uri-encode "^1.0.0"
 
+query-string@^7.1.1:
+  version "7.1.1"
+  resolved "https://registry.npmmirror.com/query-string/-/query-string-7.1.1.tgz#754620669db978625a90f635f12617c271a088e1"
+  integrity sha512-MplouLRDHBZSG9z7fpuAAcI7aAYjDLhtsiVZsevsfaHWDS2IDdORKbSd1kWUA+V4zyva/HZoSfpwnYMMQDhb0w==
+  dependencies:
+    decode-uri-component "^0.2.0"
+    filter-obj "^1.1.0"
+    split-on-first "^1.0.0"
+    strict-uri-encode "^2.0.0"
+
 queue-microtask@^1.2.2:
   version "1.2.3"
   resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
@@ -4016,6 +4031,11 @@ sourcemap-codec@^1.4.4:
   resolved "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
   integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
 
+split-on-first@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.npmmirror.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f"
+  integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==
+
 split-string@^3.0.1, split-string@^3.0.2:
   version "3.1.0"
   resolved "https://registry.npmmirror.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
@@ -4041,6 +4061,11 @@ strict-uri-encode@^1.0.0:
   resolved "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
   integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==
 
+strict-uri-encode@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546"
+  integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==
+
 "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.2.3:
   version "4.2.3"
   resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"

Some files were not shown because too many files changed in this diff