diff --git a/config/config.ts b/config/config.ts index e69de29..670191e 100644 --- a/config/config.ts +++ b/config/config.ts @@ -0,0 +1,11 @@ +import GlobalConfig from '../src/utils/env/dev'; +const proxy = { + '/api': { + target: GlobalConfig['PROXY_SERVER'], + changeOrigin: true, + withCredentials: true, + secure: false, + cookieDomainRewrite: 'localhost', + } +}; +export default proxy; diff --git a/package.json b/package.json index 2767439..53c771e 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "dependencies": { "antd": "^5.11.2", "dayjs": "^1.11.10", + "dva": "^2.4.1", "moment": "^2.29.4", "umi": "^4.0.88" }, diff --git a/src/pages/InitialSystem/DeviceInstall/index.tsx b/src/pages/InitialSystem/DeviceInstall/index.tsx index 7888c7e..28bde5b 100644 --- a/src/pages/InitialSystem/DeviceInstall/index.tsx +++ b/src/pages/InitialSystem/DeviceInstall/index.tsx @@ -2,6 +2,7 @@ import { FC, useEffect, useState } from 'react'; import styles from './index.less'; import { Input } from 'antd'; import ButtonComp from '@/components/ButtonComp'; +import { deviceInstall_deviceInstall } from '@/services/api'; interface PageProps { } @@ -27,8 +28,15 @@ const DeviceInstall: FC = ({ }) => {
- {}} /> - {}} /> + { + + }} /> + { + deviceInstall_deviceInstall({}).then((res) => { + console.log("Res",res); + + }) + }} />
出装盘信息
diff --git a/src/services/api.ts b/src/services/api.ts index e69de29..a806d67 100644 --- a/src/services/api.ts +++ b/src/services/api.ts @@ -0,0 +1,15 @@ +// --------------------------初装系统--------------------------- +// 数据安装 +export async function deviceInstall_deviceInstall(data: any) { + return postRequest(`/deviceInit/deviceInstall.json`, data); +} + +// 设备初装 +export async function deviceInit_init(data: any) { + return postRequest(`/deviceInit/init.json`, data); +} + +// 开机认证 +export async function college_table_query(params: any) { + return getRequest(`/deviceInit/powerOnAuth.json`, params); +} \ No newline at end of file diff --git a/src/utils/fetch.ts b/src/utils/fetch.ts deleted file mode 100644 index 7fe6166..0000000 --- a/src/utils/fetch.ts +++ /dev/null @@ -1,442 +0,0 @@ -// import { fetch } from 'dva'; -import { Modal, notification } from 'antd'; -import hash from 'hash.js'; -import { getDvaApp, history } from 'umi'; -import ENV from './env/dev'; -import { setHeader } from '.'; -let modalConfirm: any; -const codeMessage: any = { - 200: '服务器成功返回请求的数据。', - 201: '新建或修改数据成功。', - 202: '一个请求已经进入后台排队(异步任务)。', - 204: '删除数据成功。', - 400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。', - 401: '用户没有权限(令牌、用户名、密码错误)。', - 403: '用户得到授权,但是访问是被禁止的。', - 404: '发出的请求针对的是不存在的记录,服务器没有进行操作。', - 406: '请求的格式不可得。', - 410: '请求的资源被永久删除,且不会再得到的。', - 422: '当创建一个对象时,发生一个验证错误。', - 500: '服务器发生错误,请检查服务器。', - 502: '网关错误。', - 503: '服务不可用,服务器暂时过载或维护。', - 504: '网关超时。', -}; -interface Response { - status: number; - statusText: string; - json: any; - message: string; -} -interface Params { - [key: string]: any; -} -const checkStatus = async (response: Response, responseData: any) => { - if (response.status >= 200 && response.status < 300) { - return response; - } - - // debugger; - const errortext = codeMessage[response.status] || response.statusText; - let text; - var resJson = response.json(); - - await resJson.then((resolve: any, reject: any) => { - setTimeout(() => { - let app = getDvaApp(); - // reportData(ENV.REPORT_SERVER + "/report/error", { - // code: resolve.code, - // status: response.status, - // message: resolve.message, - // requestData: { ...responseData, cookie: document.cookie }, - // responseData: { ...response, ...resolve }, - // user: app._store.getState().user.userInfo - // }) - }, 400); - text = resolve.message; - notification.error({ - style: { wordBreak: 'break-all' }, - // duration: null, - message: resolve.message || `请求错误 ${response.status}: ${response.message}`, - description: resolve.message ? '' : errortext, - }); - }); - - const error: any = new Error(errortext); - error.name = response.status; - error.response = response; - throw { - data: response, - code: response.status, - message: text || errortext, - }; -}; - -const cachedSave = (response: any, hashcode: any) => { - const contentType = response.headers.get('Content-Type'); - if (contentType && contentType.match(/application\/json/i)) { - response - .clone() - .text() - .then(() => { - // sessionStorage.setItem(hashcode, content) - // sessionStorage.setItem(`${hashcode}:timestamp`, Date.now()) - }); - } - return response; -}; - -export const parseParams = (param: Params) => { - param = param || {}; - // param.domain = window.location.host - let paramStr = ''; - for (let key in param) { - if (typeof param[key] === 'object') { - if (Array.isArray(param[key])) { - param[key].forEach((element: string, k: number) => { - paramStr += '&' + key + `[]=` + element; - }); - } - } else { - // if ((param[key]) || param[key] === 0) - paramStr += '&' + key + '=' + param[key]; - } - } - return paramStr.substr(1); -}; - -export default function request(url: string, option: any, flag?: boolean, ismin?: boolean) { - !option.method ? (option.method = 'get') : ''; - option.method = option.method.toUpperCase(); - option.mode = 'cors'; - - const options = { - ...option, - }; - - if (options.body) { - options.body.is_test = 1; - options.body.is_admin = true; - } else if (options.params) { - options.params.is_test = 1; - options.params.is_admin = true; - } else { - options.params = { is_test: 1, is_admin: true }; - } - - // options.domain = window.location.host - - const fingerprint = url + (options.body ? JSON.stringify(options.body) : ''); - const hashcode = hash.sha256().update(fingerprint).digest('hex'); - - const defaultOptions = { - credentials: 'include', - withCredentials: true, - }; - - let newOptions = { ...defaultOptions, ...options }; - if ( - newOptions.method === 'POST' || - newOptions.method === 'PUT' || - newOptions.method === 'PATCH' || - newOptions.method === 'DELETE' - ) { - if (!flag) { - newOptions.headers = { - Accept: 'application/json', - 'Content-Type': 'application/json; charset=utf-8', - ...newOptions.headers, - }; - newOptions.body = JSON.stringify(options.body); - } else { - newOptions.headers = { - ...newOptions.headers, - }; - newOptions.body = options.body; - } - } - - if (newOptions.method == 'GET' || newOptions.method == 'DELETE') { - newOptions.headers = { - Accept: 'application/json', - 'Content-Type': 'application/json; charset=utf-8', - ...newOptions.headers, - }; - if (options.params) url += '?' + parseParams(options.params); - } - // newOptions.headers.withCredentials=true; - // newOptions.headers.Authorization = - // 'Bearer 09cb06de7874a0cfae0608ba5126b3b30dcb5d2a' - // if (localStorage.getItem('xhr-user-info')) { - // const token = JSON.parse(localStorage.getItem('xhr-user-info')).apiToken - // newOptions.headers.Authorization = 'Bearer ' + token - // } - - const expirys = options.expirys && 60; - /** - * @description: 枚举出请求数据格式类型 - * @param {type} 枚举类型 - * @return: - */ - enum ContentType { - json = 'application/json;charset=UTF-8', - form = 'application/x-www-form-urlencoded; charset=UTF-8', - } - /** - * @description: 枚举request请求的method方法 - * @param {type} 枚举类型 - * @return: - */ - enum HttpMethod { - get = 'GET', - post = 'POST', - } - /** - * @description: 声明请求头header的类型 - * @param {type} - * @return: - */ - interface IHeader { - Accept?: string; - 'Content-Type': string; - [propName: string]: any; - } - /** - * @description: 声明fetch请求参数配置 - * @param {type} - * @return: - */ - interface IReqConfig { - method?: string; - credentials?: string; - headers?: IHeader; - body?: any; - } - interface IHttp { - getFetch(url: string, params?: P, options?: RequestInit): Promise; - // getFetchJsonp(url: string, params?:P, options?:RequestInit): Promise; - postFetch(url: string, params?: P): Promise; - } - - // if (options.expirys !== false) { - // const cached = sessionStorage.getItem(hashcode) - // const whenCached = sessionStorage.getItem(`${hashcode}:timestamp`) - // if (cached !== null && whenCached !== null) { - // const age = (Date.now() - whenCached) / 1000 - // if (age < expirys) { - // const response = new Response(new Blob([cached])) - // return response.json() - // } - // sessionStorage.removeItem(hashcode) - // sessionStorage.removeItem(`${hashcode}:timestamp`) - // } - // } - - const downloadFile = async (response: any) => { - const d = await response.arrayBuffer(); - let fileName: any; - const blob = new Blob([d]); - try { - fileName = response.headers - .get('Content-Disposition') - .split(';')[1] - .replace('filename=', '') - .replace(/[\s+,\',\",\‘,\’,\“,\”,\<,\>,\《,\》]/g, ''); - } catch (e) { - fileName = 'userfiles.zip'; - } - const a = document.createElement('a'); - const url = window.URL.createObjectURL(blob); - const filename = fileName; - a.href = url; - a.download = filename; - a.click(); - window.URL.revokeObjectURL(url); - return d; - }; - - // const timenow = Date.now(); - // const stringToSign = - // "method=" + newOptions.method + "&"+ - // (newOptions.params ? parseParamsStr(newOptions.params) + "&" : "") + - // (newOptions.body ? parseParamsStr(newOptions.body) : "") + - // "ak=e83900ca9be33747397cc81a8f68ac11" + "&sk=6de3a75ae5718cde1e0907a593afd01f&time=" + timenow; - - // newOptions.headers["X-EDU-Timestamp"] = timenow; - // newOptions.headers["X-EDU-Signature"] = md5(Base64.encode(stringToSign)); - setHeader(newOptions, url); - - let prefixUrl = ENV.PROXY_SERVER; - if ((window as any).ENV === 'dev' || url.startsWith('http')) prefixUrl = ''; - if (ismin) prefixUrl = ''; - return fetch(prefixUrl + url, newOptions) - .then((response: any) => checkStatus(response, { url: ENV.PROXY_SERVER + url, ...newOptions })) - .then((response: any) => cachedSave(response, hashcode)) - .then(async (response: any) => { - if (response.status === 204) { - return response.text(); - } - let d; - if (response.headers.get('content-type').indexOf('application/json') > -1) { - d = await response.json(); - } else if (newOptions.headers['Content-Type'] === 'application/xml') { - d = await response.text(); - } else if (options.body?.autoDownload || options.params?.autoDownload) { - d = await downloadFile(response); - } else { - d = await response.arrayBuffer(); - } - - try { - if ( - d.status === 401 && - (!newOptions.params?.hidePopLogin || !newOptions.body?.hidePopLogin) - ) { - getDvaApp()._store.dispatch({ - type: 'user/showPopLogin', - payload: { - showPopLogin: true, - showClosable: true, - }, - }); - } - if (d.status === 402) { - if (localStorage.getItem('addinfo') === '2') { - //弹窗 填充信息 - getDvaApp()._store.dispatch({ - type: 'shixunHomeworks/setActionTabs', - payload: { - key: '填充信息弹窗', - }, - }); - } else { - modalConfirm = - modalConfirm || - Modal.confirm({ - centered: true, - visible: false, - okText: '确定', - cancelText: '取消', - }); - modalConfirm.update({ - centered: true, - visible: true, - title: '提示', - content: '您需要去完善您的个人资料,才能使用此功能', - okText: '立即完善', - cancelText: '稍后完善', - onOk: () => { - history.push('/account/profile/edit'); - }, - }); - } - } - } catch (e) {} - handleHttpStatus(d, url); - return d; - }) - .catch((e: any, a: any, b: any) => { - try { - const status = e.code; - if (status) { - if (status === 401) { - getDvaApp()._store.dispatch({ - type: 'user/showPopLogin', - payload: { - showPopLogin: true, - showClosable: true, - }, - }); - return; - } - handleHttpStatus(e, url); - } else { - if (url.includes('/file/filePatchMerge')) { - getDvaApp()._store.dispatch({ - type: 'shixunHomeworks/setActionTabs', - payload: { - key: '分片专用504', - params: newOptions.body, - }, - }); - } else { - notification.warning({ - style: { wordBreak: 'break-all' }, - duration: null, - message: `您的网络可能出现了问题,请稍后再试`, - // description: url, - }); - } - } - - return e; - } catch (e) {} - }); -} - -let historyFlag = false; -let errorFlag = false; -const handleHttpStatus = (e: { status: number; message: string }, url?: string) => { - if ((e.status == -1 || e.status == -2 || e.status > 400) && e.status != 403 && !errorFlag) { - errorFlag = true; - setTimeout(() => (errorFlag = false), 500); - // message.warn({ content: e.message, key: 'message-key' }); - return; - } - - const mapping: { [key: number]: string } = { - 403: '/403', - 404: '/404', - 500: '/500', - }; - - if (mapping[e.status] && !historyFlag) { - const { user }: any = getDvaApp()._store.getState(); - const { userInfo }: any = user; - if ( - window.location.pathname.indexOf('/users') > -1 && - document.domain === 'kepukehuan.educoder.net' - ) - alert(e.status + ':' + userInfo?.id + '---' + url); - historyFlag = true; - setTimeout(() => (historyFlag = false), 500); - if (e.status === 403) { - history.replace(mapping[e.status]); - } else { - history.replace(mapping[e.status]); - } - sessionStorage.setItem('errorStatus', JSON.stringify(e)); - return; - } -}; - -export function get(url: string, params?: Object) { - return request(`/api/${url}`, { - method: 'Get', - params: params || {}, - }); -} -export function getqq(url: string, params?: Object) { - return request(`/${url}`, { - method: 'Get', - params, - }); -} - -export function post(url: string, params?: Object) { - return request(`/api/${url}`, { - method: 'Post', - body: { ...params }, - }); -} - -export function put(url: string, params?: Object) { - return request(`/api/${url}`, { - method: 'Put', - body: { ...params }, - }); -} - -export function del(url: string) { - return request(`/api/${url}`, { method: 'delete' }); -} diff --git a/src/utils/request.ts b/src/utils/request.ts new file mode 100644 index 0000000..0c195e4 --- /dev/null +++ b/src/utils/request.ts @@ -0,0 +1,138 @@ +/** + * GET 请求 + * @param {string} url - 请求的 URL 地址 + * @param {object} params - 请求参数对象 + * @returns {Promise} - 返回一个 Promise 对象,包含 response 数据或 error 信息 + */ +function getRequest(url: string, params: object) { + // 将参数对象转换为查询字符串 + const queryString = Object.keys(params) + .map(key => encodeURIComponent(key) + '=' + encodeURIComponent(params[key])) + .join('&'); + + // 拼接查询字符串到 URL + const urlWithParams = `${url}?${queryString}`; + + return fetch(urlWithParams, { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + }, + }) + .then(response => { + if (!response.ok) { throw new Error('请求失败'); } + return response.json(); + }) + .catch(error => console.error(error)); +} + + +/** + * POST 请求 + * @param {string} url - 请求的 URL 地址 + * @param {object} data - 请求数据 + * @returns {Promise} - 返回一个 Promise 对象,包含 response 数据或 error 信息 + */ +function postRequest(url: string, data: object) { + return fetch(url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(data), + }) + .then(response => { + if (!response.ok) { throw new Error('请求失败'); } + return response.json(); + }) + .catch(error => console.error(error)); +} + + +/** + * Delete 请求 + * @param {string} url - 请求的 URL 地址 + * @param {object} params - 参数对象 + * @returns {Promise} - 返回一个 Promise 对象,表示请求的结果(成功或失败) + */ +function deleteRequest(url: string, params: object) { + const searchParams = new URLSearchParams(params); + return fetch(`${url}?${searchParams.toString()}`, { + method: 'DELETE', + }) + .then(response => { + if (!response.ok) { throw new Error('请求失败'); } + return response.json(); + }) + .catch(error => console.error(error)); +} + + +/** + * 发送 PUT 网络请求 + * @param {string} url - 请求的 URL 地址 + * @param {object} data - 请求的数据 + * @returns {Promise} - 返回一个 Promise 对象,表示请求的结果(成功或失败) + */ +function putRequest(url: string, data: object) { + return fetch(url, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(data) + }) + .then(response => { + if (!response.ok) { throw new Error('请求失败'); } + return response.json(); + }) + .catch(error => console.error(error)); +} + + +/** + * 下载文件请求 + * @param {string} url - 请求的 URL 地址 + * @param {string} fileName - 文件的名称 + * @returns {Promise} - 返回一个 Promise 对象,包含文件 blob 数据或 error 信息 + */ +function downloadFile(url: string, fileName?: string) { + return fetch(url, { + method: 'GET', + }) + .then(response => { + if (!response.ok) { throw new Error('下载失败'); } + response.blob() + }) + .then(blob => { + const url = window.URL.createObjectURL(new Blob([blob])); + const link = document.createElement('a'); + link.href = url; + link.setAttribute('download', (fileName || '文件名称')); // 设置下载文件的名称 + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + }) + .catch(error => console.error(error)); +} + +/** + * 上传文件的网络请求 + * @param {string} url - 上传的 URL 地址 + * @param {File} file - 要上传的文件 + * @returns {Promise} - 返回一个 Promise 对象,表示请求的结果(成功或失败) + */ +function uploadFile(url: string, file: File) { + const formData = new FormData(); + formData.append('file', file); + + return fetch(url, { + method: 'POST', + body: formData + }) + .then(response => { + if (!response.ok) { throw new Error('上传失败'); } + return response.json(); + }) + .catch(error => console.error(error)); +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 26eb71a..80c5146 100644 --- a/yarn.lock +++ b/yarn.lock @@ -357,6 +357,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/runtime@7.0.0-beta.46": + version "7.0.0-beta.46" + resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.0.0-beta.46.tgz#466a9c0498f6d12d054a185981eef742d59d4871" + integrity sha512-/3a3USMKk54BEHhDgY8rtxtaQOs4bp4aQwo6SDtdwmrXmgSgEusWuXNX5oIs/nwzmTD9o8wz2EyAjA+uHDMmJA== + dependencies: + core-js "^2.5.3" + regenerator-runtime "^0.11.1" + "@babel/runtime@7.23.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.7", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.0", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.7.7": version "7.23.2" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" @@ -364,6 +372,13 @@ dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.1.2": + version "7.23.6" + resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.23.6.tgz#c05e610dc228855dc92ef1b53d07389ed8ab521d" + integrity sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.22.15", "@babel/template@^7.3.3": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" @@ -1150,11 +1165,28 @@ resolved "https://registry.yarnpkg.com/@types/hapi__joi/-/hapi__joi-17.1.9.tgz#fb4001df38aba1cd2406ce4b17d4e6fc3b0bd036" integrity sha512-oOMFT8vmCTFncsF1engrs04jatz8/Anwx3De9uxnOK4chgSEgWBvFtpSoJo8u3784JNO+ql5tzRR6phHoRnscQ== +"@types/history@*": + version "5.0.0" + resolved "https://registry.npmmirror.com/@types/history/-/history-5.0.0.tgz#29f919f0c8e302763798118f45b19cab4a886f14" + integrity sha512-hy8b7Y1J8OGe6LbAjj3xniQrj3v6lsivCcrmf4TzSgPzLkhIeKgc5IZnT7ReIqmEuodjfO8EYAuoFvIrHi/+jQ== + dependencies: + history "*" + +"@types/history@^4.7.11": + version "4.7.11" + resolved "https://registry.npmmirror.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" + integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== + "@types/html-minifier-terser@^6.0.0": version "6.1.0" resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== +"@types/isomorphic-fetch@^0.0.34": + version "0.0.34" + resolved "https://registry.npmmirror.com/@types/isomorphic-fetch/-/isomorphic-fetch-0.0.34.tgz#3c3483e606c041378438e951464f00e4e60706d6" + integrity sha512-BmJKuPCZCR6pbYYgi5nKFJrPC4pLoBgsi/B1nFN64Ba+hLLGUcKPIh7eVlR2xG763Ap08hgQafq/Wx4RFb0omQ== + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.6" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" @@ -1203,6 +1235,33 @@ dependencies: "@types/react" "*" +"@types/react-router-dom@^4.2.7": + version "4.3.5" + resolved "https://registry.npmmirror.com/@types/react-router-dom/-/react-router-dom-4.3.5.tgz#72f229967690c890d00f96e6b85e9ee5780db31f" + integrity sha512-eFajSUASYbPHg2BDM1G8Btx+YqGgvROPIg6sBhl3O4kbDdYXdFdfrgQFf/pcBuQVObjfT9AL/dd15jilR5DIEA== + dependencies: + "@types/history" "*" + "@types/react" "*" + "@types/react-router" "*" + +"@types/react-router-redux@^5.0.13": + version "5.0.25" + resolved "https://registry.npmmirror.com/@types/react-router-redux/-/react-router-redux-5.0.25.tgz#6c6901819a0513a2672d8727aa502250bbde1cd4" + integrity sha512-D7gtxg/Assg2T3FWq7iKPGldYbx0QXi3tXww220nT4oLmocsD7IBi66nR6m44Zo1T1rPl4nHO0AveYn/hVeu+w== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router" "^5.1.0" + redux ">= 3.7.2" + +"@types/react-router@*", "@types/react-router@^5.1.0": + version "5.1.20" + resolved "https://registry.npmmirror.com/@types/react-router/-/react-router-5.1.20.tgz#88eccaa122a82405ef3efbcaaa5dcdd9f021387c" + integrity sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react@*", "@types/react@^18.0.33": version "18.2.37" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.37.tgz#0f03af69e463c0f19a356c2660dbca5d19c44cae" @@ -2344,6 +2403,11 @@ core-js@3.28.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.28.0.tgz#ed8b9e99c273879fdfff0edfc77ee709a5800e4a" integrity sha512-GiZn9D4Z/rSYvTeg1ljAIsEqFm0LaN9gVtwDCrKL80zHtS31p9BAjmTxVqTQDMpwlMolJZOFntUG2uwyj7DAqw== +core-js@^2.5.3: + version "2.6.12" + resolved "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" @@ -2656,6 +2720,11 @@ dom-serializer@^1.0.1: domhandler "^4.2.0" entities "^2.0.0" +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.npmmirror.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" @@ -2700,6 +2769,39 @@ duplexify@^4.1.2: readable-stream "^3.1.1" stream-shift "^1.0.0" +dva-core@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/dva-core/-/dva-core-1.4.0.tgz#30aed800b97f07f768e42049094ee3150f48c5d3" + integrity sha512-g1CnnF80+oGTUv9qZCc5vndkPHwoODiAGzdcGFMbT78+SmrbYgbvO5wyRBGvebmLYyaTJt4tLqvHIP+UYJoxkQ== + dependencies: + "@babel/runtime" "7.0.0-beta.46" + flatten "^1.0.2" + global "^4.3.2" + invariant "^2.2.1" + is-plain-object "^2.0.3" + redux "^3.7.1" + redux-saga "^0.16.0" + warning "^3.0.0" + +dva@^2.4.1: + version "2.4.1" + resolved "https://registry.npmmirror.com/dva/-/dva-2.4.1.tgz#a3eeb07bb8bc6e2ff9ffe31799d03cb69e45f5fd" + integrity sha512-ggj/P4lYa+7GBZuNua2Sn8rDjhbb2Mjt9THUKlunSYSBwIVU5xFIBkCB87JBPc274ojL9h/hKOmVFVFlWzlRpg== + dependencies: + "@babel/runtime" "7.0.0-beta.46" + "@types/isomorphic-fetch" "^0.0.34" + "@types/react-router-dom" "^4.2.7" + "@types/react-router-redux" "^5.0.13" + dva-core "^1.4.0" + global "^4.3.2" + history "^4.6.3" + invariant "^2.2.2" + isomorphic-fetch "^2.2.1" + react-redux "5.0.7" + react-router-dom "^4.1.2" + react-router-redux "5.0.0-alpha.9" + redux "^3.7.2" + electron-to-chromium@^1.4.535: version "1.4.588" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.588.tgz#d553f3c008e73488fb181fdf2601fdb0b1ffbb78" @@ -2728,6 +2830,13 @@ emojis-list@^3.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== +encoding@^0.1.11: + version "0.1.13" + resolved "https://registry.npmmirror.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -3167,6 +3276,11 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.npmmirror.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -3317,6 +3431,14 @@ glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" +global@^4.3.2: + version "4.4.0" + resolved "https://registry.npmmirror.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -3447,13 +3569,25 @@ he@^1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -history@5.3.0, history@^5.2.0: +history@*, history@5.3.0, 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" +history@^4.6.3, history@^4.7.2: + version "4.10.1" + resolved "https://registry.npmmirror.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" + integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== + 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" + hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -3463,6 +3597,11 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +hoist-non-react-statics@^2.5.0: + version "2.5.5" + resolved "https://registry.npmmirror.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" + integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== + hoist-non-react-statics@^3.3.1: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" @@ -3544,7 +3683,7 @@ human-signals@^4.3.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== -iconv-lite@^0.6.3: +iconv-lite@^0.6.2, iconv-lite@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== @@ -3618,7 +3757,7 @@ internal-slot@^1.0.4, internal-slot@^1.0.5: hasown "^2.0.0" side-channel "^1.0.4" -invariant@^2.2.4: +invariant@^2.0.0, invariant@^2.2.1, invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -3805,6 +3944,13 @@ is-plain-obj@^4.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== +is-plain-object@^2.0.3: + version "2.0.4" + resolved "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -3825,6 +3971,11 @@ is-shared-array-buffer@^1.0.2: dependencies: call-bind "^1.0.2" +is-stream@^1.0.1: + version "1.1.0" + resolved "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + is-stream@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" @@ -3908,6 +4059,19 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +isomorphic-fetch@^2.2.1: + version "2.2.1" + resolved "https://registry.npmmirror.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA== + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + isomorphic-unfetch@4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-4.0.2.tgz#5fc04eeb1053b7b702278e2cf7a3f246cb3a9214" @@ -4176,12 +4340,17 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash@^4.17.20, lodash@^4.17.21: +lodash-es@^4.17.5, lodash-es@^4.2.1: + version "4.17.21" + resolved "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + +lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5, lodash@^4.2.1: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, 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== @@ -4286,6 +4455,13 @@ mimic-fn@^4.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.npmmirror.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== + dependencies: + dom-walk "^0.1.0" + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -4355,6 +4531,14 @@ node-domexception@^1.0.0: resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.npmmirror.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + node-fetch@^3.2.0: version "3.3.2" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b" @@ -4683,6 +4867,13 @@ path-to-regexp@1.7.0: dependencies: isarray "0.0.1" +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.npmmirror.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" @@ -5089,7 +5280,7 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== -prop-types@^15.7.2, prop-types@^15.8.1: +prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -5570,6 +5761,18 @@ react-merge-refs@^1.1.0: resolved "https://registry.yarnpkg.com/react-merge-refs/-/react-merge-refs-1.1.0.tgz#73d88b892c6c68cbb7a66e0800faa374f4c38b06" integrity sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ== +react-redux@5.0.7: + version "5.0.7" + resolved "https://registry.npmmirror.com/react-redux/-/react-redux-5.0.7.tgz#0dc1076d9afb4670f993ffaef44b8f8c1155a4c8" + integrity sha512-5VI8EV5hdgNgyjfmWzBbdrqUkrVRKlyTKk1sGH3jzM2M2Mhj/seQgPXaz6gVAj2lz/nz688AdTqMO18Lr24Zhg== + dependencies: + hoist-non-react-statics "^2.5.0" + invariant "^2.0.0" + lodash "^4.17.5" + lodash-es "^4.17.5" + loose-envify "^1.1.0" + prop-types "^15.6.0" + react-refresh@0.14.0, react-refresh@^0.14.0: version "0.14.0" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" @@ -5583,6 +5786,27 @@ react-router-dom@6.3.0: history "^5.2.0" react-router "6.3.0" +react-router-dom@^4.1.2: + version "4.3.1" + resolved "https://registry.npmmirror.com/react-router-dom/-/react-router-dom-4.3.1.tgz#4c2619fc24c4fa87c9fd18f4fb4a43fe63fbd5c6" + integrity sha512-c/MlywfxDdCp7EnB7YfPMOfMD3tOtIjrQlj/CKfNMBxdmpJP8xcz5P/UAFn3JbnQCNUxsHyVVqllF9LhgVyFCA== + dependencies: + history "^4.7.2" + invariant "^2.2.4" + loose-envify "^1.3.1" + prop-types "^15.6.1" + react-router "^4.3.1" + warning "^4.0.1" + +react-router-redux@5.0.0-alpha.9: + version "5.0.0-alpha.9" + resolved "https://registry.npmmirror.com/react-router-redux/-/react-router-redux-5.0.0-alpha.9.tgz#825431516e0e6f1fd93b8807f6bd595e23ec3d10" + integrity sha512-euSgNIANnRXr4GydIuwA7RZCefrLQzIw5WdXspS8NPYbV+FxrKSS9MKG7U9vb6vsKHONnA4VxrVNWfnMUnUQAw== + dependencies: + history "^4.7.2" + prop-types "^15.6.0" + react-router "^4.2.0" + react-router@6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.3.0.tgz#3970cc64b4cb4eae0c1ea5203a80334fdd175557" @@ -5590,6 +5814,19 @@ react-router@6.3.0: dependencies: history "^5.2.0" +react-router@^4.2.0, react-router@^4.3.1: + version "4.3.1" + resolved "https://registry.npmmirror.com/react-router/-/react-router-4.3.1.tgz#aada4aef14c809cb2e686b05cee4742234506c4e" + integrity sha512-yrvL8AogDh2X42Dt9iknk4wF4V8bWREPirFfS9gLU1huk6qK41sg7Z/1S81jjTrGHxa3B8R3J6xIkDAA6CVarg== + dependencies: + history "^4.7.2" + hoist-non-react-statics "^2.5.0" + invariant "^2.2.4" + loose-envify "^1.3.1" + path-to-regexp "^1.7.0" + prop-types "^15.6.1" + warning "^4.0.1" + react@18.1.0: version "18.1.0" resolved "https://registry.yarnpkg.com/react/-/react-18.1.0.tgz#6f8620382decb17fdc5cc223a115e2adbf104890" @@ -5631,6 +5868,26 @@ real-require@^0.1.0: resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.1.0.tgz#736ac214caa20632847b7ca8c1056a0767df9381" integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg== +redux-saga@^0.16.0: + version "0.16.2" + resolved "https://registry.npmmirror.com/redux-saga/-/redux-saga-0.16.2.tgz#993662e86bc945d8509ac2b8daba3a8c615cc971" + integrity sha512-iIjKnRThI5sKPEASpUvySemjzwqwI13e3qP7oLub+FycCRDysLSAOwt958niZW6LhxfmS6Qm1BzbU70w/Koc4w== + +"redux@>= 3.7.2": + version "5.0.0" + resolved "https://registry.npmmirror.com/redux/-/redux-5.0.0.tgz#29572e29a439e094ff8fec46883fc45053f6736d" + integrity sha512-blLIYmYetpZMET6Q6uCY7Jtl/Im5OBldy+vNPauA8vvsdqyt66oep4EUpAMWNHauTC6xa9JuRPhRB72rY82QGA== + +redux@^3.7.1, redux@^3.7.2: + version "3.7.2" + resolved "https://registry.npmmirror.com/redux/-/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b" + integrity sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A== + dependencies: + lodash "^4.2.1" + lodash-es "^4.2.1" + loose-envify "^1.1.0" + symbol-observable "^1.0.3" + reflect.getprototypeof@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" @@ -5660,6 +5917,11 @@ regenerator-runtime@0.13.11: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== +regenerator-runtime@^0.11.1: + version "0.11.1" + resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + regenerator-runtime@^0.14.0: version "0.14.0" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" @@ -5710,6 +5972,11 @@ 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.npmmirror.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" + integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== + resolve-pkg-maps@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" @@ -6209,6 +6476,11 @@ svgo@^2.8.0: picocolors "^1.0.0" stable "^0.1.8" +symbol-observable@^1.0.3: + version "1.2.0" + resolved "https://registry.npmmirror.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + synckit@0.8.5: version "0.8.5" resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.5.tgz#b7f4358f9bb559437f9f167eb6bc46b3c9818fa3" @@ -6265,6 +6537,16 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" +tiny-invariant@^1.0.2: + version "1.3.1" + resolved "https://registry.npmmirror.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" + integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== + +tiny-warning@^1.0.0: + version "1.0.3" + resolved "https://registry.npmmirror.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + titleize@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/titleize/-/titleize-3.0.0.tgz#71c12eb7fdd2558aa8a44b0be83b8a76694acd53" @@ -6474,6 +6756,11 @@ utila@~0.4: resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== +value-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" + integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== + vary@^1: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -6502,6 +6789,20 @@ walker@^1.0.8: dependencies: makeerror "1.0.12" +warning@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" + integrity sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ== + dependencies: + loose-envify "^1.0.0" + +warning@^4.0.1: + version "4.0.3" + resolved "https://registry.npmmirror.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" @@ -6514,6 +6815,11 @@ web-streams-polyfill@^3.0.3: resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== +whatwg-fetch@>=0.10.0: + version "3.6.19" + resolved "https://registry.npmmirror.com/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz#caefd92ae630b91c07345537e67f8354db470973" + integrity sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw== + which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"