Pārlūkot izejas kodu

feat:首页地图接口对接和确权地图修改

wangsisi 1 mēnesi atpakaļ
vecāks
revīzija
beb124356f

+ 1 - 4
package.json

@@ -11,6 +11,7 @@
     "lint": "vue-cli-service lint"
   },
   "dependencies": {
+    "@amap/amap-jsapi-loader": "^1.0.1",
     "@element-plus/icons-vue": "^2.0.6",
     "@fortawesome/fontawesome-svg-core": "^6.3.0",
     "@iconify/iconify": "^3.1.0",
@@ -28,9 +29,6 @@
     "html2canvas": "^1.4.1",
     "jquery": "^3.6.3",
     "jsts": "^2.9.3",
-    "mars3d": "^3.9.1",
-    "mars3d-cesium": "^1.127.0",
-    "mars3d-tdt": "^3.9.1",
     "mitt": "^3.0.1",
     "moment": "^2.29.4",
     "normalize.css": "^8.0.1",
@@ -70,7 +68,6 @@
     "@vue/compiler-sfc": "^3.2.37",
     "@vue/eslint-config-prettier": "^7.0.0",
     "compression-webpack-plugin": "^10.0.0",
-    "copy-webpack-plugin": "^13.0.0",
     "eslint": "^8.19.0",
     "eslint-plugin-prettier": "^4.2.1",
     "eslint-plugin-vue": "^9.1.1",

+ 4 - 0
src/api/modules/farm.js

@@ -73,4 +73,8 @@ module.exports = {
         url: config.base_dev_url + "z_farm_work_order/confirm?key="+config.mini_key,
         type: "post",
     },
+    farmIndexReport: {
+        url: config.base_dev_url + "farm/farmIndexReport?key="+config.mini_key,
+        type: "get",
+    },
 }

+ 11 - 5
src/components/navigation.vue

