-
-
-
\ No newline at end of file
diff --git a/src/router/index.ts b/src/router/index.ts
index 3e1369f..b8945a4 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -3,6 +3,7 @@ import {createWebHistory, createRouter, RouteRecordRaw} from 'vue-router';
// 公共路由
export const constantRoutes: RouteRecordRaw[] = [
+ {path: '/serve', component: () => import('@/views/serve/index.vue')},
{path: '/', component: () => import('@/views/index.vue')},
];
diff --git a/src/utils/request.js b/src/utils/request.js
index aa42faa..277b167 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -1,10 +1,10 @@
import axios from 'axios';
-import {ElMessage} from "element-plus";
+import { ElMessage } from "element-plus";
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8';
const service = axios.create({
- baseURL: '/dev-api', timeout: 10000
+ baseURL: '/dev-api', timeout: 100000
});
service.interceptors.request.use(config => {
@@ -16,7 +16,7 @@ service.interceptors.response.use(res => {
return res.data;
}, error => {
console.log('err' + error);
- let {message} = error;
+ let { message } = error;
if (message == 'Network Error') {
message = '后端接口连接异常';
} else if (message.includes('timeout')) {
@@ -24,11 +24,11 @@ service.interceptors.response.use(res => {
} else if (message.includes('Request failed with status code')) {
message = '系统接口' + message.substr(message.length - 3) + '异常';
}
- ElMessage({message: message, type: 'error', duration: 5 * 1000});
+ ElMessage({ message: message, type: 'error', duration: 5 * 1000 });
return Promise.reject(error);
});
-function request({method = 'get', url, data = {}, params = {}}) {
+function request({ method = 'get', url, data = {}, params = {} }) {
return service({
method, url, data, params
});
diff --git a/src/views/index.vue b/src/views/index.vue
index f018e10..3e7e410 100644
--- a/src/views/index.vue
+++ b/src/views/index.vue
@@ -19,7 +19,7 @@ import {
setParasSignalpro,
getShildList,
addShildData,
- delShildData, StartWork, StopWork, RestartWork, ShutDownWork
+ delShildData, StartWork, StopWork, RestartWork, ShutDownWork, getAllAirPort, getArea, GetAllCData
} from "@/api/api";
const scaleRatio = ref(window.innerWidth / 1080)
@@ -69,21 +69,17 @@ const TOP = defineComponent({
const LEFT = defineComponent({
name: 'LEFT',
setup() {
- const boxPos = ref({x: 120.005, y: 30.005, rotate: 0})
+ const boxPos = ref({x: 100, y: 100, rotate: 30})
return () => (
)
@@ -104,10 +100,15 @@ const RIGHT = defineComponent({
placeholder="请选择机场名称"
style={{width: "200px"}}
clearable
- onUpdate:modelValue={val => (form1.value.region = val)}
+ onUpdate:modelValue={val => selectUpdate(val)}
>
-
-
+ {
+ options1.value.map(i => {
+ return
+ })
+ }
+
+
@@ -119,8 +120,12 @@ const RIGHT = defineComponent({
clearable
onUpdate:modelValue={val => (form1.value.region1 = val)}
>
-
-
+
+ {
+ options2.value.map(i => {
+ return
+ })
+ }
@@ -310,10 +315,13 @@ const RIGHT = defineComponent({
placeholder="请选择机场名称"
style={{width: "200px"}}
clearable
- onUpdate:modelValue={val => (form6.value.region = val)}
+ onUpdate:modelValue={val => select2Update(val)}
>
-
-
+ {
+ options1.value.map(i => {
+ return
+ })
+ }
@@ -323,15 +331,18 @@ const RIGHT = defineComponent({
placeholder="请选择区域名称"
style={{width: "200px"}}
clearable
- onUpdate:modelValue={val => (form6.value.region1 = val)}
+ onUpdate:modelValue={val => select3Update(val)}
>
-
-
+ {
+ options2.value.map(i => {
+ return
+ })
+ }
- 确定
+ 确定
@@ -624,21 +635,21 @@ let area = {
}
const dots = ref([
{
- lon: 120.0051,
- lat: 30.006
+ x: 150,
+ y: 98
},
{
- lon: 120.0045,
- lat: 30.005
+ x: 50,
+ y: 102
},
{
- lon: 120.009,
- lat: 30.006
+ x: 75,
+ y: 75
},
{
- lon: 120.0046,
- lat: 30.007
- },
+ x: 125,
+ y: 125
+ }
])
const points = ref([
@@ -771,6 +782,7 @@ const parasPosForm = ref({
})
onMounted(() => {
+ getTableData()
ad()
getOption()
getShildTableList()
@@ -796,7 +808,7 @@ onMounted(() => {
name: '点位4',
},
]
- getArea()
+ getArea1()
// setDot({
// "DarDatas": [{"Lon": 117.213524, "Lat": 36.837967}, {"Lon": 0.0, "Lat": 0.0}, {
@@ -902,27 +914,27 @@ const getShildTableList = () => {
const ad = () => {
-// 1. 创建 WebSocket 连接(ws:// 或 wss://)
-// const socket = new WebSocket("ws://192.168.1.123:7789/ws");
+ // 1. 创建 WebSocket 连接(ws:// 或 wss://)
+ // const socket = new WebSocket("ws://192.168.1.123:7789/ws");
const socket = new WebSocket("ws://192.168.1.123:7789/ws");
-// 2. 连接成功时触发
+ // 2. 连接成功时触发
socket.addEventListener("open", () => {
console.log("✅ WebSocket 连接成功");
});
-// 3. 接收消息
+ // 3. 接收消息
socket.addEventListener("message", (event) => {
console.log(JSON.parse(event.data))
processData(JSON.parse(event.data))
});
-// 4. 连接关闭时触发
+ // 4. 连接关闭时触发
socket.addEventListener("close", () => {
console.log("❌ WebSocket 已关闭");
});
-// 5. 出错时触发
+ // 5. 出错时触发
socket.addEventListener("error", (error) => {
console.error("⚠️ WebSocket 出错:", error);
});
@@ -946,7 +958,7 @@ const getPoint = (k) => {
points.value[k].lon = currentPosition.value.lon || 0
points.value[k].lat = currentPosition.value.lat || 0
}
-const getArea = () => {
+const getArea1 = () => {
if (points.value.length < 4) return
let data = points.value
@@ -971,7 +983,7 @@ const getArea = () => {
}
const savePoint = () => {
localStorage.setItem('points', JSON.stringify(points.value))
- getArea()
+ getArea1()
}
const setDot = (e) => {
let dots = e.DarDatas.map((v, k) => {
@@ -995,12 +1007,72 @@ const table1Current = (e, v) => {
}
console.log(e)
}
+
+const getBoundingBoxAndSize = (points) => {
+ if (!points || points.length === 0) return null;
+
+ // 1. 找最大最小经纬度
+ let lons = points.map(p => p.lon);
+ let lats = points.map(p => p.lat);
+
+ let maxLon = Math.max(...lons);
+ let minLon = Math.min(...lons);
+ let maxLat = Math.max(...lats);
+ let minLat = Math.min(...lats);
+
+ // 2. 经纬度差值 (转弧度)
+ const R = 6371000; // 地球半径,米
+ const toRad = d => d * Math.PI / 180;
+
+ let dLat = toRad(maxLat - minLat);
+ let dLon = toRad(maxLon - minLon);
+
+ // 取矩形中心纬度用于修正经度距离
+ let midLat = (maxLat + minLat) / 2;
+ let midLatRad = toRad(midLat);
+
+ // 3. 转换成米
+ let height = dLat * R;
+ let width = dLon * R * Math.cos(midLatRad);
+
+ return {
+ maxLon, minLon, maxLat, minLat,
+ width: Math.abs(width),
+ height: Math.abs(height)
+ };
+}
+
+const options1 = ref([])
+const options2 = ref([])
+const getTableData = async () => {
+ await getAllAirPort().then(e => {
+ options1.value = e.data
+ })
+}
+const selectUpdate = (val) => {
+ form1.value.region = val
+ getArea({airId: val}).then(e => {
+ options2.value = e.data
+ })
+}
+const select2Update = (val) => {
+ form6.value.region = val
+ getArea({airId: val}).then(e => {
+ options2.value = e.data
+ })
+}
+const select3Update = (val) => {
+ form6.value.region1 = val
+}
+const getArea2 = () => {
+ GetAllCData({airId: form6.value.region})
+}
diff --git a/yarn.lock b/yarn.lock
index a425d4b..47f43c5 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1514,6 +1514,13 @@ convert-source-map@^2.0.0:
resolved "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
+copy-anything@^2.0.1:
+ version "2.0.6"
+ resolved "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480"
+ integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==
+ dependencies:
+ is-what "^3.14.1"
+
core-util-is@1.0.2:
version "1.0.2"
resolved "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
@@ -1777,6 +1784,13 @@ err-code@^2.0.2:
resolved "https://registry.npmmirror.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9"
integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==
+errno@^0.1.1:
+ version "0.1.8"
+ resolved "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
+ integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
+ dependencies:
+ prr "~1.0.1"
+
es-define-property@^1.0.0, es-define-property@^1.0.1:
version "1.0.1"
resolved "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa"
@@ -2112,7 +2126,7 @@ got@^11.7.0, got@^11.8.5:
p-cancelable "^2.0.0"
responselike "^2.0.0"
-graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.6:
+graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.6:
version "4.2.11"
resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
@@ -2216,7 +2230,7 @@ iconv-corefoundation@^1.1.7:
cli-truncate "^2.1.0"
node-addon-api "^1.6.3"
-iconv-lite@^0.6.2:
+iconv-lite@^0.6.2, iconv-lite@^0.6.3:
version "0.6.3"
resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
@@ -2228,6 +2242,11 @@ ieee754@^1.1.13:
resolved "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
+image-size@~0.5.0:
+ version "0.5.5"
+ resolved "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
+ integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==
+
imurmurhash@^0.1.4:
version "0.1.4"
resolved "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
@@ -2288,6 +2307,11 @@ is-unicode-supported@^0.1.0:
resolved "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
+is-what@^3.14.1:
+ version "3.14.1"
+ resolved "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1"
+ integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==
+
isbinaryfile@^4.0.8:
version "4.0.10"
resolved "https://registry.npmmirror.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3"
@@ -2386,6 +2410,23 @@ lazy-val@^1.0.5:
resolved "https://registry.npmmirror.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d"
integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==
+less@^4.4.1:
+ version "4.4.1"
+ resolved "https://registry.npmmirror.com/less/-/less-4.4.1.tgz#2f97168bf887ca6a9957ee69e16cc34f8b007cc7"
+ integrity sha512-X9HKyiXPi0f/ed0XhgUlBeFfxrlDP3xR4M7768Zl+WXLUViuL9AOPPJP4nCV0tgRWvTYvpNmN0SFhZOQzy16PA==
+ dependencies:
+ copy-anything "^2.0.1"
+ parse-node-version "^1.0.1"
+ tslib "^2.3.0"
+ optionalDependencies:
+ errno "^0.1.1"
+ graceful-fs "^4.1.2"
+ image-size "~0.5.0"
+ make-dir "^2.1.0"
+ mime "^1.4.1"
+ needle "^3.1.0"
+ source-map "~0.6.0"
+
lodash-es@^4.17.21:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
@@ -2452,6 +2493,14 @@ magic-string@^0.30.18:
dependencies:
"@jridgewell/sourcemap-codec" "^1.5.5"
+make-dir@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
+ integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
+ dependencies:
+ pify "^4.0.1"
+ semver "^5.6.0"
+
make-fetch-happen@^10.2.1:
version "10.2.1"
resolved "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164"
@@ -2503,6 +2552,11 @@ mime-types@^2.1.12:
dependencies:
mime-db "1.52.0"
+mime@^1.4.1:
+ version "1.6.0"
+ resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+ integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
+
mime@^2.5.2:
version "2.6.0"
resolved "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367"
@@ -2635,6 +2689,14 @@ nanoid@^3.3.11:
resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b"
integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==
+needle@^3.1.0:
+ version "3.3.1"
+ resolved "https://registry.npmmirror.com/needle/-/needle-3.3.1.tgz#63f75aec580c2e77e209f3f324e2cdf3d29bd049"
+ integrity sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==
+ dependencies:
+ iconv-lite "^0.6.3"
+ sax "^1.2.4"
+
negotiator@^0.6.3:
version "0.6.4"
resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7"
@@ -2739,6 +2801,11 @@ package-json-from-dist@^1.0.0:
resolved "https://registry.npmmirror.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505"
integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==
+parse-node-version@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b"
+ integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==
+
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
@@ -2777,6 +2844,11 @@ picomatch@^4.0.2, picomatch@^4.0.3:
resolved "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042"
integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==
+pify@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
+ integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
+
plist@3.1.0, plist@^3.0.4, plist@^3.0.5, plist@^3.1.0:
version "3.1.0"
resolved "https://registry.npmmirror.com/plist/-/plist-3.1.0.tgz#797a516a93e62f5bde55e0b9cc9c967f860893c9"
@@ -2823,6 +2895,11 @@ proxy-from-env@^1.1.0:
resolved "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
+prr@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
+ integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==
+
pump@^3.0.0:
version "3.0.3"
resolved "https://registry.npmmirror.com/pump/-/pump-3.0.3.tgz#151d979f1a29668dc0025ec589a455b53282268d"
@@ -2969,7 +3046,7 @@ semver-compare@^1.0.0:
resolved "https://registry.npmmirror.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==
-semver@^5.5.0:
+semver@^5.5.0, semver@^5.6.0:
version "5.7.2"
resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
@@ -3064,7 +3141,7 @@ source-map-support@^0.5.19:
buffer-from "^1.0.0"
source-map "^0.6.0"
-source-map@^0.6.0:
+source-map@^0.6.0, source-map@~0.6.0:
version "0.6.1"
resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
@@ -3193,6 +3270,11 @@ truncate-utf8-bytes@^1.0.0:
dependencies:
utf8-byte-length "^1.0.1"
+tslib@^2.3.0:
+ version "2.8.1"
+ resolved "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
+ integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
+
type-fest@^0.13.1:
version "0.13.1"
resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934"