@@ -45,14 +45,19 @@ const options = [
 const checkedChildren = ref([]);
 const childrenData = ref([]);
 const handleCheckedChange = (e) => {
-    console.log("e", e);
+    checkedChildren.value = [e[e.length -1]];
 };
+const emit = defineEmits(["handleTab"])
 
 const active = ref(0);
-const handleTab = ({ id, children }) => {
+const handleTab = ({ id, name,children }) => {
     active.value = id;
-    childrenData.value = children;
-    checkedChildren.value = [children[0]];
+    childrenData.value = []
+    if(children){
+        childrenData.value = children;
+        checkedChildren.value = [children[0]];
+    }
+    emit('handleTab',{name,id})
 };
 
 const list = ref([
@@ -69,11 +74,12 @@ const list = ref([
         {
             name: "物候指标",
             id: 2,
-            children: ["穗长度", "单数华穗率"],
+            children: ["穗长度", "单数华穗率"],
         },
         {
             name: "生态指标",
             id: 3,
+            children: ["通风率", "清园程度","益草覆盖度"],
         },
         {
             name: "生长指标",

+ 16 - 0
src/utils/util.js

@@ -1,4 +1,5 @@
 import WKT from "ol/format/WKT.js";
+import Feature from 'ol/Feature.js';
 
 export function cleanArrayUndefined(arr) {
     let nr = [];
@@ -37,3 +38,18 @@ export const pointToFormat = (pointString) => {
     const result = `${formattedLongitude},${formattedLatitude}`;
     return result;
 };
+
+export const newAreaFeature = (data)=>{
+    let geom = new WKT().readGeometry(data["geom"])
+    let feature = new Feature({
+        geometry: geom
+    });
+    feature.set("nodeType","area");
+    feature.setId(data.id)
+    for(let key in data){
+        if(key != "geom"){
+            feature.set(key,data[key])
+        }
+    }
+    return feature;
+}

+ 72 - 3
src/views/home/index.vue

@@ -2,7 +2,7 @@
   <div class="base-container no-events">
     <fnHeader showDate></fnHeader>
     <div class="content">
-      <navigation></navigation>
+      <navigation @handleTab="handleTab"></navigation>
       <div class="left yes-events">
         <tool-list
           direction="left"
@@ -114,6 +114,7 @@ import { useRouter } from "vue-router";
 import SamplePointLayer from "./map/samplePointLayer";
 import {useStore} from "vuex";
 import RegionLayer from "./map/regionLayer";
+import BlueRegionLayer from "./map/blueRegionLayer";
 import eventBus from "@/api/eventBus";
 import AlbumCarousel from "./album_compoents/albumCarousel.vue";
 import album from "./album/index.vue";
@@ -137,6 +138,7 @@ const currentRegion = {
 let homeMap = new HomeMap();
 let samplePointLayer = null
 let regionLayer = null
+let blueRegionLayer = null
 const router = useRouter();
 const mapRef = ref();
 onMounted(() => {
@@ -144,11 +146,79 @@ onMounted(() => {
   // homeMap.initMap(store.getters.userinfo.location, mapRef.value);
   samplePointLayer = new SamplePointLayer(homeMap.kmap.map, currentFarm, currentRegion)
   // regionLayer = new RegionLayer(homeMap.kmap.map, currentFarm, currentRegion)
+  blueRegionLayer = new BlueRegionLayer(homeMap.kmap.map, currentFarm, currentRegion)
 
   getYellow()
   getFarmLog()
+  getBlueRegionList()
 });
 
+const blueList = ref([])
+const getBlueRegionList = () =>{
+  VE_API.farm.blueRegionList({farmId:766,regionId:2}).then(({ data }) => {
+      blueList.value = data.map(item =>{
+        let color = '#C7C7C7' //失效区域
+        if(item.status===2){ //物候期风险
+          color = '#34C759'
+        }
+        if(item.status===3){ //生长异常
+          color = '#ffff00'
+        }
+        if(item.status===4){ //病虫害
+          color = '#f33349'
+        }
+        return {
+          ...item,
+          color
+        }
+      })
+      blueRegionLayer.initData(blueList.value)
+  });
+}
+
+const handleTab = ({name,id}) =>{
+  console.log('name',name,id);
+    if(id===0){
+      getBlueRegionList()
+    }else{
+      getFarmIndexReport()
+    }
+}
+
+const active = ref(0)
+const reportData = ref({})
+const blueListConvert = (data)=>{
+    const list = []
+    for (let key in data) {
+        const filterData = reportData.value.blueZoneLegendList[active.value].list.filter(item => item.val === key)
+        const arr = data[key]
+        arr.forEach(item =>{
+            const listObj = blueList.value.filter(ele =>ele.blueZoneCode === item)
+            const updateList = listObj.map(ele => {
+                return{
+                    ...ele,
+                    level: key,
+                    name:filterData[0].name,
+                    color:filterData[0].color
+                }
+            })
+            list.push(...updateList)
+        })
+    }
+    return list
+}
+
+const getFarmIndexReport = () =>{
+  const params = { farmId:766,regionId:2, type: '生态指标' };
+    VE_API.farm.farmIndexReport(params).then(({data,code}) => {
+      if (code === 0) {
+          reportData.value = data || {};
+          const arr = blueListConvert(data.blueZoneList[active.value].obj)
+          blueRegionLayer.initData(arr)
+      }
+  });
+}
+
 const indicatorChartData = ref({})
 const blueZone = ref('ws0y1meyhxp4')
 
@@ -293,8 +363,7 @@ const showPoint = ref(true)
 const showType = ref("point")
 //地图点击事件
 eventBus.on('click:point',(e)=>{
-  showType.value = "point"
-  console.log('e',e);
+  // showType.value = "point"
   // if(btnIndex.value===1){
   //   btnName.value=e.name
   //   if(e.value===1){

+ 37 - 0
src/views/home/map/blueRegionLayer.js

@@ -0,0 +1,37 @@
+import config from "@/api/config.js";
+import * as KMap from "@/utils/ol-map/KMap";
+import { newAreaFeature } from "@/utils/util";
+
+/**
+ * @description 地图层对象
+ */
+class BlueRegionLayer {
+    constructor(map, farm) {
+        let that = this;
+        this.farmId = farm.id;
+        this.vectorStyle = new KMap.VectorStyle();
+
+        this.blueRegionLayer = new KMap.VectorLayer("blueRegionLayer", 99, {
+            minZoom: 15,
+        });
+
+        map.addLayer(this.blueRegionLayer.layer);
+        this.kmap = map
+    }
+
+    initData(arr) {
+        let that = this
+        if (that.blueRegionLayer) {
+            that.blueRegionLayer.source.clear();
+        }
+        for (let item of arr) {
+            let feature = newAreaFeature(item);
+            let strokeColor = "#FFFFFF";
+            feature.setStyle(this.vectorStyle.getPolygonStyle(item.color, strokeColor, 1));
+            that.blueRegionLayer.addFeature(feature);
+        }
+        // that.kmap.fit(that.blueRegionLayer.source.getExtent(), [0, 0, 0, 0]);
+    }
+}
+
+export default BlueRegionLayer;

+ 4 - 2
src/views/varietyMap/index.vue

@@ -27,7 +27,8 @@
                         品种确权
                     </div>
                 </div>
-                <div ref="mapRef" class="map">
+                <map1 class="map"></map1>
+                <!-- <div ref="mapRef" class="map">
                     <div class="checkbox-list">
                         <span class="text">全部设置为</span>
                         <el-checkbox-group class="checkbox" v-model="checkedCities" @change="handleCheckedCitiesChange">
@@ -44,7 +45,7 @@
                         <div class="cancel">取消</div>
                         <div>保存</div>
                     </div>
-                </div>
+                </div> -->
             </div>
         </div>
     </div>
@@ -72,6 +73,7 @@ import { onMounted, ref } from "vue";
 import { ElMessage } from "element-plus";
 import fnHeader from "@/components/fnHeader.vue";
 import VarietyMap from "./varietyMap";
+import map1 from "./map";
 import chartBox from "@/components/chartBox.vue";
 import { useRouter, useRoute } from "vue-router";
 import { useStore } from "vuex";

+ 122 - 0
src/views/varietyMap/map.vue

@@ -0,0 +1,122 @@
+<template>
+  <div id="map-container" style="width: 100%; height: 600px;"></div>
+  <button @click="startRectangleSelection">开始框选</button>
+  <button @click="clearSelection">清除框选</button>
+  <div>
+    <h3>框选区域内的点位:</h3>
+    <ul>
+      <li v-for="(point, index) in selectedPoints" :key="index">
+        {{ point }}
+      </li>
+    </ul>
+  </div>
+</template>
+
+<script>
+import { ref, onMounted } from 'vue';
+import AMapLoader from '@amap/amap-jsapi-loader';
+
+export default {
+  setup() {
+    const map = ref(null);
+    const mouseTool = ref(null);
+    const selectedArea = ref(null);
+    const selectedPoints = ref([]);
+    const allPoints = ref([
+      { lng: 116.397428, lat: 39.90923 }, // 示例点位
+      { lng: 116.407428, lat: 39.91923 },
+      { lng: 116.417428, lat: 39.92923 },
+    ]);
+
+    // 初始化地图
+    const initMap = async () => {
+      try {
+        const AMap = await AMapLoader.load({
+          key: '41769169f0f157e13a197e7eb0dd7b5b', // 替换为你的高德地图 Key
+          version: '2.0', // SDK 版本
+          plugins: ['AMap.MouseTool'], // 加载 MouseTool 插件
+        });
+
+        // 创建地图实例
+        map.value = new AMap.Map('map-container', {
+          zoom: 10, // 初始缩放级别
+          center: [116.397428, 39.90923], // 初始中心点(北京)
+        });
+
+        // 初始化 MouseTool
+        mouseTool.value = new AMap.MouseTool(map.value);
+
+        // 添加示例点位
+        allPoints.value.forEach((point) => {
+          new AMap.Marker({
+            position: [point.lng, point.lat],
+            map: map.value,
+          });
+        });
+
+        // 监听框选完成事件
+        mouseTool.value.on('draw', (event) => {
+          console.log('框选完成', event); // 调试日志
+          const { obj } = event;
+          if (obj instanceof AMap.Rectangle) {
+            selectedArea.value = obj;
+            checkPointsInArea(); // 检查框选区域内的点位
+          }
+        });
+      } catch (error) {
+        console.error('地图加载失败:', error);
+      }
+    };
+
+    // 开始框选
+    const startRectangleSelection = () => {
+      if (mouseTool.value) {
+        mouseTool.value.rectangle({
+          strokeColor: '#FF33FF', // 框选区域边框颜色
+          strokeOpacity: 1, // 边框透明度
+          strokeWeight: 2, // 边框宽度
+          fillColor: '#FF33FF', // 填充颜色
+          fillOpacity: 0.2, // 填充透明度
+        }); // 启用矩形框选工具
+      }
+    };
+
+    // 清除框选
+    const clearSelection = () => {
+      if (selectedArea.value) {
+        map.value.remove(selectedArea.value); // 移除框选区域
+        selectedArea.value = null;
+        selectedPoints.value = []; // 清空选中的点位
+      }
+    };
+
+    // 检查框选区域内的点位
+    const checkPointsInArea = () => {
+      if (!selectedArea.value) return;
+
+      const bounds = selectedArea.value.getBounds(); // 获取框选区域的边界
+      selectedPoints.value = allPoints.value.filter((point) => {
+        return bounds.contains([point.lng, point.lat]); // 判断点位是否在框选区域内
+      });
+    };
+
+    // 组件挂载时初始化地图
+    onMounted(() => {
+      initMap();
+    });
+
+    return {
+      startRectangleSelection,
+      clearSelection,
+      selectedPoints,
+    };
+  },
+};
+</script>
+
+<style scoped>
+#map-container {
+  width: 100%;
+  height: 600px;
+}
+</style>

+ 6 - 89
yarn.lock

@@ -11,6 +11,11 @@
     event-pubsub "4.3.0"
     js-message "1.0.7"
 
+"@amap/amap-jsapi-loader@^1.0.1":
+  version "1.0.1"
+  resolved "https://registry.npmjs.org/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz"
+  integrity sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==
+
 "@ampproject/remapping@^2.1.0":
   version "2.2.0"
   resolved "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.0.tgz"
@@ -4059,13 +4064,6 @@ ajv-keywords@^5.0.0:
   dependencies:
     fast-deep-equal "^3.1.3"
 
-ajv-keywords@^5.1.0:
-  version "5.1.0"
-  resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz"
-  integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==
-  dependencies:
-    fast-deep-equal "^3.1.3"
-
 ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1, ajv@>=5.0.0:
   version "6.12.6"
   resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
@@ -4096,16 +4094,6 @@ ajv@^8.8.0, ajv@^8.8.2:
     require-from-string "^2.0.2"
     uri-js "^4.2.2"
 
-ajv@^8.9.0:
-  version "8.17.1"
-  resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz"
-  integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
-  dependencies:
-    fast-deep-equal "^3.1.3"
-    fast-uri "^3.0.1"
-    json-schema-traverse "^1.0.0"
-    require-from-string "^2.0.2"
-
 ajv@8.11.0:
   version "8.11.0"
   resolved "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz"
@@ -4812,13 +4800,6 @@ builtins@^5.0.0:
   dependencies:
     semver "^7.0.0"
 
-bytebuffer@^5.0.1:
-  version "5.0.1"
-  resolved "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz"
-  integrity sha512-IuzSdmADppkZ6DlpycMkm8l9zeEq16fWtLvunEwFiYciR/BHo4E8/xs5piFquG+Za8OWmMqHF8zuRviz2LHvRQ==
-  dependencies:
-    long "~3"
-
 bytes@3.0.0:
   version "3.0.0"
   resolved "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz"
@@ -5509,17 +5490,6 @@ copy-descriptor@^0.1.0:
   resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz"
   integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==
 
-copy-webpack-plugin@^13.0.0:
-  version "13.0.0"
-  resolved "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-13.0.0.tgz"
-  integrity sha512-FgR/h5a6hzJqATDGd9YG41SeDViH+0bkHn6WNXCi5zKAZkeESeSxLySSsFLHqLEVCh0E+rITmCf0dusXWYukeQ==
-  dependencies:
-    glob-parent "^6.0.1"
-    normalize-path "^3.0.0"
-    schema-utils "^4.2.0"
-    serialize-javascript "^6.0.2"
-    tinyglobby "^0.2.12"
-
 copy-webpack-plugin@^9.0.1:
   version "9.1.0"
   resolved "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz"
@@ -6869,11 +6839,6 @@ fast-levenshtein@^2.0.6:
   resolved "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
   integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
 
-fast-uri@^3.0.1:
-  version "3.0.6"
-  resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz"
-  integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==
-
 fast-url-parser@1.1.3:
   version "1.1.3"
   resolved "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz"
@@ -6900,11 +6865,6 @@ faye-websocket@^0.11.3:
   dependencies:
     websocket-driver ">=0.5.1"
 
-fdir@^6.4.3:
-  version "6.4.3"
-  resolved "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz"
-  integrity sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==
-
 fflate@^0.4.8:
   version "0.4.8"
   resolved "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz"
@@ -8888,11 +8848,6 @@ log-update@^4.0.0:
     slice-ansi "^4.0.0"
     wrap-ansi "^6.2.0"
 
-long@~3:
-  version "3.2.0"
-  resolved "https://registry.npmjs.org/long/-/long-3.2.0.tgz"
-  integrity sha512-ZYvPPOMqUwPoDsbJaR10iQJYnMuZhRTvHYl62ErLIEX7RgFlziSBUUvrt3OVfc47QlHHpzPZYP17g3Fv7oeJkg==
-
 lower-case@^1.1.1:
   version "1.1.4"
   resolved "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz"
@@ -9051,21 +9006,6 @@ marchingsquares@^1.3.3:
   resolved "https://registry.npmjs.org/marchingsquares/-/marchingsquares-1.3.3.tgz"
   integrity sha512-gz6nNQoVK7Lkh2pZulrT4qd4347S/toG9RXH2pyzhLgkL5mLkBoqgv4EvAGXcV0ikDW72n/OQb3Xe8bGagQZCg==
 
-mars3d-cesium@^1.119.0, mars3d-cesium@^1.127.0:
-  version "1.127.0"
-  resolved "https://registry.npmjs.org/mars3d-cesium/-/mars3d-cesium-1.127.0.tgz"
-  integrity sha512-uR/LHGOU4P7UluRAT7ZRwDb4tuo2k4+NgNUtwN3tx9+efYVZRGV7bEe6uE9Yc95HaEDkzjCYHg4dI2cofXjAvQ==
-
-mars3d-tdt@^3.9.1:
-  version "3.9.1"
-  resolved "https://registry.npmjs.org/mars3d-tdt/-/mars3d-tdt-3.9.1.tgz"
-  integrity sha512-hoUWAfCjOZW5KF8CPGcv8Qtp9vAlx5mnbFj8fp/evJ9bN0/d1nlwlDJc48vGQHhZKE9aWMtjMY+F/FLjchBj6w==
-
-mars3d@^3.9.1:
-  version "3.9.1"
-  resolved "https://registry.npmjs.org/mars3d/-/mars3d-3.9.1.tgz"
-  integrity sha512-4aYAmXkHZSARQ2Kpum8umqnwu2NgZWcUqDo1z84MqDQfhdz/jjg67u/x1lt6dSkW2TKYivEYuyQ/XT5AnimkRQ==
-
 md5.js@^1.3.4:
   version "1.3.5"
   resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz"
@@ -10492,11 +10432,6 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1:
   resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
   integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
 
-"picomatch@^3 || ^4", picomatch@^4.0.2:
-  version "4.0.2"
-  resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz"
-  integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==
-
 pidtree@^0.6.0:
   version "0.6.0"
   resolved "https://registry.npmmirror.com/pidtree/-/pidtree-0.6.0.tgz"
@@ -11861,16 +11796,6 @@ schema-utils@^4.0.0:
     ajv-formats "^2.1.1"
     ajv-keywords "^5.0.0"
 
-schema-utils@^4.2.0:
-  version "4.3.0"
-  resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz"
-  integrity sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==
-  dependencies:
-    "@types/json-schema" "^7.0.9"
-    ajv "^8.9.0"
-    ajv-formats "^2.1.1"
-    ajv-keywords "^5.1.0"
-
 scule@^1.0.0:
   version "1.0.0"
   resolved "https://registry.npmjs.org/scule/-/scule-1.0.0.tgz"
@@ -11967,7 +11892,7 @@ serialize-javascript@^4.0.0:
   dependencies:
     randombytes "^2.1.0"
 
-serialize-javascript@^6.0.0, serialize-javascript@^6.0.2:
+serialize-javascript@^6.0.0:
   version "6.0.2"
   resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz"
   integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==
@@ -12905,14 +12830,6 @@ tiny-relative-date@^1.3.0:
   resolved "https://registry.npmjs.org/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz"
   integrity sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A==
 
-tinyglobby@^0.2.12:
-  version "0.2.12"
-  resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz"
-  integrity sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==
-  dependencies:
-    fdir "^6.4.3"
-    picomatch "^4.0.2"
-
 tinyqueue@^2.0.0, tinyqueue@^2.0.3:
   version "2.0.3"
   resolved "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz"