From a55e18c776bac19875180a30cf599fc4d2c4f855 Mon Sep 17 00:00:00 2001 From: XieYongHong <18010623010@163.com> Date: Thu, 5 Dec 2024 09:51:36 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E4=BA=91?= =?UTF-8?q?=E7=AB=AF=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 绑定子设备 * feat: 边缘网关 * feat: 新增Agent接入 * feat: 添加批量操作接口 * feat: 新增边端资源库(AI模型、插件) * feat: 边端资源库-采集器模板 * feat: 【设备管理】新增标签搜索 * fix: 修改docker标签 * fix: 修改docker配置 * fix: 【设备管理】优化标签搜索;优化网关设备远程操作 * fix: 修改docker配置 * fix: 优化网关设备远程操作 * fix: 【设备管理】优化标签搜索 * fix: 网关设备子设备tab,批量操作bug修复 * fix: 批量操作bug * fix: 网关设备子设备tab,批量操作bug修复 * fix: bug#31946、31271 * fix: 【设备管理】优添加远程访问按钮权限 * fix: bug网关子设备相关bug * fix: 【网关设备】远程控制添加角色参数 * fix: 【网关设备】增加远程控制代理时间 * fix: 【网关设备】修复列表操作显示异常 * fix: bug#32084,32083,32079,32067 * fix: 优化标签搜索校验 * fix: 优化远程控制携带设备id参数 * fix: 修复资源库采集器模板编辑文件未回显的bug,修复新增采集器模板上传文件异常的bug * fix: 修复资源库采集器模板编辑文件未回显的bug * fix: 修复新增采集器模板上传文件异常的bug * fix: 初始化菜单-边缘网关资源库修改 * fix: bug#27618 【采集器】OPC_UA点位进行批量操作-编辑时,只推送变化的数据在不进行选择时,是否对当前点位的数据进行修改 * fix: bug#31769 【场景联动】场景联动>>>执行动作>>>满足次条件后执行后续动作>>>选择“为空”“不为空”时,多了参数值输入框 * fix: bug#27618 【采集器】OPC_UA点位进行批量操作-编辑时,只推送变化的数据在不进行选择时,是否对当前点位的数据进行修改 * feat: 物模型其他配置字段冲突优化 * feat: 其他配置字段冲突优化 * feat: 内网视频端口同步API端口 * fix: 网关子设备相关bug * fix: bug#32147、32136、31975、32190、32168、32162、32165 * fix: 修改资源库下发时选择下发网关查询列表的参数 * fix: bug#网关子设备保存刷新 * fix: 优化边端失效回调到token页显示提示语 * fix: bug#31153 * fix: 31153 * fix: bug#30418 【产品】产品物模型>>>属性定义>>>读写模式弹窗点开和关闭,界面出现抖动 * fix: bug#32167 【视频设备】固定地址视频设备添加通道时,视频地址不做长度限制 * fix: bug#32116 【采集器】opc_ua采集器中,点位是数组时,不能输入0进行占位 * fix: bug#31970 【告警配置】告警配置关联场景联动时,关联详情时,默认只展示为条件,不自动排序 * fix: bug#31231 【产品】新增物模型时,数据类型为object类型时,添加结构体没有必填校验 * fix: bug#32207 【流媒体服务】【master】流媒体服务新增成功后点击编辑查看,保存按钮一直加载中 * fix: bug#28980 【场景联动】场景联动>>>设备触发>>>执行动作第一步,无法选择按关系 * fix: bug#30418 【产品】产品物模型>>>属性定义>>>读写模式弹窗点开和关闭,界面出现抖动 * fix: bug#32145、31980、31854、32211、32150、32168 * fix: bug#32145.31980.31854.32211.32150.32168 * fix: (采集器模板)云端下发记录详情展示字段修改 * fix: (采集器模板)云端下发采集器模板,下发后创建时间查看错误 * fix: bug#32039、32209、32270、32264、32275、32266 * fix: bug#32039.32209.32270.32264.32275.32266 * fix: 修复批量操作AI模型、采集器模板列表排序字段错误的问题 * fix: bug#30937 【场景联动】场景联动>>>执行动作>>>消息通知>>>邮件通知,收件人选择为关系用户时,保存失败(平台用户也没有回显) * fix: 修改资源库下发弹窗点击遮罩不可关闭 * fix: 修改资源库下发弹窗点击遮罩不可关闭 * fix: bug#32302、31837 * fix: bug#32302.31837 * fix: bug#32328、32302、32147、31837 * fix: bug#32248、32360、32362 * fix: 32248、32360、32362 * fix: 修改duerOS新增请求产品逻辑修改、产品物模型导入属性优化 * fix: 修改duerOS新增请求产品逻辑修改、产品物模型导入属性优化 * fix: bug#30076 告警配置回显场景条件信息不完整 * feat: 修改物模型属性导入 * fix: 修改duerOS新增请求产品逻辑修改、产品物模型导入属性优化 * fix: 优化代码 * fix: bug#30076 告警配置回显场景条件信息不完整 * fix: 还原告警记录操作按钮 * fix: bug#29600 仪表盘查看卡片中字体大小不一致 * fix: bug#28716【产品】产品(设备)规则属性弹窗,确定按钮需滚动后才可以点击确定 * fix: bug#28924 【场景联动】场景联动>>>执行动作>>>选择产品后,自定义可以选择多个设备 * fix: bug#32430【云边协同/master】设备查看远程升级,当固件版本过长时,界面展示需优化 * fix: bug#31782【告警记录】告警配置类型为产品时,当A设备上报产生告警,B设备后续也上报产生告警(A告警未处理),此时告警持续时长被重置 * fix: 还原告警记录操作按钮 * fix: 初始化权限及远程访问字段 * fix: bug#32328.32302.32147.31837 * fix: 初始化权限及远程访问字段 --- nginx.conf | 13 +- package-lock.json | 114 +- package.json | 4 +- pnpm-lock.yaml | 2262 +++--- public/images/access/agent-device.png | Bin 0 -> 4455 bytes public/images/access/agent-media.png | Bin 0 -> 4508 bytes public/images/edge/empty-child.png | Bin 0 -> 3191 bytes public/images/edge/token-error-icon.png | Bin 0 -> 1601 bytes public/images/edge/token-error.jpg | Bin 0 -> 41994 bytes public/images/media/agent_doc.png | Bin 0 -> 134053 bytes src/api/device/instance.ts | 39 + src/api/edge-resource/ai-model.ts | 30 + src/api/edge-resource/index.ts | 81 + src/api/edge/batch.ts | 127 + src/api/edge/device.ts | 5 + src/api/iot-card/cardManagement.ts | 2 +- src/components/BadgeStatus/color.ts | 18 +- src/components/CardBox/index.vue | 10 +- src/components/CheckButton/CheckButton.vue | 35 +- src/components/FRuleEditor/Editor/index.vue | 474 +- src/components/FRuleEditor/index.vue | 1 + src/components/GeoComponent/index.vue | 1 + .../Metadata/Table/TableFormItem.vue | 5 +- .../Table/components/BooleanSelect/index.vue | 1 + .../Table/components/Object/index.vue | 3 + .../Metadata/Table/components/Type/index.vue | 9 +- .../Metadata/Table/components/utils.ts | 11 +- src/components/Search/Search.vue | 36 +- src/router/menu.ts | 7 + src/store/resource.ts | 8 + src/store/system.ts | 11 +- src/style/comm.less | 23 + src/style/global.less | 1 + src/style/variable.less | 18 +- src/utils/comm.ts | 73 +- src/utils/menu.ts | 2 +- src/utils/websocket.ts | 6 +- .../Point/components/Import/index.vue | 5 +- .../Point/components/WritePoint/index.vue | 6 +- src/views/Northbound/DuerOS/Detail/index.vue | 4 +- src/views/Northbound/DuerOS/Tree/index.vue | 2 +- .../device/Firmware/Task/Detail/index.vue | 4 +- src/views/device/Firmware/index.vue | 6 +- .../Instance/Detail/Child/Save/index.vue | 115 + .../Instance/Detail/Child/actionModal.vue | 373 + .../device/Instance/Detail/Child/data.ts | 88 + .../device/Instance/Detail/Child/index.less | 174 + .../device/Instance/Detail/Child/index.vue | 1251 +++ .../ChildDevice/BindChildDevice/index.vue | 101 +- .../device/Instance/Detail/Firmware/index.vue | 6 +- .../Detail/Info/components/Tags/Save.vue | 4 +- .../Detail/Info/components/Tags/index.vue | 15 +- .../Detail/Running/Event/ValueRender.vue | 71 + .../Instance/Detail/Running/Event/index.vue | 265 +- .../Detail/Running/Property/ValueDetail.vue | 3 +- .../device/Instance/Detail/Terminal/index.vue | 123 + .../Instance/Detail/Terminal/websocket.ts | 134 + .../components/EditTable/PatchMapping.vue | 21 +- src/views/device/Instance/Detail/index.vue | 653 +- .../device/Instance/components/TagSearch.vue | 314 +- src/views/device/Instance/index.vue | 35 +- src/views/device/Product/index.vue | 21 + .../device/components/Metadata/Base/Base.vue | 18 +- .../Base/DetailModal/PropertiesModal.vue | 2 +- .../Base/components/Import/Import.vue | 386 +- .../components/Properties/Metrics/Metrics.vue | 2 +- .../components/Properties/OtherSetting.vue | 26 +- .../components/Metadata/Import/index.vue | 26 +- src/views/edge/Batch/components/Icon.vue | 15 + src/views/edge/Batch/components/card.vue | 116 + src/views/edge/Batch/device/device.vue | 321 + src/views/edge/Batch/device/index.vue | 112 + src/views/edge/Batch/index.vue | 72 + src/views/edge/Batch/log/Card.vue | 305 + src/views/edge/Batch/log/Detail.vue | 131 + src/views/edge/Batch/log/TaskDetail.vue | 619 ++ src/views/edge/Batch/log/index.vue | 188 + src/views/edge/Batch/operate/index.vue | 180 + src/views/edge/Batch/task/AiModel/index.vue | 114 + .../edge/Batch/task/AiResource/index.vue | 130 + .../Batch/task/Children/ChildrenModal.vue | 29 + .../Function/components/Advance.vue | 192 + .../Function/components/Simple.vue | 359 + .../Children/DeviceDetail/Function/index.vue | 49 + .../Info/components/Config/Save.vue | 125 + .../Info/components/Config/index.vue | 207 + .../Info/components/InklingModal/index.ts | 3 + .../Info/components/InklingModal/index.vue | 89 + .../Info/components/Relation/Save.vue | 125 + .../Info/components/Relation/index.vue | 57 + .../Info/components/Tags/Save.vue | 127 + .../Info/components/Tags/index.vue | 58 + .../task/Children/DeviceDetail/Info/index.vue | 192 + .../task/Children/DeviceDetail/Log/index.vue | 154 + .../DeviceDetail/Metadata/Base/Base.vue | 736 ++ .../Metadata/Base/DetailModal/EventModal.vue | 88 + .../Base/DetailModal/FunctionModal.vue | 84 + .../Metadata/Base/DetailModal/JsonView.vue | 38 + .../Base/DetailModal/PropertiesModal.vue | 275 + .../Metadata/Base/DetailModal/TagsModal.vue | 175 + .../Metadata/Base/DetailModal/index.ts | 4 + .../Metadata/Base/DetailModal/utils.ts | 25 + .../Metadata/Base/Edit/BaseForm.vue | 180 + .../Metadata/Base/Edit/ExpandsForm.vue | 122 + .../Metadata/Base/Edit/ValueTypeForm.vue | 228 + .../DeviceDetail/Metadata/Base/Edit/index.vue | 191 + .../Metadata/Base/Edit/validator.ts | 59 + .../DeviceDetail/Metadata/Base/columns.tsx | 591 ++ .../Metadata/Base/components/ConfigModal.vue | 264 + .../Metadata/Base/components/Constraint.vue | 45 + .../Metadata/Base/components/DataType.vue | 241 + .../Base/components/DataTypeObjectChild.vue | 150 + .../Base/components/Events/ConfigParams.vue | 192 + .../components/Events/OtherConfigInfo.vue | 39 + .../Base/components/Events/SelectColumn.vue | 58 + .../Base/components/Events/ValueObject.vue | 67 + .../Base/components/Function/AsyncSelect.vue | 57 + .../Base/components/Function/InputParams.vue | 209 + .../Base/components/Function/OutputParams.vue | 258 + .../Base/components/Function/Type.vue | 46 + .../Base/components/Import/Import.vue | 229 + .../Metadata/Base/components/Import/index.ts | 1 + .../Metadata/Base/components/Import/util.ts | 110 + .../Metadata/Base/components/ModelButton.vue | 20 + .../Properties/Metrics/BooleanSelect.vue | 43 + .../components/Properties/Metrics/Metrics.vue | 201 + .../Properties/Metrics/ValueItem.vue | 193 + .../components/Properties/Metrics/index.ts | 3 + .../components/Properties/Metrics/item.vue | 93 + .../components/Properties/OtherSetting.vue | 612 ++ .../components/Properties/StorageSetting.vue | 124 + .../Base/components/Properties/hooks.ts | 106 + .../Metadata/Base/components/Source.vue | 294 + .../Metadata/Base/components/Tags/Type.vue | 57 + .../components/VirtualRule/DetailModal.vue | 52 + .../Base/components/VirtualRule/Rule.vue | 40 + .../Base/components/VirtualRule/index.vue | 396 + .../Metadata/Base/components/index.ts | 11 + .../DeviceDetail/Metadata/Base/hooks/index.ts | 3 + .../Metadata/Base/hooks/useAction.ts | 23 + .../Metadata/Base/hooks/useGroup.ts | 36 + .../Metadata/Base/hooks/useMatadata.ts | 111 + .../Metadata/Base/hooks/useOperateLimits.ts | 27 + .../DeviceDetail/Metadata/Base/index.ts | 1 + .../DeviceDetail/Metadata/Base/index.vue | 233 + .../DeviceDetail/Metadata/Base/utils.ts | 129 + .../DeviceDetail/Metadata/Cat/index.vue | 196 + .../DeviceDetail/Metadata/Import/index.vue | 980 +++ .../DeviceDetail/Metadata/Import/valideta.ts | 141 + .../Children/DeviceDetail/Metadata/index.vue | 183 + .../DeviceDetail/Metadata/metadata.ts | 131 + .../Running/Event/ValueRender.vue | 71 + .../DeviceDetail/Running/Event/index.vue | 185 + .../Running/Property/Detail/Chart.vue | 43 + .../Running/Property/Detail/Charts.vue | 331 + .../Running/Property/Detail/PropertyAMap.vue | 119 + .../Running/Property/Detail/Table.vue | 218 + .../Running/Property/Detail/TimeComponent.vue | 79 + .../Running/Property/Detail/index.vue | 68 + .../Running/Property/Indicators.vue | 222 + .../Running/Property/PropertyCard.vue | 129 + .../DeviceDetail/Running/Property/Save.vue | 117 + .../Running/Property/ValueDetail.vue | 49 + .../Running/Property/ValueRender.vue | 216 + .../DeviceDetail/Running/Property/index.ts | 37 + .../DeviceDetail/Running/Property/index.vue | 325 + .../Children/DeviceDetail/Running/index.vue | 178 + .../task/Children/DeviceDetail/index.vue | 117 + src/views/edge/Batch/task/Children/index.vue | 903 +++ .../Batch/task/CollectorTemplate/index.vue | 116 + src/views/edge/Batch/task/Gateway.vue | 88 + src/views/edge/Batch/task/GatewayModal.vue | 282 + src/views/edge/Batch/task/Plugin/index.vue | 131 + src/views/edge/Batch/task/Remote/Firmware.vue | 176 + src/views/edge/Batch/task/Remote/index.vue | 162 + src/views/edge/Batch/task/index.ts | 3 + src/views/edge/Batch/task/task.less | 18 + src/views/edge/Batch/task/task.vue | 365 + src/views/edge/Batch/util.ts | 121 + src/views/edge/Device/Save/index.vue | 10 +- src/views/edge/Device/index.vue | 89 +- .../edge/NewResource/Detail/Info/Points.vue | 95 + .../edge/NewResource/Detail/Info/index.vue | 78 + .../edge/NewResource/Detail/Record/Card.vue | 255 + .../edge/NewResource/Detail/Record/Detail.vue | 467 ++ .../edge/NewResource/Detail/Record/index.vue | 88 + src/views/edge/NewResource/Detail/index.vue | 76 + .../edge/NewResource/Issue/GatewayDevice.vue | 298 + src/views/edge/NewResource/Issue/index.vue | 152 + .../edge/NewResource/Save/FileSelect.vue | 71 + .../edge/NewResource/Save/UploadFile.vue | 127 + src/views/edge/NewResource/Save/index.vue | 267 + src/views/edge/NewResource/index.vue | 333 + src/views/edge/NewResource/utils.ts | 26 + src/views/edge/TokenJump/index.vue | 51 + src/views/init-home/data/baseMenu.ts | 729 +- src/views/link/AccessConfig/Detail/index.vue | 18 +- .../Outline/components/FirstKind.vue | 74 +- src/views/link/AccessConfig/Outline/index.vue | 6 +- .../AccessConfig/components/Network/index.vue | 160 +- src/views/link/AccessConfig/data.ts | 6 + src/views/media/Device/Channel/Save.vue | 1 - src/views/media/Device/Save/SaveProduct.vue | 11 +- src/views/media/Device/Save/index.vue | 89 +- src/views/media/Device/const.ts | 6 +- src/views/media/Stream/Detail/index.vue | 2 +- src/views/media/Stream/type.d.ts | 2 + .../Configuration/Save/Scene/Save/Actions.vue | 2 +- .../Configuration/Save/Scene/Save/utils.ts | 2 +- .../TabComponent/components/DetailDrawer.vue | 12 +- .../Alarm/Log/TabComponent/components/Log.vue | 17 +- .../Log/TabComponent/components/LogDetail.vue | 27 +- .../Alarm/Log/TabComponent/index.vue | 40 +- src/views/rule-engine/Alarm/Log/index.vue | 4 +- .../DashBoard/components/NewAlarm.vue | 4 + .../rule-engine/Scene/Save/Device/Product.vue | 2 +- .../Save/action/Device/device/Device.vue | 77 +- .../Scene/Save/action/Device/device/index.vue | 35 +- .../Save/action/ListItem/FilterCondition.vue | 3 +- .../Scene/Save/action/ListItem/Item.vue | 2 +- .../Save/components/Terms/ParamsItem.vue | 2 +- src/views/system/Basis/index.vue | 4 +- src/views/system/Menu/Setting/index.vue | 17 +- .../Platforms/Api/components/ApiDoes.vue | 23 +- src/views/system/Platforms/Api/utils.ts | 5 + vite.config.ts | 4 +- yarn.lock | 6938 +++++++++++++++++ 227 files changed, 34094 insertions(+), 2536 deletions(-) create mode 100644 public/images/access/agent-device.png create mode 100644 public/images/access/agent-media.png create mode 100644 public/images/edge/empty-child.png create mode 100644 public/images/edge/token-error-icon.png create mode 100644 public/images/edge/token-error.jpg create mode 100644 public/images/media/agent_doc.png create mode 100644 src/api/edge-resource/ai-model.ts create mode 100644 src/api/edge-resource/index.ts create mode 100644 src/api/edge/batch.ts create mode 100644 src/store/resource.ts create mode 100644 src/style/comm.less create mode 100644 src/views/device/Instance/Detail/Child/Save/index.vue create mode 100644 src/views/device/Instance/Detail/Child/actionModal.vue create mode 100644 src/views/device/Instance/Detail/Child/data.ts create mode 100644 src/views/device/Instance/Detail/Child/index.less create mode 100644 src/views/device/Instance/Detail/Child/index.vue create mode 100644 src/views/device/Instance/Detail/Running/Event/ValueRender.vue create mode 100644 src/views/device/Instance/Detail/Terminal/index.vue create mode 100644 src/views/device/Instance/Detail/Terminal/websocket.ts create mode 100644 src/views/edge/Batch/components/Icon.vue create mode 100644 src/views/edge/Batch/components/card.vue create mode 100644 src/views/edge/Batch/device/device.vue create mode 100644 src/views/edge/Batch/device/index.vue create mode 100644 src/views/edge/Batch/index.vue create mode 100644 src/views/edge/Batch/log/Card.vue create mode 100644 src/views/edge/Batch/log/Detail.vue create mode 100644 src/views/edge/Batch/log/TaskDetail.vue create mode 100644 src/views/edge/Batch/log/index.vue create mode 100644 src/views/edge/Batch/operate/index.vue create mode 100644 src/views/edge/Batch/task/AiModel/index.vue create mode 100644 src/views/edge/Batch/task/AiResource/index.vue create mode 100644 src/views/edge/Batch/task/Children/ChildrenModal.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Function/components/Advance.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Function/components/Simple.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Function/index.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Info/components/Config/Save.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Info/components/Config/index.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Info/components/InklingModal/index.ts create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Info/components/InklingModal/index.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Info/components/Relation/Save.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Info/components/Relation/index.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Info/components/Tags/Save.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Info/components/Tags/index.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Info/index.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Log/index.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/Base.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/DetailModal/EventModal.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/DetailModal/FunctionModal.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/DetailModal/JsonView.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/DetailModal/PropertiesModal.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/DetailModal/TagsModal.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/DetailModal/index.ts create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/DetailModal/utils.ts create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/Edit/BaseForm.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/Edit/ExpandsForm.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/Edit/ValueTypeForm.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/Edit/index.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/Edit/validator.ts create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/columns.tsx create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/ConfigModal.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/Constraint.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/DataType.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/DataTypeObjectChild.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/Events/ConfigParams.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/Events/OtherConfigInfo.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/Events/SelectColumn.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/Events/ValueObject.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/Function/AsyncSelect.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/Function/InputParams.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/Function/OutputParams.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/Function/Type.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/Import/Import.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/Import/index.ts create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/Import/util.ts create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/ModelButton.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/Properties/Metrics/BooleanSelect.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/Properties/Metrics/Metrics.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/Properties/Metrics/ValueItem.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/Properties/Metrics/index.ts create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/Properties/Metrics/item.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/Properties/OtherSetting.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/Properties/StorageSetting.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/Properties/hooks.ts create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/Source.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/Tags/Type.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/VirtualRule/DetailModal.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/VirtualRule/Rule.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/VirtualRule/index.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/components/index.ts create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/hooks/index.ts create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/hooks/useAction.ts create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/hooks/useGroup.ts create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/hooks/useMatadata.ts create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/hooks/useOperateLimits.ts create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/index.ts create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/index.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Base/utils.ts create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Cat/index.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Import/index.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/Import/valideta.ts create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/index.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Metadata/metadata.ts create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Running/Event/ValueRender.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Running/Event/index.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Running/Property/Detail/Chart.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Running/Property/Detail/Charts.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Running/Property/Detail/PropertyAMap.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Running/Property/Detail/Table.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Running/Property/Detail/TimeComponent.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Running/Property/Detail/index.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Running/Property/Indicators.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Running/Property/PropertyCard.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Running/Property/Save.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Running/Property/ValueDetail.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Running/Property/ValueRender.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Running/Property/index.ts create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Running/Property/index.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/Running/index.vue create mode 100644 src/views/edge/Batch/task/Children/DeviceDetail/index.vue create mode 100644 src/views/edge/Batch/task/Children/index.vue create mode 100644 src/views/edge/Batch/task/CollectorTemplate/index.vue create mode 100644 src/views/edge/Batch/task/Gateway.vue create mode 100644 src/views/edge/Batch/task/GatewayModal.vue create mode 100644 src/views/edge/Batch/task/Plugin/index.vue create mode 100644 src/views/edge/Batch/task/Remote/Firmware.vue create mode 100644 src/views/edge/Batch/task/Remote/index.vue create mode 100644 src/views/edge/Batch/task/index.ts create mode 100644 src/views/edge/Batch/task/task.less create mode 100644 src/views/edge/Batch/task/task.vue create mode 100644 src/views/edge/Batch/util.ts create mode 100644 src/views/edge/NewResource/Detail/Info/Points.vue create mode 100644 src/views/edge/NewResource/Detail/Info/index.vue create mode 100644 src/views/edge/NewResource/Detail/Record/Card.vue create mode 100644 src/views/edge/NewResource/Detail/Record/Detail.vue create mode 100644 src/views/edge/NewResource/Detail/Record/index.vue create mode 100644 src/views/edge/NewResource/Detail/index.vue create mode 100644 src/views/edge/NewResource/Issue/GatewayDevice.vue create mode 100644 src/views/edge/NewResource/Issue/index.vue create mode 100644 src/views/edge/NewResource/Save/FileSelect.vue create mode 100644 src/views/edge/NewResource/Save/UploadFile.vue create mode 100644 src/views/edge/NewResource/Save/index.vue create mode 100644 src/views/edge/NewResource/index.vue create mode 100644 src/views/edge/NewResource/utils.ts create mode 100644 src/views/edge/TokenJump/index.vue create mode 100644 yarn.lock diff --git a/nginx.conf b/nginx.conf index c0083c82..4d17ebe3 100644 --- a/nginx.conf +++ b/nginx.conf @@ -9,7 +9,7 @@ server { gzip_vary on; gzip_disable "MSIE [1-6]\."; resolver $NAMESERVERS ipv6=off; - root /usr/share/nginx/html; + include /etc/nginx/mime.types; set $my_result_code 200; set $my_server_name {SERVER_NAME}; @@ -21,12 +21,22 @@ server { set $my_result_code 200; } + if ($my_result_code = 403) { return 403; } location / { + root /usr/share/nginx/html; + + index index.html; + } + + location /edge-gateway { + alias /usr/share/nginx/edge-gateway/; + index index.html; + try_files $uri $uri/ /edge-gateway/index.html; } location ^~/api/ { @@ -48,5 +58,6 @@ server { proxy_send_timeout 30m; proxy_read_timeout 30m; client_max_body_size 500m; + client_body_buffer_size 1024k; } } diff --git a/package-lock.json b/package-lock.json index 9f2601dd..d782753c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,24 +1,27 @@ { "name": "jetlinks-vue", - "version": "2.2.1", + "version": "2.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "jetlinks-vue", - "version": "2.2.1", + "version": "2.2.0", "dependencies": { "@ant-design/icons-vue": "^7.0.1", "@fullcalendar/core": "^6.1.13", "@fullcalendar/daygrid": "^6.1.13", "@fullcalendar/interaction": "^6.1.13", "@fullcalendar/vue3": "^6.1.13", - "@liveqing/liveplayer-v3": "^3.7.10", + "@microsoft/fetch-event-source": "^2.0.1", "@types/axios": "^0.14.0", "@types/marked": "^4.0.8", "@vitejs/plugin-vue-jsx": "^3.0.0", "@vuemap/vue-amap": "^2.1.2", "@vueuse/core": "^9.10.0", + "@vueuse/router": "^11.1.0", + "@xterm/addon-fit": "^0.10.0", + "@xterm/xterm": "^5.5.0", "ant-design-vue": "^3.2.15", "async-validator": "^4.2.5", "axios": "^1.2.1", @@ -30,7 +33,7 @@ "event-source-polyfill": "^1.0.31", "global": "^4.4.0", "jetlinks-store": "^0.0.3", - "jetlinks-ui-components": "^1.0.48", + "jetlinks-ui-components": "^1.0.51", "jsencrypt": "^3.3.2", "less": "^4.1.3", "less-loader": "^11.1.0", @@ -1091,10 +1094,6 @@ "@jridgewell/sourcemap-codec": "1.4.14" } }, - "node_modules/@liveqing/liveplayer-v3": { - "version": "3.7.10", - "license": "MIT" - }, "node_modules/@math.gl/core": { "version": "3.6.3", "resolved": "https://registry.npmmirror.com/@math.gl/core/-/core-3.6.3.tgz", @@ -1110,6 +1109,11 @@ "resolved": "https://registry.npmmirror.com/@math.gl/types/-/types-3.6.3.tgz", "integrity": "sha512-3uWLVXHY3jQxsXCr/UCNPSc2BG0hNUljhmOBt9l+lNFDp7zHgm0cK2Tw4kj2XfkJy4TgwZTBGwRDQgWEbLbdTA==" }, + "node_modules/@microsoft/fetch-event-source": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz", + "integrity": "sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA==" + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1714,13 +1718,12 @@ } }, "node_modules/@vueuse/router": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@vueuse/router/-/router-9.13.0.tgz", - "integrity": "sha512-lcL6auSUGMGZMdDzZJb02QDe909AChzMXoxqFS3gL2E8mHmIx0SrNor+33UkqvvBPi18vXpDq/R7tPd9fxWwTg==", - "license": "MIT", + "version": "11.3.0", + "resolved": "https://registry.npmmirror.com/@vueuse/router/-/router-11.3.0.tgz", + "integrity": "sha512-FTcl8Sd2pLCZTUozLZKGRTEP3CUqVSYmgDZJA8IUYaxut+2kHptZ5OWLbBH+t6q45EH6jXqlukeV3fIxC1DFwA==", "dependencies": { - "@vueuse/shared": "9.13.0", - "vue-demi": "*" + "@vueuse/shared": "11.3.0", + "vue-demi": ">=0.14.10" }, "funding": { "url": "https://github.com/sponsors/antfu" @@ -1730,17 +1733,41 @@ } }, "node_modules/@vueuse/router/node_modules/@vueuse/shared": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz", - "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", - "license": "MIT", + "version": "11.3.0", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-11.3.0.tgz", + "integrity": "sha512-P8gSSWQeucH5821ek2mn/ciCk+MS/zoRKqdQIM3bHq6p7GXDAJLmnRRKmF5F65sAVJIfzQlwR3aDzwCn10s8hA==", "dependencies": { - "vue-demi": "*" + "vue-demi": ">=0.14.10" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, + "node_modules/@vueuse/router/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, "node_modules/@vueuse/shared": { "version": "9.12.0", "license": "MIT", @@ -1882,6 +1909,19 @@ "@xtuc/long": "4.2.2" } }, + "node_modules/@xterm/addon-fit": { + "version": "0.10.0", + "resolved": "https://registry.npmmirror.com/@xterm/addon-fit/-/addon-fit-0.10.0.tgz", + "integrity": "sha512-UFYkDm4HUahf2lnEyHvio51TNGiLK66mqP2JoATy7hRZeXaGMRDr00JiSF7m63vR5WKATF605yEggJKsw0JpMQ==", + "peerDependencies": { + "@xterm/xterm": "^5.0.0" + } + }, + "node_modules/@xterm/xterm": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/@xterm/xterm/-/xterm-5.5.0.tgz", + "integrity": "sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==" + }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "license": "BSD-3-Clause", @@ -5318,9 +5358,9 @@ "license": "MIT" }, "node_modules/jetlinks-ui-components": { - "version": "1.0.48", - "resolved": "https://registry.npmmirror.com/jetlinks-ui-components/-/jetlinks-ui-components-1.0.48.tgz", - "integrity": "sha512-tAKplLwXLCo/ofbgrLAvOgjZrjdgbMx+rnf+rvK17vjaTV13gWtn/77UNFzCa3kO4TXGn+FVU6qY6wULZO4U/w==", + "version": "1.0.52", + "resolved": "https://registry.npmmirror.com/jetlinks-ui-components/-/jetlinks-ui-components-1.0.52.tgz", + "integrity": "sha512-yT6IIdhS0ztzG624Rr5Ja/FAvtcoW9F0mgMAEn9TH89ApJn5ARs6En30cWniOGLRF/rvBQcTgA42BtlGH12bTQ==", "dependencies": { "@vueuse/core": "^9.12.0", "@vueuse/router": "^9.13.0", @@ -5333,6 +5373,32 @@ "node": ">=18.14.0" } }, + "node_modules/jetlinks-ui-components/node_modules/@vueuse/router": { + "version": "9.13.0", + "resolved": "https://registry.npmmirror.com/@vueuse/router/-/router-9.13.0.tgz", + "integrity": "sha512-lcL6auSUGMGZMdDzZJb02QDe909AChzMXoxqFS3gL2E8mHmIx0SrNor+33UkqvvBPi18vXpDq/R7tPd9fxWwTg==", + "dependencies": { + "@vueuse/shared": "9.13.0", + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vue-router": ">=4.0.0-rc.1" + } + }, + "node_modules/jetlinks-ui-components/node_modules/@vueuse/shared": { + "version": "9.13.0", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.13.0.tgz", + "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", + "dependencies": { + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/jetlinks-ui-components/node_modules/monaco-editor": { "version": "0.40.0", "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.40.0.tgz", @@ -8595,6 +8661,8 @@ }, "node_modules/npm/node_modules/debug/node_modules/ms": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "inBundle": true, "license": "MIT" }, @@ -10244,6 +10312,8 @@ }, "node_modules/npm/node_modules/string-width/node_modules/strip-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "inBundle": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 242cc2b4..6196d8d1 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,8 @@ "@vuemap/vue-amap": "^2.1.2", "@vueuse/core": "^9.10.0", "@vueuse/router": "^11.1.0", + "@xterm/addon-fit": "^0.10.0", + "@xterm/xterm": "^5.5.0", "ant-design-vue": "^3.2.15", "async-validator": "^4.2.5", "axios": "^1.2.1", @@ -37,7 +39,7 @@ "event-source-polyfill": "^1.0.31", "global": "^4.4.0", "jetlinks-store": "^0.0.3", - "jetlinks-ui-components": "^1.0.48", + "jetlinks-ui-components": "^1.0.51", "jsencrypt": "^3.3.2", "less": "^4.1.3", "less-loader": "^11.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 923200ef..d0121d4a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,46 +10,40 @@ dependencies: version: 7.0.1(vue@3.3.4) '@fullcalendar/core': specifier: ^6.1.13 - version: 6.1.13 + version: 6.1.15 '@fullcalendar/daygrid': specifier: ^6.1.13 - version: 6.1.13(@fullcalendar/core@6.1.13) + version: 6.1.15(@fullcalendar/core@6.1.15) '@fullcalendar/interaction': specifier: ^6.1.13 - version: 6.1.13(@fullcalendar/core@6.1.13) + version: 6.1.15(@fullcalendar/core@6.1.15) '@fullcalendar/vue3': specifier: ^6.1.13 - version: 6.1.13(@fullcalendar/core@6.1.13)(vue@3.3.4) - '@microsoft/fetch-event-source': - specifier: ^2.0.1 - version: 2.0.1 + version: 6.1.15(@fullcalendar/core@6.1.15)(vue@3.3.4) '@types/axios': specifier: ^0.14.0 version: 0.14.0 '@types/marked': specifier: ^4.0.8 - version: 4.0.8 + version: 4.3.2 '@vitejs/plugin-vue-jsx': specifier: ^3.0.0 - version: 3.0.0(vite@4.0.0)(vue@3.3.4) + version: 3.1.0(vite@4.5.5)(vue@3.3.4) '@vuemap/vue-amap': specifier: ^2.1.2 - version: 2.1.2(vue@3.3.4) + version: 2.1.6(vue@3.3.4) '@vueuse/core': specifier: ^9.10.0 - version: 9.10.0(vue@3.3.4) - '@vueuse/router': - specifier: ^11.1.0 - version: 11.1.0(vue-router@4.1.6)(vue@3.3.4) + version: 9.13.0(vue@3.3.4) ant-design-vue: specifier: ^3.2.15 - version: 3.2.15(vue@3.3.4) + version: 3.2.20(vue@3.3.4) async-validator: specifier: ^4.2.5 version: 4.2.5 axios: specifier: ^1.2.1 - version: 1.2.1 + version: 1.7.7 colorpicker-v3: specifier: ^2.10.2 version: 2.10.2 @@ -64,7 +58,7 @@ dependencies: version: 0.9.8 echarts: specifier: ^5.4.1 - version: 5.4.1 + version: 5.5.1 event-source-polyfill: specifier: ^1.0.31 version: 1.0.31 @@ -76,16 +70,16 @@ dependencies: version: 0.0.3 jetlinks-ui-components: specifier: ^1.0.48 - version: 1.0.48(vue-router@4.1.6)(vue@3.3.4) + version: 1.0.49(vue-router@4.4.5)(vue@3.3.4) jsencrypt: specifier: ^3.3.2 version: 3.3.2 less: specifier: ^4.1.3 - version: 4.1.3 + version: 4.2.0 less-loader: specifier: ^11.1.0 - version: 11.1.0(less@4.1.3)(webpack@5.95.0) + version: 11.1.4(less@4.2.0)(webpack@5.94.0) lodash-es: specifier: ^4.17.21 version: 4.17.21 @@ -109,7 +103,7 @@ dependencies: version: 4.0.0 markdown-it-highlightjs: specifier: ^4.0.1 - version: 4.0.1 + version: 4.1.0 markdown-it-ins: specifier: ^4.0.0 version: 4.0.0 @@ -130,22 +124,22 @@ dependencies: version: 4.2.0 marked: specifier: ^4.2.12 - version: 4.2.12 + version: 4.3.0 monaco-editor: specifier: ^0.50.0 version: 0.50.0 nrm: specifier: ^1.2.5 - version: 1.2.5 + version: 1.2.6 pinia: specifier: ^2.0.28 - version: 2.0.28(typescript@4.9.3)(vue@3.3.4) + version: 2.2.2(typescript@4.9.5)(vue@3.3.4) resize-observer-polyfill: specifier: ^1.5.1 version: 1.5.1 rollup-plugin-copy: specifier: ^3.4.0 - version: 3.4.0 + version: 3.5.0 rollup-plugin-visualizer: specifier: ^5.12.0 version: 5.12.0 @@ -154,7 +148,7 @@ dependencies: version: 7.8.1 unplugin-auto-import: specifier: ^0.12.1 - version: 0.12.1(@vueuse/core@9.10.0) + version: 0.12.2(@vueuse/core@9.13.0) unplugin-vue-components: specifier: ^0.22.12 version: 0.22.12(vue@3.3.4) @@ -169,31 +163,31 @@ dependencies: version: 3.3.4 vue-cropper: specifier: ^1.0.9 - version: 1.0.9 + version: 1.1.4 vue-i18n: specifier: ^9.13.1 - version: 9.13.1(vue@3.3.4) + version: 9.14.0(vue@3.3.4) vue-json-viewer: specifier: ^3.0.4 version: 3.0.4(vue@3.3.4) vue-router: specifier: ^4.1.6 - version: 4.1.6(vue@3.3.4) + version: 4.4.5(vue@3.3.4) vue3-json-viewer: specifier: ^2.2.2 version: 2.2.2(vue@3.3.4) vue3-ts-jsoneditor: specifier: ^2.7.1 - version: 2.7.1 + version: 2.11.2(@lezer/common@1.2.1)(typescript@4.9.5) xgplayer: specifier: ^3.0.19 - version: 3.0.19(core-js@3.38.1) + version: 3.0.20(core-js@3.38.1) xgplayer-flv: specifier: ^3.0.20-beta.0 - version: 3.0.20-beta.0(core-js@3.38.1)(xgplayer@3.0.19) + version: 3.0.20(core-js@3.38.1)(xgplayer@3.0.20) xgplayer-hls: specifier: ^3.0.19 - version: 3.0.19(core-js@3.38.1)(xgplayer@3.0.19) + version: 3.0.20(core-js@3.38.1)(xgplayer@3.0.20) xgplayer-hls.js: specifier: 2.2.2 version: 2.2.2 @@ -201,61 +195,61 @@ dependencies: devDependencies: '@commitlint/cli': specifier: ^17.4.1 - version: 17.4.1 + version: 17.8.1 '@commitlint/config-conventional': specifier: ^17.4.0 - version: 17.4.0 + version: 17.8.1 '@types/lodash-es': specifier: ^4.17.6 - version: 4.17.6 + version: 4.17.12 '@types/node': specifier: ^18.14.0 - version: 18.14.0 + version: 18.19.50 '@vitejs/plugin-vue': specifier: ^4.0.0 - version: 4.0.0(vite@4.0.0)(vue@3.3.4) + version: 4.6.2(vite@4.5.5)(vue@3.3.4) '@vuemap/unplugin-resolver': specifier: ^1.0.4 version: 1.0.4(unplugin-vue-components@0.22.12) autoprefixer: specifier: ^10.4.13 - version: 10.4.13(postcss@8.4.47) + version: 10.4.20(postcss@8.4.47) commitlint: specifier: ^17.4.1 - version: 17.4.1 + version: 17.8.1 husky: specifier: ^8.0.0 - version: 8.0.0 + version: 8.0.3 lint-staged: specifier: ^13.1.0 - version: 13.1.0 + version: 13.3.0 mrm: specifier: ^4.1.13 - version: 4.1.13 + version: 4.1.22 prettier: specifier: ^2.8.1 - version: 2.8.1 + version: 2.8.8 typescript: specifier: ^4.9.3 - version: 4.9.3 + version: 4.9.5 vite: specifier: ^4.0.0 - version: 4.0.0(@types/node@18.14.0)(less@4.1.3) + version: 4.5.5(@types/node@18.19.50)(less@4.2.0) vite-plugin-html: specifier: ^3.2.0 - version: 3.2.0(vite@4.0.0) + version: 3.2.2(vite@4.5.5) vite-plugin-progress: specifier: ^0.0.7 - version: 0.0.7(vite@4.0.0) + version: 0.0.7(vite@4.5.5) vite-plugin-style-import: specifier: ^2.0.0 - version: 2.0.0(vite@4.0.0) + version: 2.0.0(vite@4.5.5) vite-plugin-vue-setup-extend: specifier: ^0.4.0 - version: 0.4.0(vite@4.0.0) + version: 0.4.0(vite@4.5.5) vue-tsc: specifier: ^1.0.11 - version: 1.0.11(typescript@4.9.3) + version: 1.8.27(typescript@4.9.5) packages: @@ -300,32 +294,32 @@ packages: /@antfu/utils@0.7.10: resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} - /@babel/code-frame@7.25.7: - resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==} + /@babel/code-frame@7.24.7: + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.25.7 - picocolors: 1.1.1 + '@babel/highlight': 7.24.7 + picocolors: 1.1.0 - /@babel/compat-data@7.25.8: - resolution: {integrity: sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==} + /@babel/compat-data@7.25.4: + resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} engines: {node: '>=6.9.0'} dev: false - /@babel/core@7.25.8: - resolution: {integrity: sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==} + /@babel/core@7.25.2: + resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.25.7 - '@babel/generator': 7.25.7 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.8) - '@babel/helpers': 7.25.7 - '@babel/parser': 7.25.8 - '@babel/template': 7.25.7 - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.6 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helpers': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 convert-source-map: 2.0.0 debug: 4.3.7 gensync: 1.0.0-beta.2 @@ -335,247 +329,316 @@ packages: - supports-color dev: false - /@babel/generator@7.25.7: - resolution: {integrity: sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==} + /@babel/generator@7.25.6: + resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.25.8 + '@babel/types': 7.25.6 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.0.2 + jsesc: 2.5.2 dev: false - /@babel/helper-annotate-as-pure@7.25.7: - resolution: {integrity: sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==} + /@babel/helper-annotate-as-pure@7.24.7: + resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.25.8 + '@babel/types': 7.25.6 dev: false - /@babel/helper-compilation-targets@7.25.7: - resolution: {integrity: sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==} + /@babel/helper-compilation-targets@7.25.2: + resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.25.8 - '@babel/helper-validator-option': 7.25.7 - browserslist: 4.24.0 + '@babel/compat-data': 7.25.4 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.3 lru-cache: 5.1.1 semver: 6.3.1 dev: false - /@babel/helper-create-class-features-plugin@7.25.7(@babel/core@7.25.8): - resolution: {integrity: sha512-bD4WQhbkx80mAyj/WCm4ZHcF4rDxkoLFO6ph8/5/mQ3z4vAzltQXAmbc7GvVJx5H+lk5Mi5EmbTeox5nMGCsbw==} + /@babel/helper-create-class-features-plugin@7.25.4(@babel/core@7.25.2): + resolution: {integrity: sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.8 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-member-expression-to-functions': 7.25.7 - '@babel/helper-optimise-call-expression': 7.25.7 - '@babel/helper-replace-supers': 7.25.7(@babel/core@7.25.8) - '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.8 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/traverse': 7.25.6 semver: 6.3.1 transitivePeerDependencies: - supports-color dev: false - /@babel/helper-member-expression-to-functions@7.25.7: - resolution: {integrity: sha512-O31Ssjd5K6lPbTX9AAYpSKrZmLeagt9uwschJd+Ixo6QiRyfpvgtVQp8qrDR9UNFjZ8+DO34ZkdrN+BnPXemeA==} + /@babel/helper-member-expression-to-functions@7.24.8: + resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color dev: false - /@babel/helper-module-imports@7.25.7: - resolution: {integrity: sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==} + /@babel/helper-module-imports@7.24.7: + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color dev: false - /@babel/helper-module-transforms@7.25.7(@babel/core@7.25.8): - resolution: {integrity: sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==} + /@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2): + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.8 - '@babel/helper-module-imports': 7.25.7 - '@babel/helper-simple-access': 7.25.7 - '@babel/helper-validator-identifier': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.6 transitivePeerDependencies: - supports-color dev: false - /@babel/helper-optimise-call-expression@7.25.7: - resolution: {integrity: sha512-VAwcwuYhv/AT+Vfr28c9y6SHzTan1ryqrydSTFGjU0uDJHw3uZ+PduI8plCLkRsDnqK2DMEDmwrOQRsK/Ykjng==} + /@babel/helper-optimise-call-expression@7.24.7: + resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.25.8 + '@babel/types': 7.25.6 dev: false - /@babel/helper-plugin-utils@7.25.7: - resolution: {integrity: sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==} + /@babel/helper-plugin-utils@7.24.8: + resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} engines: {node: '>=6.9.0'} dev: false - /@babel/helper-replace-supers@7.25.7(@babel/core@7.25.8): - resolution: {integrity: sha512-iy8JhqlUW9PtZkd4pHM96v6BdJ66Ba9yWSE4z0W4TvSZwLBPkyDsiIU3ENe4SmrzRBs76F7rQXTy1lYC49n6Lw==} + /@babel/helper-replace-supers@7.25.0(@babel/core@7.25.2): + resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.8 - '@babel/helper-member-expression-to-functions': 7.25.7 - '@babel/helper-optimise-call-expression': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/core': 7.25.2 + '@babel/helper-member-expression-to-functions': 7.24.8 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/traverse': 7.25.6 transitivePeerDependencies: - supports-color dev: false - /@babel/helper-simple-access@7.25.7: - resolution: {integrity: sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==} + /@babel/helper-simple-access@7.24.7: + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color dev: false - /@babel/helper-skip-transparent-expression-wrappers@7.25.7: - resolution: {integrity: sha512-pPbNbchZBkPMD50K0p3JGcFMNLVUCuU/ABybm/PGNj4JiHrpmNyqqCphBk4i19xXtNV0JhldQJJtbSW5aUvbyA==} + /@babel/helper-skip-transparent-expression-wrappers@7.24.7: + resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color dev: false - /@babel/helper-string-parser@7.25.7: - resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} + /@babel/helper-string-parser@7.24.8: + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.25.7: - resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} + /@babel/helper-validator-identifier@7.24.7: + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.25.7: - resolution: {integrity: sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==} + /@babel/helper-validator-option@7.24.8: + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} engines: {node: '>=6.9.0'} dev: false - /@babel/helpers@7.25.7: - resolution: {integrity: sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==} + /@babel/helpers@7.25.6: + resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.25.7 - '@babel/types': 7.25.8 + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 dev: false - /@babel/highlight@7.25.7: - resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==} + /@babel/highlight@7.24.7: + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.25.7 + '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.1.1 + picocolors: 1.1.0 - /@babel/parser@7.25.8: - resolution: {integrity: sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==} + /@babel/parser@7.25.6: + resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.25.8 + '@babel/types': 7.25.6 - /@babel/plugin-syntax-jsx@7.25.7(@babel/core@7.25.8): - resolution: {integrity: sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw==} + /@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-syntax-typescript@7.25.7(@babel/core@7.25.8): - resolution: {integrity: sha512-rR+5FDjpCHqqZN2bzZm18bVYGaejGq5ZkpVCJLXor/+zlSrSoc4KWcHI0URVWjl/68Dyr1uwZUz/1njycEAv9g==} + /@babel/plugin-syntax-typescript@7.25.4(@babel/core@7.25.2): + resolution: {integrity: sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-transform-typescript@7.25.7(@babel/core@7.25.8): - resolution: {integrity: sha512-VKlgy2vBzj8AmEzunocMun2fF06bsSWV+FvVXohtL6FGve/+L217qhHxRTVGHEDO/YR8IANcjzgJsd04J8ge5Q==} + /@babel/plugin-transform-typescript@7.25.2(@babel/core@7.25.2): + resolution: {integrity: sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.8 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.8) - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 - '@babel/plugin-syntax-typescript': 7.25.7(@babel/core@7.25.8) + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-syntax-typescript': 7.25.4(@babel/core@7.25.2) transitivePeerDependencies: - supports-color dev: false - /@babel/runtime@7.25.7: - resolution: {integrity: sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==} + /@babel/runtime@7.25.6: + resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 dev: false - /@babel/template@7.25.7: - resolution: {integrity: sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==} + /@babel/template@7.25.0: + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.25.7 - '@babel/parser': 7.25.8 - '@babel/types': 7.25.8 + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 dev: false - /@babel/traverse@7.25.7: - resolution: {integrity: sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==} + /@babel/traverse@7.25.6: + resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.25.7 - '@babel/generator': 7.25.7 - '@babel/parser': 7.25.8 - '@babel/template': 7.25.7 - '@babel/types': 7.25.8 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 debug: 4.3.7 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: false - /@babel/types@7.25.8: - resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==} + /@babel/types@7.25.6: + resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.25.7 - '@babel/helper-validator-identifier': 7.25.7 + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 - /@commitlint/cli@17.4.1: - resolution: {integrity: sha512-W8OJwz+izY+fVwyUt1HveCDmABMZNRVZHSVPw/Bh9Y62tp11SmmQaycgbsYLMiMy7JGn4mAJqEGlSHS9Uti9ZQ==} + /@codemirror/autocomplete@6.18.1(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.33.0)(@lezer/common@1.2.1): + resolution: {integrity: sha512-iWHdj/B1ethnHRTwZj+C1obmmuCzquH29EbcKr0qIjA9NfDeBDJ7vs+WOHsFeLeflE4o+dHfYndJloMKHUkWUA==} + peerDependencies: + '@codemirror/language': ^6.0.0 + '@codemirror/state': ^6.0.0 + '@codemirror/view': ^6.0.0 + '@lezer/common': ^1.0.0 + dependencies: + '@codemirror/language': 6.10.2 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.33.0 + '@lezer/common': 1.2.1 + dev: false + + /@codemirror/commands@6.6.2: + resolution: {integrity: sha512-Fq7eWOl1Rcbrfn6jD8FPCj9Auaxdm5nIK5RYOeW7ughnd/rY5AmPg6b+CfsG39ZHdwiwe8lde3q8uR7CF5S0yQ==} + dependencies: + '@codemirror/language': 6.10.2 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.33.0 + '@lezer/common': 1.2.1 + dev: false + + /@codemirror/lang-json@6.0.1: + resolution: {integrity: sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==} + dependencies: + '@codemirror/language': 6.10.2 + '@lezer/json': 1.0.2 + dev: false + + /@codemirror/language@6.10.2: + resolution: {integrity: sha512-kgbTYTo0Au6dCSc/TFy7fK3fpJmgHDv1sG1KNQKJXVi+xBTEeBPY/M30YXiU6mMXeH+YIDLsbrT4ZwNRdtF+SA==} + dependencies: + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.33.0 + '@lezer/common': 1.2.1 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + style-mod: 4.1.2 + dev: false + + /@codemirror/lint@6.8.1: + resolution: {integrity: sha512-IZ0Y7S4/bpaunwggW2jYqwLuHj0QtESf5xcROewY6+lDNwZ/NzvR4t+vpYgg9m7V8UXLPYqG+lu3DF470E5Oxg==} + dependencies: + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.33.0 + crelt: 1.0.6 + dev: false + + /@codemirror/search@6.5.6: + resolution: {integrity: sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==} + dependencies: + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.33.0 + crelt: 1.0.6 + dev: false + + /@codemirror/state@6.4.1: + resolution: {integrity: sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==} + dev: false + + /@codemirror/view@6.33.0: + resolution: {integrity: sha512-AroaR3BvnjRW8fiZBalAaK+ZzB5usGgI014YKElYZvQdNH5ZIidHlO+cyf/2rWzyBFRkvG6VhiXeAEbC53P2YQ==} + dependencies: + '@codemirror/state': 6.4.1 + style-mod: 4.1.2 + w3c-keyname: 2.2.8 + dev: false + + /@commitlint/cli@17.8.1: + resolution: {integrity: sha512-ay+WbzQesE0Rv4EQKfNbSMiJJ12KdKTDzIt0tcK4k11FdsWmtwP0Kp1NWMOUswfIWo6Eb7p7Ln721Nx9FLNBjg==} engines: {node: '>=v14'} hasBin: true dependencies: @@ -594,11 +657,11 @@ packages: - '@swc/wasm' dev: true - /@commitlint/config-conventional@17.4.0: - resolution: {integrity: sha512-G4XBf45J4ZMspO4NwBFzY3g/1Kb+B42BcIxeikF8wucQxcyxcmhRdjeQpRpS1XEcBq5pdtEEQFipuB9IuiNFhw==} + /@commitlint/config-conventional@17.8.1: + resolution: {integrity: sha512-NxCOHx1kgneig3VLauWJcDWS40DVjg7nKOpBEEK9E5fjJpQqLCilcnKkIIjdBH98kEO1q3NpE5NSrZ2kl/QGJg==} engines: {node: '>=v14'} dependencies: - conventional-changelog-conventionalcommits: 5.0.0 + conventional-changelog-conventionalcommits: 6.1.0 dev: true /@commitlint/config-validator@17.8.1: @@ -662,14 +725,14 @@ packages: '@commitlint/types': 17.8.1 '@types/node': 20.5.1 chalk: 4.1.2 - cosmiconfig: 8.3.6(typescript@4.9.3) - cosmiconfig-typescript-loader: 4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6)(ts-node@10.9.2)(typescript@4.9.3) + cosmiconfig: 8.3.6(typescript@4.9.5) + cosmiconfig-typescript-loader: 4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6)(ts-node@10.9.2)(typescript@4.9.5) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.2(@types/node@18.14.0)(typescript@4.9.3) - typescript: 4.9.3 + ts-node: 10.9.2(@types/node@18.19.50)(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' @@ -754,232 +817,251 @@ packages: engines: {node: '>=10'} dev: false - /@esbuild/android-arm64@0.16.17: - resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==} + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] requiresBuild: true optional: true - /@esbuild/android-arm@0.16.17: - resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==} + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} cpu: [arm] os: [android] requiresBuild: true optional: true - /@esbuild/android-x64@0.16.17: - resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==} + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} cpu: [x64] os: [android] requiresBuild: true optional: true - /@esbuild/darwin-arm64@0.16.17: - resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==} + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@esbuild/darwin-x64@0.16.17: - resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==} + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@esbuild/freebsd-arm64@0.16.17: - resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==} + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] requiresBuild: true optional: true - /@esbuild/freebsd-x64@0.16.17: - resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==} + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] requiresBuild: true optional: true - /@esbuild/linux-arm64@0.16.17: - resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==} + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-arm@0.16.17: - resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==} + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-ia32@0.16.17: - resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==} + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-loong64@0.16.17: - resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==} + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-mips64el@0.16.17: - resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==} + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-ppc64@0.16.17: - resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==} + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-riscv64@0.16.17: - resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==} + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-s390x@0.16.17: - resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==} + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-x64@0.16.17: - resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==} + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@esbuild/netbsd-x64@0.16.17: - resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==} + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] requiresBuild: true optional: true - /@esbuild/openbsd-x64@0.16.17: - resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==} + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] requiresBuild: true optional: true - /@esbuild/sunos-x64@0.16.17: - resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==} + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] requiresBuild: true optional: true - /@esbuild/win32-arm64@0.16.17: - resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==} + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@esbuild/win32-ia32@0.16.17: - resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==} + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@esbuild/win32-x64@0.16.17: - resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==} + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] requiresBuild: true optional: true - /@fullcalendar/core@6.1.13: - resolution: {integrity: sha512-Cps/hMQan4kwnsBhFf2+m2mijbGoWs6r18ZzxBnAAOkkNHtPmHU8EdR6lF+ZLsiVvb7nsC4H/ZKqnxXWwgpoPw==} + /@fortawesome/fontawesome-common-types@6.6.0: + resolution: {integrity: sha512-xyX0X9mc0kyz9plIyryrRbl7ngsA9jz77mCZJsUkLl+ZKs0KWObgaEBoSgQiYWAsSmjz/yjl0F++Got0Mdp4Rw==} + engines: {node: '>=6'} + dev: false + + /@fortawesome/free-regular-svg-icons@6.6.0: + resolution: {integrity: sha512-Yv9hDzL4aI73BEwSEh20clrY8q/uLxawaQ98lekBx6t9dQKDHcDzzV1p2YtBGTtolYtNqcWdniOnhzB+JPnQEQ==} + engines: {node: '>=6'} + dependencies: + '@fortawesome/fontawesome-common-types': 6.6.0 + dev: false + + /@fortawesome/free-solid-svg-icons@6.6.0: + resolution: {integrity: sha512-IYv/2skhEDFc2WGUcqvFJkeK39Q+HyPf5GHUrT/l2pKbtgEIv1al1TKd6qStR5OIwQdN1GZP54ci3y4mroJWjA==} + engines: {node: '>=6'} + dependencies: + '@fortawesome/fontawesome-common-types': 6.6.0 + dev: false + + /@fullcalendar/core@6.1.15: + resolution: {integrity: sha512-BuX7o6ALpLb84cMw1FCB9/cSgF4JbVO894cjJZ6kP74jzbUZNjtwffwRdA+Id8rrLjT30d/7TrkW90k4zbXB5Q==} dependencies: preact: 10.12.1 dev: false - /@fullcalendar/daygrid@6.1.13(@fullcalendar/core@6.1.13): - resolution: {integrity: sha512-0I0hL1kgGjkZuc7Qt8mu4jjrqIL5PZzd58bEpTxoXRKI5UBZ9KbshGVMryQSXYANlrRtkPnXVt90VIDrxZbDrA==} + /@fullcalendar/daygrid@6.1.15(@fullcalendar/core@6.1.15): + resolution: {integrity: sha512-j8tL0HhfiVsdtOCLfzK2J0RtSkiad3BYYemwQKq512cx6btz6ZZ2RNc/hVnIxluuWFyvx5sXZwoeTJsFSFTEFA==} peerDependencies: - '@fullcalendar/core': ~6.1.13 + '@fullcalendar/core': ~6.1.15 dependencies: - '@fullcalendar/core': 6.1.13 + '@fullcalendar/core': 6.1.15 dev: false - /@fullcalendar/interaction@6.1.13(@fullcalendar/core@6.1.13): - resolution: {integrity: sha512-r1w+jqCRGZZyxKFquueDSFvbsFhJLhc1BX8Nlyz684lYxS1SiToYJW9Q8X/XkySCzpjO3KOnxEp2jVOn1Usyjg==} + /@fullcalendar/interaction@6.1.15(@fullcalendar/core@6.1.15): + resolution: {integrity: sha512-DOTSkofizM7QItjgu7W68TvKKvN9PSEEvDJceyMbQDvlXHa7pm/WAVtAc6xSDZ9xmB1QramYoWGLHkCYbTW1rQ==} peerDependencies: - '@fullcalendar/core': ~6.1.13 + '@fullcalendar/core': ~6.1.15 dependencies: - '@fullcalendar/core': 6.1.13 + '@fullcalendar/core': 6.1.15 dev: false - /@fullcalendar/vue3@6.1.13(@fullcalendar/core@6.1.13)(vue@3.3.4): - resolution: {integrity: sha512-m4pEeYXKo79lnLJAGRrNPxovZWXFXSS/5F+QXLN/eXljP/F2caFG/Bj24eFTXHlj1QykgJ56iwC8ZLpShMdANg==} + /@fullcalendar/vue3@6.1.15(@fullcalendar/core@6.1.15)(vue@3.3.4): + resolution: {integrity: sha512-ctfTICGrNEIj7gmLHQcUYe0WzDTSW5Vd9hyOnVChxPU75AZU9WqdDMkHwJYnfNxNhT6QQuiMHq/qsRRd5zQwOw==} peerDependencies: - '@fullcalendar/core': ~6.1.13 + '@fullcalendar/core': ~6.1.15 vue: ^3.0.11 dependencies: - '@fullcalendar/core': 6.1.13 + '@fullcalendar/core': 6.1.15 vue: 3.3.4 dev: false - /@intlify/core-base@9.13.1: - resolution: {integrity: sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w==} + /@intlify/core-base@9.14.0: + resolution: {integrity: sha512-zJn0imh9HIsZZUtt9v8T16PeVstPv6bP2YzlrYJwoF8F30gs4brZBwW2KK6EI5WYKFi3NeqX6+UU4gniz5TkGg==} engines: {node: '>= 16'} dependencies: - '@intlify/message-compiler': 9.13.1 - '@intlify/shared': 9.13.1 + '@intlify/message-compiler': 9.14.0 + '@intlify/shared': 9.14.0 dev: false - /@intlify/message-compiler@9.13.1: - resolution: {integrity: sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==} + /@intlify/message-compiler@9.14.0: + resolution: {integrity: sha512-sXNsoMI0YsipSXW8SR75drmVK56tnJHoYbPXUv2Cf9lz6FzvwsosFm6JtC1oQZI/kU+n7qx0qRrEWkeYFTgETA==} engines: {node: '>= 16'} dependencies: - '@intlify/shared': 9.13.1 + '@intlify/shared': 9.14.0 source-map-js: 1.2.1 dev: false - /@intlify/shared@9.13.1: - resolution: {integrity: sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ==} + /@intlify/shared@9.14.0: + resolution: {integrity: sha512-r+N8KRQL7LgN1TMTs1A2svfuAU0J94Wu9wWdJVJqYsoMMLIeJxrPjazihfHpmJqfgZq0ah3Y9Q4pgWV2O90Fyg==} engines: {node: '>= 16'} dev: false @@ -1021,10 +1103,34 @@ packages: '@jridgewell/sourcemap-codec': 1.5.0 dev: true + /@lezer/common@1.2.1: + resolution: {integrity: sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==} + dev: false + + /@lezer/highlight@1.2.1: + resolution: {integrity: sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==} + dependencies: + '@lezer/common': 1.2.1 + dev: false + + /@lezer/json@1.0.2: + resolution: {integrity: sha512-xHT2P4S5eeCYECyKNPhr4cbEL9tc8w83SPwRC373o9uEdrvGKTZoJVAGxpOsZckMlEh9W23Pc72ew918RWQOBQ==} + dependencies: + '@lezer/common': 1.2.1 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + dev: false + + /@lezer/lr@1.4.2: + resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==} + dependencies: + '@lezer/common': 1.2.1 + dev: false + /@math.gl/core@3.6.3: resolution: {integrity: sha512-jBABmDkj5uuuE0dTDmwwss7Cup5ZwQ6Qb7h1pgvtkEutTrhkcv8SuItQNXmF45494yIHeoGue08NlyeY6wxq2A==} dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.25.6 '@math.gl/types': 3.6.3 gl-matrix: 3.4.3 dev: false @@ -1033,10 +1139,6 @@ packages: resolution: {integrity: sha512-3uWLVXHY3jQxsXCr/UCNPSc2BG0hNUljhmOBt9l+lNFDp7zHgm0cK2Tw4kj2XfkJy4TgwZTBGwRDQgWEbLbdTA==} dev: false - /@microsoft/fetch-event-source@2.0.1: - resolution: {integrity: sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA==} - dev: false - /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1055,6 +1157,18 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 + /@replit/codemirror-indentation-markers@6.5.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.33.0): + resolution: {integrity: sha512-hL5Sfvw3C1vgg7GolLe/uxX5T3tmgOA3ZzqlMv47zjU1ON51pzNWiVbS22oh6crYhtVhv8b3gdXwoYp++2ilHw==} + peerDependencies: + '@codemirror/language': ^6.0.0 + '@codemirror/state': ^6.0.0 + '@codemirror/view': ^6.0.0 + dependencies: + '@codemirror/language': 6.10.2 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.33.0 + dev: false + /@rollup/pluginutils@4.2.1: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} @@ -1063,8 +1177,8 @@ packages: picomatch: 2.3.1 dev: true - /@rollup/pluginutils@5.1.2: - resolution: {integrity: sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==} + /@rollup/pluginutils@5.1.0: + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -1072,7 +1186,7 @@ packages: rollup: optional: true dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 @@ -1088,6 +1202,10 @@ packages: engines: {node: '>=6'} dev: true + /@sphinxxxx/color-conversion@2.2.2: + resolution: {integrity: sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==} + dev: false + /@szmarczak/http-timer@1.1.2: resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} engines: {node: '>=6'} @@ -1133,25 +1251,25 @@ packages: resolution: {integrity: sha512-KqQnQbdYE54D7oa/UmYVMZKq7CO4l8DEENzOKc4aBRwxCXSlJXGz83flFx5L7AWrOQnmuN3kVsRdt+GZPPjiVQ==} deprecated: This is a stub types definition for axios (https://github.com/mzabriskie/axios). axios provides its own type definitions, so you don't need @types/axios installed! dependencies: - axios: 1.2.1 + axios: 1.7.7 transitivePeerDependencies: - debug dev: false - /@types/estree@1.0.6: - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} /@types/fs-extra@8.1.5: resolution: {integrity: sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==} dependencies: - '@types/node': 18.14.0 + '@types/node': 18.19.50 dev: false /@types/glob@7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 18.14.0 + '@types/node': 18.19.50 dev: false /@types/json-schema@7.0.15: @@ -1161,21 +1279,21 @@ packages: /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 18.14.0 + '@types/node': 18.19.50 dev: true /@types/linkify-it@5.0.0: resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} dev: false - /@types/lodash-es@4.17.6: - resolution: {integrity: sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==} + /@types/lodash-es@4.17.12: + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} dependencies: - '@types/lodash': 4.17.12 + '@types/lodash': 4.17.7 dev: true - /@types/lodash@4.17.12: - resolution: {integrity: sha512-sviUmCE8AYdaF/KIHLDJBQgeYzPBI0vf/17NaYehBJfYD1j6/L95Slh07NlyK2iNyBNaEkb3En2jRt+a8y3xZQ==} + /@types/lodash@4.17.7: + resolution: {integrity: sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==} dev: true /@types/markdown-it@14.1.2: @@ -1185,8 +1303,8 @@ packages: '@types/mdurl': 2.0.0 dev: false - /@types/marked@4.0.8: - resolution: {integrity: sha512-HVNzMT5QlWCOdeuBsgXP8EZzKUf0+AXzN+sLmjvaB3ZlLqO+e4u0uXrdw9ub69wBKFs+c6/pA4r9sy6cCDvImw==} + /@types/marked@4.3.2: + resolution: {integrity: sha512-a79Yc3TOk6dGdituy8hmTTJXjOkZ7zsFYV10L337ttq/rec8lRMDBpV7fL3uLx6TgbFCa5DU/h8FmIBQPSbU0w==} dev: false /@types/mdurl@2.0.0: @@ -1205,14 +1323,10 @@ packages: resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} dev: true - /@types/node@18.14.0: - resolution: {integrity: sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A==} - - /@types/node@18.19.57: - resolution: {integrity: sha512-I2ioBd/IPrYDMv9UNR5NlPElOZ68QB7yY5V2EsLtSrTO0LM0PnCEFF9biLWHf5k+sIy4ohueCV9t4gk1AEdlVA==} + /@types/node@18.19.50: + resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==} dependencies: undici-types: 5.26.5 - dev: false /@types/node@20.5.1: resolution: {integrity: sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==} @@ -1225,86 +1339,64 @@ packages: /@types/responselike@1.0.3: resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} dependencies: - '@types/node': 18.14.0 + '@types/node': 18.19.50 dev: true /@types/web-bluetooth@0.0.16: resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} dev: false - /@vitejs/plugin-vue-jsx@3.0.0(vite@4.0.0)(vue@3.3.4): - resolution: {integrity: sha512-vurkuzgac5SYuxd2HUZqAFAWGTF10diKBwJNbCvnWijNZfXd+7jMtqjPFbGt7idOJUn584fP1Ar9j/GN2jQ3Ew==} + /@vitejs/plugin-vue-jsx@3.1.0(vite@4.5.5)(vue@3.3.4): + resolution: {integrity: sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - vite: ^4.0.0 + vite: ^4.0.0 || ^5.0.0 vue: ^3.0.0 dependencies: - '@babel/core': 7.25.8 - '@babel/plugin-transform-typescript': 7.25.7(@babel/core@7.25.8) - '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.25.8) - vite: 4.0.0(@types/node@18.14.0)(less@4.1.3) + '@babel/core': 7.25.2 + '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) + '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.25.2) + vite: 4.5.5(@types/node@18.19.50)(less@4.2.0) vue: 3.3.4 transitivePeerDependencies: - supports-color dev: false - /@vitejs/plugin-vue@4.0.0(vite@4.0.0)(vue@3.3.4): - resolution: {integrity: sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==} + /@vitejs/plugin-vue@4.6.2(vite@4.5.5)(vue@3.3.4): + resolution: {integrity: sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - vite: ^4.0.0 + vite: ^4.0.0 || ^5.0.0 vue: ^3.2.25 dependencies: - vite: 4.0.0(@types/node@18.14.0)(less@4.1.3) + vite: 4.5.5(@types/node@18.19.50)(less@4.2.0) vue: 3.3.4 dev: true - /@volar/language-core@1.0.11: - resolution: {integrity: sha512-YwUYKxIyDc+Fq3kQ6BGGfkrKCG5JzE2Yr6vMxrxEXW2rg/gsq3JgMk/4sI8ybRsaTirhCB4V8+AIVYsvcRxgig==} + /@volar/language-core@1.11.1: + resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} dependencies: - '@volar/source-map': 1.0.11 - '@vue/reactivity': 3.5.12 - muggle-string: 0.1.0 + '@volar/source-map': 1.11.1 dev: true - /@volar/source-map@1.0.11: - resolution: {integrity: sha512-tkuV9MD+OuiZfHA0qZXrPdW6F7TvnpnuTan6Qe7UGUs9+sflezlMJdjaYdGgQObfP+06pcT1E3xdkOoi08ZyyQ==} + /@volar/source-map@1.11.1: + resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} dependencies: - muggle-string: 0.1.0 + muggle-string: 0.3.1 dev: true - /@volar/typescript@1.0.11: - resolution: {integrity: sha512-mq7wDDAs0Eb43jev2FxbowuiwWqvL3kb+tar1we8VQbdabpyQ5dmbWPwo/IglevMmW3SKo1Et+6rqAeZpXNnPQ==} + /@volar/typescript@1.11.1: + resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} dependencies: - '@volar/language-core': 1.0.11 - dev: true - - /@volar/vue-language-core@1.0.11: - resolution: {integrity: sha512-A3ODs0/ua7BcpSSnE7KtO8bzWsYsbOJRyW2Q/2uktxlfHj8srln3JdgK/mNlIgfnWtACbE5K+EfMJOgJKv864A==} - dependencies: - '@volar/language-core': 1.0.11 - '@volar/source-map': 1.0.11 - '@vue/compiler-dom': 3.5.12 - '@vue/compiler-sfc': 3.5.12 - '@vue/reactivity': 3.5.12 - '@vue/shared': 3.5.12 - minimatch: 5.1.6 - vue-template-compiler: 2.7.16 - dev: true - - /@volar/vue-typescript@1.0.11: - resolution: {integrity: sha512-jlnFPvBcTyPiAbGlgjhKK7fp3Q+Z7Z5eU1NTbTSS0lQC8Gog3sh2UxLAFG5Voe1gHIxasoOEPXzMR0CWF4bKbA==} - deprecated: 'WARNING: This project has been renamed to @vue/typescript. Install using @vue/typescript instead.' - dependencies: - '@volar/typescript': 1.0.11 - '@volar/vue-language-core': 1.0.11 + '@volar/language-core': 1.11.1 + path-browserify: 1.0.1 dev: true /@vue/babel-helper-vue-transform-on@1.2.5: resolution: {integrity: sha512-lOz4t39ZdmU4DJAa2hwPYmKc8EsuGa2U0L9KaZaOJUt0UwQNjNA3AZTq6uEivhOKhhG1Wvy96SvYBoFmCg3uuw==} dev: false - /@vue/babel-plugin-jsx@1.2.5(@babel/core@7.25.8): + /@vue/babel-plugin-jsx@1.2.5(@babel/core@7.25.2): resolution: {integrity: sha512-zTrNmOd4939H9KsRIGmmzn3q2zvv1mjxkYZHgqHZgDrXz5B1Q3WyGEjO2f+JrmKghvl1JIRcvo63LgM1kH5zFg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1312,32 +1404,32 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.25.8 - '@babel/helper-module-imports': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-jsx': 7.25.7(@babel/core@7.25.8) - '@babel/template': 7.25.7 - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 '@vue/babel-helper-vue-transform-on': 1.2.5 - '@vue/babel-plugin-resolve-type': 1.2.5(@babel/core@7.25.8) + '@vue/babel-plugin-resolve-type': 1.2.5(@babel/core@7.25.2) html-tags: 3.3.1 svg-tags: 1.0.0 transitivePeerDependencies: - supports-color dev: false - /@vue/babel-plugin-resolve-type@1.2.5(@babel/core@7.25.8): + /@vue/babel-plugin-resolve-type@1.2.5(@babel/core@7.25.2): resolution: {integrity: sha512-U/ibkQrf5sx0XXRnUZD1mo5F7PkpKyTbfXM3a3rC4YnUz6crHEz9Jg09jzzL6QYlXNto/9CePdOg/c87O4Nlfg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/code-frame': 7.25.7 - '@babel/core': 7.25.8 - '@babel/helper-module-imports': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/parser': 7.25.8 - '@vue/compiler-sfc': 3.5.12 + '@babel/code-frame': 7.24.7 + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/parser': 7.25.6 + '@vue/compiler-sfc': 3.5.6 transitivePeerDependencies: - supports-color dev: false @@ -1345,16 +1437,16 @@ packages: /@vue/compiler-core@3.3.4: resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} dependencies: - '@babel/parser': 7.25.8 + '@babel/parser': 7.25.6 '@vue/shared': 3.3.4 estree-walker: 2.0.2 source-map-js: 1.2.1 - /@vue/compiler-core@3.5.12: - resolution: {integrity: sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==} + /@vue/compiler-core@3.5.6: + resolution: {integrity: sha512-r+gNu6K4lrvaQLQGmf+1gc41p3FO2OUJyWmNqaIITaJU6YFiV5PtQSFZt8jfztYyARwqhoCayjprC7KMvT3nRA==} dependencies: - '@babel/parser': 7.25.8 - '@vue/shared': 3.5.12 + '@babel/parser': 7.25.6 + '@vue/shared': 3.5.6 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.1 @@ -1365,36 +1457,36 @@ packages: '@vue/compiler-core': 3.3.4 '@vue/shared': 3.3.4 - /@vue/compiler-dom@3.5.12: - resolution: {integrity: sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==} + /@vue/compiler-dom@3.5.6: + resolution: {integrity: sha512-xRXqxDrIqK8v8sSScpistyYH0qYqxakpsIvqMD2e5sV/PXQ1mTwtXp4k42yHK06KXxKSmitop9e45Ui/3BrTEw==} dependencies: - '@vue/compiler-core': 3.5.12 - '@vue/shared': 3.5.12 + '@vue/compiler-core': 3.5.6 + '@vue/shared': 3.5.6 /@vue/compiler-sfc@3.3.4: resolution: {integrity: sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==} dependencies: - '@babel/parser': 7.25.8 + '@babel/parser': 7.25.6 '@vue/compiler-core': 3.3.4 '@vue/compiler-dom': 3.3.4 '@vue/compiler-ssr': 3.3.4 '@vue/reactivity-transform': 3.3.4 '@vue/shared': 3.3.4 estree-walker: 2.0.2 - magic-string: 0.30.12 + magic-string: 0.30.11 postcss: 8.4.47 source-map-js: 1.2.1 - /@vue/compiler-sfc@3.5.12: - resolution: {integrity: sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==} + /@vue/compiler-sfc@3.5.6: + resolution: {integrity: sha512-pjWJ8Kj9TDHlbF5LywjVso+BIxCY5wVOLhkEXRhuCHDxPFIeX1zaFefKs8RYoHvkSMqRWt93a0f2gNJVJixHwg==} dependencies: - '@babel/parser': 7.25.8 - '@vue/compiler-core': 3.5.12 - '@vue/compiler-dom': 3.5.12 - '@vue/compiler-ssr': 3.5.12 - '@vue/shared': 3.5.12 + '@babel/parser': 7.25.6 + '@vue/compiler-core': 3.5.6 + '@vue/compiler-dom': 3.5.6 + '@vue/compiler-ssr': 3.5.6 + '@vue/shared': 3.5.6 estree-walker: 2.0.2 - magic-string: 0.30.12 + magic-string: 0.30.11 postcss: 8.4.47 source-map-js: 1.2.1 @@ -1404,35 +1496,55 @@ packages: '@vue/compiler-dom': 3.3.4 '@vue/shared': 3.3.4 - /@vue/compiler-ssr@3.5.12: - resolution: {integrity: sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==} + /@vue/compiler-ssr@3.5.6: + resolution: {integrity: sha512-VpWbaZrEOCqnmqjE83xdwegtr5qO/2OPUC6veWgvNqTJ3bYysz6vY3VqMuOijubuUYPRpG3OOKIh9TD0Stxb9A==} dependencies: - '@vue/compiler-dom': 3.5.12 - '@vue/shared': 3.5.12 + '@vue/compiler-dom': 3.5.6 + '@vue/shared': 3.5.6 /@vue/devtools-api@6.6.4: resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} dev: false + /@vue/language-core@1.8.27(typescript@4.9.5): + resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@volar/language-core': 1.11.1 + '@volar/source-map': 1.11.1 + '@vue/compiler-dom': 3.5.6 + '@vue/shared': 3.5.6 + computeds: 0.0.1 + minimatch: 9.0.5 + muggle-string: 0.3.1 + path-browserify: 1.0.1 + typescript: 4.9.5 + vue-template-compiler: 2.7.16 + dev: true + /@vue/reactivity-transform@3.3.4: resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==} dependencies: - '@babel/parser': 7.25.8 + '@babel/parser': 7.25.6 '@vue/compiler-core': 3.3.4 '@vue/shared': 3.3.4 estree-walker: 2.0.2 - magic-string: 0.30.12 + magic-string: 0.30.11 /@vue/reactivity@3.3.4: resolution: {integrity: sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==} dependencies: '@vue/shared': 3.3.4 - /@vue/reactivity@3.5.12: - resolution: {integrity: sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==} + /@vue/reactivity@3.5.6: + resolution: {integrity: sha512-shZ+KtBoHna5GyUxWfoFVBCVd7k56m6lGhk5e+J9AKjheHF6yob5eukssHRI+rzvHBiU1sWs/1ZhNbLExc5oYQ==} dependencies: - '@vue/shared': 3.5.12 - dev: true + '@vue/shared': 3.5.6 + dev: false /@vue/runtime-core@3.3.4: resolution: {integrity: sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==} @@ -1440,6 +1552,13 @@ packages: '@vue/reactivity': 3.3.4 '@vue/shared': 3.3.4 + /@vue/runtime-core@3.5.6: + resolution: {integrity: sha512-FpFULR6+c2lI+m1fIGONLDqPQO34jxV8g6A4wBOgne8eSRHP6PQL27+kWFIx5wNhhjkO7B4rgtsHAmWv7qKvbg==} + dependencies: + '@vue/reactivity': 3.5.6 + '@vue/shared': 3.5.6 + dev: false + /@vue/runtime-dom@3.3.4: resolution: {integrity: sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==} dependencies: @@ -1447,6 +1566,15 @@ packages: '@vue/shared': 3.3.4 csstype: 3.1.3 + /@vue/runtime-dom@3.5.6: + resolution: {integrity: sha512-SDPseWre45G38ENH2zXRAHL1dw/rr5qp91lS4lt/nHvMr0MhsbCbihGAWLXNB/6VfFOJe2O+RBRkXU+CJF7/sw==} + dependencies: + '@vue/reactivity': 3.5.6 + '@vue/runtime-core': 3.5.6 + '@vue/shared': 3.5.6 + csstype: 3.1.3 + dev: false + /@vue/server-renderer@3.3.4(vue@3.3.4): resolution: {integrity: sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==} peerDependencies: @@ -1456,11 +1584,21 @@ packages: '@vue/shared': 3.3.4 vue: 3.3.4 + /@vue/server-renderer@3.5.6(vue@3.5.6): + resolution: {integrity: sha512-zivnxQnOnwEXVaT9CstJ64rZFXMS5ZkKxCjDQKiMSvUhXRzFLWZVbaBiNF4HGDqGNNsTgmjcCSmU6TB/0OOxLA==} + peerDependencies: + vue: 3.5.6 + dependencies: + '@vue/compiler-ssr': 3.5.6 + '@vue/shared': 3.5.6 + vue: 3.5.6(typescript@4.9.5) + dev: false + /@vue/shared@3.3.4: resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} - /@vue/shared@3.5.12: - resolution: {integrity: sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==} + /@vue/shared@3.5.6: + resolution: {integrity: sha512-eidH0HInnL39z6wAt6SFIwBrvGOpDWsDxlw3rCgo1B+CQ1781WzQUSU3YjxgdkcJo9Q8S6LmXTkvI+cLHGkQfA==} /@vuemap/amap-jsapi-loader@1.0.4: resolution: {integrity: sha512-s5fFHrsNkjYMovEmUJ5S23jpDtElTanDN2HdCt/amOD245a8wWVcTPjl06YEHXtxf6Ewm+z29wQByOCn209Hxg==} @@ -1502,8 +1640,8 @@ packages: unplugin-vue-components: 0.22.12(vue@3.3.4) dev: true - /@vuemap/vue-amap@2.1.2(vue@3.3.4): - resolution: {integrity: sha512-4Tn8CrmEPv822pt2pJxCtG49+GSItqDMdKHb34RtB8qyY5GpRnMeS564ZoGsZCU7S2bMLqlEw9mBneJVU5huVQ==} + /@vuemap/vue-amap@2.1.6(vue@3.3.4): + resolution: {integrity: sha512-xOFQuWYgQKRVI/yxlXv9Rb3lTTA8lZMRvzUxpfZzAIy161SGWRlggLWNLAAI+q06t0kRyIvRLII6Jlat/NOaMQ==} peerDependencies: vue: '3' dependencies: @@ -1531,18 +1669,6 @@ packages: vue-demi: 0.14.10(vue@3.3.4) dev: false - /@vueuse/core@9.10.0(vue@3.3.4): - resolution: {integrity: sha512-CxMewME07qeuzuT/AOIQGv0EhhDoojniqU6pC3F8m5VC76L47UT18DcX88kWlP3I7d3qMJ4u/PD8iSRsy3bmNA==} - dependencies: - '@types/web-bluetooth': 0.0.16 - '@vueuse/metadata': 9.10.0 - '@vueuse/shared': 9.10.0(vue@3.3.4) - vue-demi: 0.14.10(vue@3.3.4) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: false - /@vueuse/core@9.13.0(vue@3.3.4): resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==} dependencies: @@ -1555,44 +1681,18 @@ packages: - vue dev: false - /@vueuse/metadata@9.10.0: - resolution: {integrity: sha512-G5VZhgTCapzU9rv0Iq2HBrVOSGzOKb+OE668NxhXNcTjUjwYxULkEhAw70FtRLMZc+hxcFAzDZlKYA0xcwNMuw==} - dev: false - /@vueuse/metadata@9.13.0: resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==} dev: false - /@vueuse/router@11.1.0(vue-router@4.1.6)(vue@3.3.4): - resolution: {integrity: sha512-OjTNIOzX5jD1HDzmDApMke2QsCZ+gWKaydfndKJ3j9ttn41Pr11cQbSY6ZBp+bNjctAR+jhQBV/DGtL3iKpuHg==} - peerDependencies: - vue-router: '>=4.0.0-rc.1' - dependencies: - '@vueuse/shared': 11.1.0(vue@3.3.4) - vue-demi: 0.14.10(vue@3.3.4) - vue-router: 4.1.6(vue@3.3.4) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: false - - /@vueuse/router@9.13.0(vue-router@4.1.6)(vue@3.3.4): + /@vueuse/router@9.13.0(vue-router@4.4.5)(vue@3.3.4): resolution: {integrity: sha512-lcL6auSUGMGZMdDzZJb02QDe909AChzMXoxqFS3gL2E8mHmIx0SrNor+33UkqvvBPi18vXpDq/R7tPd9fxWwTg==} peerDependencies: vue-router: '>=4.0.0-rc.1' dependencies: '@vueuse/shared': 9.13.0(vue@3.3.4) vue-demi: 0.14.10(vue@3.3.4) - vue-router: 4.1.6(vue@3.3.4) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: false - - /@vueuse/shared@11.1.0(vue@3.3.4): - resolution: {integrity: sha512-YUtIpY122q7osj+zsNMFAfMTubGz0sn5QzE5gPzAIiCmtt2ha3uQUY1+JPyL4gRCTsLPX82Y9brNbo/aqlA91w==} - dependencies: - vue-demi: 0.14.10(vue@3.3.4) + vue-router: 4.4.5(vue@3.3.4) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -1613,15 +1713,6 @@ packages: vue-demi: 0.14.10(vue@3.3.4) dev: false - /@vueuse/shared@9.10.0(vue@3.3.4): - resolution: {integrity: sha512-vakHJ2ZRklAzqmcVBL38RS7BxdBA4+5poG9NsSyqJxrt9kz0zX3P5CXMy0Hm6LFbZXUgvKdqAS3pUH1zX/5qTQ==} - dependencies: - vue-demi: 0.14.10(vue@3.3.4) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: false - /@vueuse/shared@9.13.0(vue@3.3.4): resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==} dependencies: @@ -1753,34 +1844,26 @@ packages: through: 2.3.8 dev: true - /acorn-import-attributes@1.9.5(acorn@8.13.0): + /acorn-import-attributes@1.9.5(acorn@8.12.1): resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} peerDependencies: acorn: ^8 dependencies: - acorn: 8.13.0 + acorn: 8.12.1 dev: false /acorn-walk@8.3.4: resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} dependencies: - acorn: 8.13.0 + acorn: 8.12.1 dev: true - /acorn@8.13.0: - resolution: {integrity: sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==} + /acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} engines: {node: '>=0.4.0'} hasBin: true - /aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - dev: true - /ajv-keywords@3.5.2(ajv@6.12.6): resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: @@ -1802,10 +1885,9 @@ packages: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.0.3 + fast-uri: 3.0.1 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - dev: true /ansi-align@2.0.0: resolution: {integrity: sha512-TdlOggdA/zURfMYa7ABC66j+oqfMew58KpJMbUlH3bcZP1b+cBHIHDDn5uH9INsxrHBPjsqM0tDB4jPTF/vgJA==} @@ -1826,6 +1908,13 @@ packages: type-fest: 0.21.3 dev: true + /ansi-escapes@5.0.0: + resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} + engines: {node: '>=12'} + dependencies: + type-fest: 1.4.0 + dev: true + /ansi-regex@2.1.1: resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} engines: {node: '>=0.10.0'} @@ -1872,15 +1961,15 @@ packages: engines: {node: '>=12'} dev: true - /ant-design-vue@3.2.15(vue@3.3.4): - resolution: {integrity: sha512-sJfE7LWimSdAPe4dzNyQBrmVMnOTNQTkG9oOyr+7W8qIYrX8sYWyC68Nn1uum4KBJUSZUa/BU6dohvTG0urBhA==} + /ant-design-vue@3.2.20(vue@3.3.4): + resolution: {integrity: sha512-YWpMfGaGoRastIXEYfCoJiaRiDHk4chqtYhlKQM5GqPt6NfvrM1Vg2e60yHtjxlZjed91wCMm0rAmyUr7Hwzdg==} engines: {node: '>=12.22.0'} peerDependencies: vue: '>=3.2.0' dependencies: '@ant-design/colors': 6.0.0 '@ant-design/icons-vue': 6.1.0(vue@3.3.4) - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.25.6 '@ctrl/tinycolor': 3.6.1 '@simonwep/pickr': 1.8.2 array-tree-filter: 2.1.0 @@ -1912,6 +2001,11 @@ packages: /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + /aria-query@5.3.1: + resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==} + engines: {node: '>= 0.4'} + dev: false + /array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} dev: true @@ -1930,30 +2024,10 @@ packages: engines: {node: '>=0.10.0'} dev: true - /asn1@0.2.6: - resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} - dependencies: - safer-buffer: 2.1.2 - dev: false - - /assert-plus@1.0.0: - resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} - engines: {node: '>=0.8'} - dev: false - - /astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - dev: true - /async-validator@4.2.5: resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} dev: false - /async@1.5.2: - resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} - dev: false - /async@3.2.6: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} dev: true @@ -1962,40 +2036,37 @@ packages: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: false - /autoprefixer@10.4.13(postcss@8.4.47): - resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} + /autoprefixer@10.4.20(postcss@8.4.47): + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.24.0 - caniuse-lite: 1.0.30001669 + browserslist: 4.23.3 + caniuse-lite: 1.0.30001660 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.1.1 + picocolors: 1.1.0 postcss: 8.4.47 postcss-value-parser: 4.2.0 dev: true - /aws-sign2@0.7.0: - resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} - dev: false - - /aws4@1.13.2: - resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} - dev: false - - /axios@1.2.1: - resolution: {integrity: sha512-I88cFiGu9ryt/tfVEi4kX2SITsvDddTajXTOFmt2uK1ZVA8LytjtdeyefdQWEf5PU8w+4SSJDoYnggflB5tW4A==} + /axios@1.7.7: + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} dependencies: follow-redirects: 1.15.9 - form-data: 4.0.1 + form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug dev: false + /axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + dev: false + /babel-code-frame@6.26.0: resolution: {integrity: sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==} dependencies: @@ -2007,12 +2078,6 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - /bcrypt-pbkdf@1.0.2: - resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} - dependencies: - tweetnacl: 0.14.5 - dev: false - /binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} @@ -2065,15 +2130,15 @@ packages: dependencies: fill-range: 7.1.1 - /browserslist@4.24.0: - resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==} + /browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001669 - electron-to-chromium: 1.5.41 + caniuse-lite: 1.0.30001660 + electron-to-chromium: 1.5.25 node-releases: 2.0.18 - update-browserslist-db: 1.1.1(browserslist@4.24.0) + update-browserslist-db: 1.1.0(browserslist@4.23.3) /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -2082,13 +2147,6 @@ packages: resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} dev: true - /bundle-name@4.1.0: - resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} - engines: {node: '>=18'} - dependencies: - run-applescript: 7.0.0 - dev: false - /cacheable-request@6.1.0: resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} engines: {node: '>=8'} @@ -2111,7 +2169,7 @@ packages: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: pascal-case: 3.1.2 - tslib: 2.8.0 + tslib: 2.7.0 dev: true /camelcase-keys@6.2.2: @@ -2133,14 +2191,14 @@ packages: engines: {node: '>=6'} dev: true - /caniuse-lite@1.0.30001669: - resolution: {integrity: sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==} + /caniuse-lite@1.0.30001660: + resolution: {integrity: sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==} /capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} dependencies: no-case: 3.0.4 - tslib: 2.8.0 + tslib: 2.7.0 upper-case-first: 2.0.2 dev: true @@ -2149,10 +2207,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /caseless@0.12.0: - resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - dev: false - /chalk@1.1.3: resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} engines: {node: '>=0.10.0'} @@ -2186,6 +2240,10 @@ packages: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true /change-case@4.1.2: @@ -2202,7 +2260,7 @@ packages: path-case: 3.0.4 sentence-case: 3.0.4 snake-case: 3.0.4 - tslib: 2.8.0 + tslib: 2.7.0 dev: true /chardet@0.7.0: @@ -2223,6 +2281,13 @@ packages: optionalDependencies: fsevents: 2.3.3 + /chokidar@4.0.0: + resolution: {integrity: sha512-mxIojEAQcuEvT/lyXq+jf/3cO/KoA6z4CeNDGGevTybECPOMFCnQy3OPahluUkbqgPNGw5Bi78UC7Po6Lhy+NA==} + engines: {node: '>= 14.16.0'} + dependencies: + readdirp: 4.0.1 + dev: false + /chrome-trace-event@1.0.4: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} @@ -2243,11 +2308,6 @@ packages: source-map: 0.6.1 dev: true - /clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - dev: true - /cli-boxes@1.0.0: resolution: {integrity: sha512-3Fo5wu8Ytle8q9iCzS4D2MWVL2X7JVWRiS1BnXbTFDhS9c/REkM9vd1AmabsoZoY5/dGi5TT9iKL8Kb6DeBRQg==} engines: {node: '>=0.10.0'} @@ -2265,12 +2325,11 @@ packages: restore-cursor: 3.1.0 dev: true - /cli-truncate@2.1.0: - resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} - engines: {node: '>=8'} + /cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - slice-ansi: 3.0.0 - string-width: 4.2.3 + restore-cursor: 4.0.0 dev: true /cli-truncate@3.1.0: @@ -2316,6 +2375,28 @@ packages: mimic-response: 1.0.1 dev: true + /code-red@1.0.4: + resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + '@types/estree': 1.0.5 + acorn: 8.12.1 + estree-walker: 3.0.3 + periscopic: 3.1.0 + dev: false + + /codemirror-wrapped-line-indent@1.0.8(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.33.0): + resolution: {integrity: sha512-5UwuHCz4oAZuvot1DbfFxSxJacTESdNGa/KpJD7HfpVpDAJdgB1vV9OG4b4pkJqPWuOfIpFLTQEKS85kTpV+XA==} + peerDependencies: + '@codemirror/language': ^6.9.0 + '@codemirror/state': ^6.2.1 + '@codemirror/view': ^6.17.1 + dependencies: + '@codemirror/language': 6.10.2 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.33.0 + dev: false + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -2357,18 +2438,17 @@ packages: delayed-stream: 1.0.0 dev: false + /commander@11.0.0: + resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} + engines: {node: '>=16'} + dev: true + /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} /commander@8.3.0: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} - dev: true - - /commander@9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} - engines: {node: ^12.20.0 || >=14} - dev: true /comment-json@2.4.2: resolution: {integrity: sha512-T+iXox779qsqneMYx/x5BZyz4xjCeQRmuNVzz8tko7qZUs3MlzpA3RAs+O1XsgcKToNBMIvfVzafGOeiU7RggA==} @@ -2380,12 +2460,12 @@ packages: repeat-string: 1.6.1 dev: true - /commitlint@17.4.1: - resolution: {integrity: sha512-stTT0LYdoIUMstnaqwuVzwb7ujVWvw/1qLxFNY9jFlwX8/kLMEWX0iFOPMeiLRda4T90beNExWFc8mPe98tLzQ==} + /commitlint@17.8.1: + resolution: {integrity: sha512-X+VPJwZsQDeGj/DG1NsxhZEl+oMHKNC+1myZ/zauNDoo+7OuLHfTOUU1C1a4CjKW4b6T7NuoFcYfK0kRCjCtbA==} engines: {node: '>=v14'} hasBin: true dependencies: - '@commitlint/cli': 17.4.1 + '@commitlint/cli': 17.8.1 '@commitlint/types': 17.8.1 transitivePeerDependencies: - '@swc/core' @@ -2403,6 +2483,10 @@ packages: resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} dev: false + /computeds@0.0.1: + resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} + dev: true + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -2412,8 +2496,8 @@ packages: deprecated: 'WARNING: This package has been renamed to typed-array-concat.' dev: false - /confbox@0.1.8: - resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + /confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} dev: false /configstore@3.1.5: @@ -2457,7 +2541,7 @@ packages: resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} dependencies: no-case: 3.0.4 - tslib: 2.8.0 + tslib: 2.7.0 upper-case: 2.0.2 dev: true @@ -2468,13 +2552,11 @@ packages: compare-func: 2.0.0 dev: true - /conventional-changelog-conventionalcommits@5.0.0: - resolution: {integrity: sha512-lCDbA+ZqVFQGUj7h9QBKoIpLhl8iihkO0nCTyRNzuXtcd7ubODpYB04IFy31JloiJgG0Uovu8ot8oxRzn7Nwtw==} - engines: {node: '>=10'} + /conventional-changelog-conventionalcommits@6.1.0: + resolution: {integrity: sha512-3cS3GEtR78zTfMzk0AizXKKIdN4OvSh7ibNz6/DPbhWWQu7LqE/8+/GqSodV+sywUR2gpJAdP/1JFf4XtN7Zpw==} + engines: {node: '>=14'} dependencies: compare-func: 2.0.0 - lodash: 4.17.21 - q: 1.5.1 dev: true /conventional-commits-parser@4.0.0: @@ -2502,15 +2584,11 @@ packages: requiresBuild: true dev: false - /core-util-is@1.0.2: - resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} - dev: false - /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cosmiconfig-typescript-loader@4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6)(ts-node@10.9.2)(typescript@4.9.3): + /cosmiconfig-typescript-loader@4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6)(ts-node@10.9.2)(typescript@4.9.5): resolution: {integrity: sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==} engines: {node: '>=v14.21.3'} peerDependencies: @@ -2520,12 +2598,12 @@ packages: typescript: '>=4' dependencies: '@types/node': 20.5.1 - cosmiconfig: 8.3.6(typescript@4.9.3) - ts-node: 10.9.2(@types/node@18.14.0)(typescript@4.9.3) - typescript: 4.9.3 + cosmiconfig: 8.3.6(typescript@4.9.5) + ts-node: 10.9.2(@types/node@18.19.50)(typescript@4.9.5) + typescript: 4.9.5 dev: true - /cosmiconfig@8.3.6(typescript@4.9.3): + /cosmiconfig@8.3.6(typescript@4.9.5): resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: @@ -2538,7 +2616,7 @@ packages: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - typescript: 4.9.3 + typescript: 4.9.5 dev: true /create-error-class@3.0.2: @@ -2552,6 +2630,10 @@ packages: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true + /crelt@1.0.6: + resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} + dev: false + /cronstrue@2.50.0: resolution: {integrity: sha512-ULYhWIonJzlScCCQrPUG5uMXzXxSixty4djud9SS37DoNxDdkeRocxzHuAo4ImRBUK+mAuU5X9TSwEDccnnuPg==} hasBin: true @@ -2598,6 +2680,14 @@ packages: nth-check: 2.1.1 dev: true + /css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.1 + dev: false + /css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} @@ -2625,13 +2715,6 @@ packages: engines: {node: '>=8'} dev: true - /dashdash@1.14.1: - resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} - engines: {node: '>=0.10'} - dependencies: - assert-plus: 1.0.0 - dev: false - /dayjs@1.11.11: resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} dev: false @@ -2640,6 +2723,18 @@ packages: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} dev: true + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + /debug@4.3.7: resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} engines: {node: '>=6.0'} @@ -2681,19 +2776,6 @@ packages: engines: {node: '>=0.10.0'} dev: false - /default-browser-id@5.0.0: - resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} - engines: {node: '>=18'} - dev: false - - /default-browser@5.2.1: - resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} - engines: {node: '>=18'} - dependencies: - bundle-name: 4.1.0 - default-browser-id: 5.0.0 - dev: false - /defer-to-connect@1.1.3: resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} dev: true @@ -2703,11 +2785,6 @@ packages: engines: {node: '>=8'} dev: false - /define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} - engines: {node: '>=12'} - dev: false - /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -2722,6 +2799,11 @@ packages: engines: {node: '>=8'} dev: true + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: false + /diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -2777,7 +2859,7 @@ packages: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 - tslib: 2.8.0 + tslib: 2.7.0 dev: true /dot-prop@4.2.1: @@ -2829,18 +2911,11 @@ packages: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /ecc-jsbn@0.1.2: - resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} - dependencies: - jsbn: 0.1.1 - safer-buffer: 2.1.2 - dev: false - - /echarts@5.4.1: - resolution: {integrity: sha512-9ltS3M2JB0w2EhcYjCdmtrJ+6haZcW6acBolMGIuf01Hql1yrIV01L1aRj7jsaaIULJslEP9Z3vKlEmnJaWJVQ==} + /echarts@5.5.1: + resolution: {integrity: sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==} dependencies: tslib: 2.3.0 - zrender: 5.4.1 + zrender: 5.6.0 dev: false /editorconfig@0.15.3: @@ -2861,8 +2936,8 @@ packages: jake: 10.9.2 dev: true - /electron-to-chromium@1.5.41: - resolution: {integrity: sha512-dfdv/2xNjX0P8Vzme4cfzHqnPm5xsZXwsolTYr0eyW18IUmNyG08vL+fttvinTfhKfIKdRoqkDIC9e9iWQCNYQ==} + /electron-to-chromium@1.5.25: + resolution: {integrity: sha512-kMb204zvK3PsSlgvvwzI3wBIcAw15tRkYk+NQdsjdDtcQWTp2RABbMQ9rUBy8KNEOM+/E6ep+XC3AykiWZld4g==} /emoji-regex@7.0.3: resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} @@ -2946,34 +3021,34 @@ packages: ext: 1.7.0 dev: false - /esbuild@0.16.17: - resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==} + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.16.17 - '@esbuild/android-arm64': 0.16.17 - '@esbuild/android-x64': 0.16.17 - '@esbuild/darwin-arm64': 0.16.17 - '@esbuild/darwin-x64': 0.16.17 - '@esbuild/freebsd-arm64': 0.16.17 - '@esbuild/freebsd-x64': 0.16.17 - '@esbuild/linux-arm': 0.16.17 - '@esbuild/linux-arm64': 0.16.17 - '@esbuild/linux-ia32': 0.16.17 - '@esbuild/linux-loong64': 0.16.17 - '@esbuild/linux-mips64el': 0.16.17 - '@esbuild/linux-ppc64': 0.16.17 - '@esbuild/linux-riscv64': 0.16.17 - '@esbuild/linux-s390x': 0.16.17 - '@esbuild/linux-x64': 0.16.17 - '@esbuild/netbsd-x64': 0.16.17 - '@esbuild/openbsd-x64': 0.16.17 - '@esbuild/sunos-x64': 0.16.17 - '@esbuild/win32-arm64': 0.16.17 - '@esbuild/win32-ia32': 0.16.17 - '@esbuild/win32-x64': 0.16.17 + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 /escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} @@ -3037,6 +3112,12 @@ packages: /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.5 + dev: false + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -3057,6 +3138,10 @@ packages: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} dev: false + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: true + /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -3090,13 +3175,13 @@ packages: strip-final-newline: 2.0.0 dev: true - /execa@6.1.0: - resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 - human-signals: 3.0.1 + human-signals: 4.3.1 is-stream: 3.0.0 merge-stream: 2.0.0 npm-run-path: 5.3.0 @@ -3120,6 +3205,7 @@ packages: /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: true /external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} @@ -3130,11 +3216,6 @@ packages: tmp: 0.0.33 dev: true - /extsprintf@1.3.0: - resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} - engines: {'0': node >=0.6.0} - dev: false - /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -3152,9 +3233,8 @@ packages: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: false - /fast-uri@3.0.3: - resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} - dev: true + /fast-uri@3.0.1: + resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} /fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} @@ -3213,21 +3293,8 @@ packages: optional: true dev: false - /forever-agent@0.6.1: - resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} - dev: false - - /form-data@2.3.3: - resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} - engines: {node: '>= 0.12'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: false - - /form-data@4.0.1: - resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} dependencies: asynckit: 0.4.0 @@ -3316,12 +3383,6 @@ packages: engines: {node: '>=10'} dev: true - /getpass@0.1.7: - resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} - dependencies: - assert-plus: 1.0.0 - dev: false - /git-config-path@1.0.1: resolution: {integrity: sha512-KcJ2dlrrP5DbBnYIZ2nlikALfRhKzNSX0stvv3ImJ+fvC4hXKoV+U+74SV0upg+jlQZbrtQzc0bu6/Zh+7aQbg==} engines: {node: '>=0.10.0'} @@ -3463,20 +3524,6 @@ packages: /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - /har-schema@2.0.0: - resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} - engines: {node: '>=4'} - dev: false - - /har-validator@5.1.5: - resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} - engines: {node: '>=6'} - deprecated: this library is no longer supported - dependencies: - ajv: 6.12.6 - har-schema: 2.0.0 - dev: false - /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} @@ -3522,7 +3569,7 @@ packages: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} dependencies: capital-case: 1.0.4 - tslib: 2.8.0 + tslib: 2.7.0 dev: true /highlight.js@11.10.0: @@ -3559,7 +3606,7 @@ packages: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.36.0 + terser: 5.33.0 dev: true /html-tags@3.3.1: @@ -3571,31 +3618,18 @@ packages: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} dev: true - /http-signature@1.2.0: - resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} - engines: {node: '>=0.8', npm: '>=1.3.7'} - dependencies: - assert-plus: 1.0.0 - jsprim: 1.4.2 - sshpk: 1.18.0 - dev: false - /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} dev: true - /human-signals@3.0.1: - resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} - engines: {node: '>=12.20.0'} + /human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} dev: true - /humps@2.0.1: - resolution: {integrity: sha512-E0eIbrFWUhwfXJmsbdjRQFQPrl5pTEoKlz163j1mTqqUnU9PgR4AgB8AIITzuB3vLBdxZXyZ9TDIrwB2OASz4g==} - dev: false - - /husky@8.0.0: - resolution: {integrity: sha512-4qbE/5dzNDNxFEkX9MNRPKl5+omTXQzdILCUWiqG/lWIAioiM5vln265/l6I2Zx8gpW8l1ukZwGQeCFbBZ6+6w==} + /husky@8.0.3: + resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} engines: {node: '>=14'} hasBin: true dev: true @@ -3627,6 +3661,14 @@ packages: requiresBuild: true optional: true + /immutable-json-patch@6.0.1: + resolution: {integrity: sha512-BHL/cXMjwFZlTOffiWNdY8ZTvNyYLrutCnWxrcKPHr5FqpAb6vsO6WWSPnVSys3+DruFN6lhHJJPHi8uELQL5g==} + dev: false + + /immutable@4.3.7: + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} + dev: false + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -3666,6 +3708,12 @@ packages: /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: true + + /ini@2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + dev: false /inquirer@7.3.3: resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} @@ -3727,12 +3775,6 @@ packages: hasBin: true dev: false - /is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - dev: false - /is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} @@ -3762,14 +3804,6 @@ packages: dependencies: is-extglob: 2.1.1 - /is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true - dependencies: - is-docker: 3.0.0 - dev: false - /is-installed-globally@0.1.0: resolution: {integrity: sha512-ERNhMg+i/XgDwPIPF3u24qpajVreaiSuvpb1Uu0jugw7KKcxGyCX8cgp8P5fwTmAuXku6beDHHECdKArjlg7tw==} engines: {node: '>=4'} @@ -3837,6 +3871,12 @@ packages: engines: {node: '>=0.10.0'} dev: true + /is-reference@3.0.2: + resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} + dependencies: + '@types/estree': 1.0.5 + dev: false + /is-retry-allowed@1.2.0: resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} engines: {node: '>=0.10.0'} @@ -3866,6 +3906,7 @@ packages: /is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + dev: true /is-what@3.14.1: resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} @@ -3877,13 +3918,6 @@ packages: is-docker: 2.2.1 dev: false - /is-wsl@3.1.0: - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} - engines: {node: '>=16'} - dependencies: - is-inside-container: 1.0.0 - dev: false - /is-yarn-global@0.3.0: resolution: {integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==} dev: true @@ -3892,10 +3926,6 @@ packages: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /isstream@0.1.2: - resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} - dev: false - /jake@10.9.2: resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} engines: {node: '>=10'} @@ -3911,7 +3941,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.19.57 + '@types/node': 18.19.50 merge-stream: 2.0.0 supports-color: 8.1.1 dev: false @@ -3920,12 +3950,12 @@ packages: resolution: {integrity: sha512-AZf/soh1hmmwjBZ00fr1emuMEydeReaI6IBTGByQYhTmK1Zd5pQAxC7WLek2snRAn/HHDgJfVz2hjditKThl6Q==} dev: false - /jetlinks-ui-components@1.0.48(vue-router@4.1.6)(vue@3.3.4): - resolution: {integrity: sha512-tAKplLwXLCo/ofbgrLAvOgjZrjdgbMx+rnf+rvK17vjaTV13gWtn/77UNFzCa3kO4TXGn+FVU6qY6wULZO4U/w==} + /jetlinks-ui-components@1.0.49(vue-router@4.4.5)(vue@3.3.4): + resolution: {integrity: sha512-DEZ1K7Wg6mZPev4kw38YXFCQc3okb6VPwqwDAyoOMX+bJHh7ey92xK129E3FxqNsGSDmVSsP5rZHa8fn3d+ySw==} engines: {node: '>=18.14.0'} dependencies: '@vueuse/core': 9.13.0(vue@3.3.4) - '@vueuse/router': 9.13.0(vue-router@4.1.6)(vue@3.3.4) + '@vueuse/router': 9.13.0(vue-router@4.4.5)(vue@3.3.4) colorpicker-v3: 2.10.2 lodash-es: 4.17.21 monaco-editor: 0.40.0 @@ -3936,6 +3966,11 @@ packages: - vue-router dev: false + /jmespath@0.16.0: + resolution: {integrity: sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==} + engines: {node: '>= 0.6.0'} + dev: false + /js-tokens@3.0.2: resolution: {integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==} dev: true @@ -3950,17 +3985,13 @@ packages: argparse: 2.0.1 dev: true - /jsbn@0.1.1: - resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} - dev: false - /jsencrypt@3.3.2: resolution: {integrity: sha512-arQR1R1ESGdAxY7ZheWr12wCaF2yF47v5qpB76TtV64H1pyGudk9Hvw8Y9tb/FiTIaaTRUyaSnm5T/Y53Ghm/A==} dev: false - /jsesc@3.0.2: - resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} - engines: {node: '>=6'} + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} hasBin: true dev: false @@ -3977,14 +4008,9 @@ packages: /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: true - - /json-schema@0.4.0: - resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} - dev: false - /json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + /json-source-map@0.6.1: + resolution: {integrity: sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg==} dev: false /json5@2.2.3: @@ -4011,14 +4037,9 @@ packages: engines: {'0': node >= 0.2.0} dev: true - /jsprim@1.4.2: - resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} - engines: {node: '>=0.6.0'} - dependencies: - assert-plus: 1.0.0 - extsprintf: 1.3.0 - json-schema: 0.4.0 - verror: 1.10.0 + /jsonrepair@3.8.0: + resolution: {integrity: sha512-89lrxpwp+IEcJ6kwglF0HH3Tl17J08JEpYfXnvvjdp4zV4rjSoGu2NdQHxBs7yTOk3ETjTn9du48pBy8iBqj1w==} + hasBin: true dev: false /keyv@3.1.0: @@ -4037,11 +4058,6 @@ packages: engines: {node: '>=6'} dev: true - /klona@2.0.6: - resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} - engines: {node: '>= 8'} - dev: false - /latest-version@3.1.0: resolution: {integrity: sha512-Be1YRHWWlZaSsrz2U+VInk+tO0EwLIyV+23RhWLINJYwg/UIikxjlj3MhH37/6/EDCAusjajvMkMMUXRaMWl/w==} engines: {node: '>=4'} @@ -4056,26 +4072,25 @@ packages: package-json: 6.5.0 dev: true - /less-loader@11.1.0(less@4.1.3)(webpack@5.95.0): - resolution: {integrity: sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==} + /less-loader@11.1.4(less@4.2.0)(webpack@5.94.0): + resolution: {integrity: sha512-6/GrYaB6QcW6Vj+/9ZPgKKs6G10YZai/l/eJ4SLwbzqNTBsAqt5hSLVF47TgsiBxV1P6eAU0GYRH3YRuQU9V3A==} engines: {node: '>= 14.15.0'} peerDependencies: less: ^3.5.0 || ^4.0.0 webpack: ^5.0.0 dependencies: - klona: 2.0.6 - less: 4.1.3 - webpack: 5.95.0 + less: 4.2.0 + webpack: 5.94.0 dev: false - /less@4.1.3: - resolution: {integrity: sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==} + /less@4.2.0: + resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==} engines: {node: '>=6'} hasBin: true dependencies: copy-anything: 2.0.6 parse-node-version: 1.0.1 - tslib: 2.8.0 + tslib: 2.7.0 optionalDependencies: errno: 0.1.8 graceful-fs: 4.2.11 @@ -4100,8 +4115,8 @@ packages: yargs: 14.2.3 dev: true - /lilconfig@2.0.6: - resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} dev: true @@ -4115,24 +4130,21 @@ packages: uc.micro: 2.1.0 dev: false - /lint-staged@13.1.0: - resolution: {integrity: sha512-pn/sR8IrcF/T0vpWLilih8jmVouMlxqXxKuAojmbiGX5n/gDnz+abdPptlj0vYnbfE0SQNl3CY/HwtM0+yfOVQ==} - engines: {node: ^14.13.1 || >=16.0.0} + /lint-staged@13.3.0: + resolution: {integrity: sha512-mPRtrYnipYYv1FEE134ufbWpeggNTo+O/UPzngoaKzbzHAthvR55am+8GfHTnqNRQVRRrYQLGW9ZyUoD7DsBHQ==} + engines: {node: ^16.14.0 || >=18.0.0} hasBin: true dependencies: - cli-truncate: 3.1.0 - colorette: 2.0.20 - commander: 9.5.0 - debug: 4.3.7 - execa: 6.1.0 - lilconfig: 2.0.6 - listr2: 5.0.8 - micromatch: 4.0.8 - normalize-path: 3.0.0 - object-inspect: 1.13.2 + chalk: 5.3.0 + commander: 11.0.0 + debug: 4.3.4 + execa: 7.2.0 + lilconfig: 2.1.0 + listr2: 6.6.1 + micromatch: 4.0.5 pidtree: 0.6.0 string-argv: 0.3.2 - yaml: 2.6.0 + yaml: 2.3.1 transitivePeerDependencies: - enquirer - supports-color @@ -4143,23 +4155,21 @@ packages: engines: {node: '>= 0.4'} dev: true - /listr2@5.0.8: - resolution: {integrity: sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==} - engines: {node: ^14.13.1 || >=16.0.0} + /listr2@6.6.1: + resolution: {integrity: sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==} + engines: {node: '>=16.0.0'} peerDependencies: enquirer: '>= 2.3.0 < 3' peerDependenciesMeta: enquirer: optional: true dependencies: - cli-truncate: 2.1.0 + cli-truncate: 3.1.0 colorette: 2.0.20 - log-update: 4.0.0 - p-map: 4.0.0 + eventemitter3: 5.0.1 + log-update: 5.0.1 rfdc: 1.4.1 - rxjs: 7.8.1 - through: 2.3.8 - wrap-ansi: 7.0.0 + wrap-ansi: 8.1.0 dev: true /loader-runner@4.3.0: @@ -4171,6 +4181,10 @@ packages: resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} + /locate-character@3.0.0: + resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} + dev: false + /locate-path@3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} engines: {node: '>=6'} @@ -4240,14 +4254,15 @@ packages: /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - /log-update@4.0.0: - resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} - engines: {node: '>=10'} + /log-update@5.0.1: + resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - ansi-escapes: 4.3.2 - cli-cursor: 3.1.0 - slice-ansi: 4.0.0 - wrap-ansi: 6.2.0 + ansi-escapes: 5.0.0 + cli-cursor: 4.0.0 + slice-ansi: 5.0.0 + strip-ansi: 7.1.0 + wrap-ansi: 8.1.0 dev: true /longest@2.0.1: @@ -4265,7 +4280,7 @@ packages: /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: - tslib: 2.8.0 + tslib: 2.7.0 dev: true /lowercase-keys@1.0.1: @@ -4310,8 +4325,8 @@ packages: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - /magic-string@0.30.12: - resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} + /magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -4378,8 +4393,8 @@ packages: resolution: {integrity: sha512-WYJ7urf+khJYl3DqofQpYfEYkZKbmXmwxQV8c8mO/hGIhgZ1wOe7R4HLFNwqx7TjILbnC98fuyeSsin19JdFcQ==} dev: false - /markdown-it-highlightjs@4.0.1: - resolution: {integrity: sha512-EPXwFEN6P5nqR3G4KjT20r20xbGYKMMA/360hhSYFmeoGXTE6hsLtJAiB/8ID8slVH4CWHHEL7GX0YenyIstVQ==} + /markdown-it-highlightjs@4.1.0: + resolution: {integrity: sha512-aYcgme5aYn10BHEvLZaCNgwxU2oaAX9inK9dwCv38wJdq7tal5FzZrLdQQY8MR3I1H07S3BKgYGRX2kKuPT+sA==} dependencies: highlight.js: 11.10.0 dev: false @@ -4420,16 +4435,24 @@ packages: uc.micro: 2.1.0 dev: false - /marked@4.2.12: - resolution: {integrity: sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==} + /marked@4.3.0: + resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} engines: {node: '>= 12'} hasBin: true dev: false + /mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + dev: false + /mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} dev: false + /memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + dev: false + /meow@8.1.2: resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} engines: {node: '>=10'} @@ -4454,6 +4477,14 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + dev: true + /micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -4523,6 +4554,13 @@ packages: dependencies: brace-expansion: 2.0.1 + /minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} @@ -4536,12 +4574,12 @@ packages: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true - /mlly@1.7.2: - resolution: {integrity: sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==} + /mlly@1.7.1: + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} dependencies: - acorn: 8.13.0 + acorn: 8.12.1 pathe: 1.1.2 - pkg-types: 1.2.1 + pkg-types: 1.2.0 ufo: 1.5.4 dev: false @@ -4576,11 +4614,11 @@ packages: strip-bom: 4.0.0 validate-npm-package-name: 3.0.0 webpack-merge: 4.2.2 - yaml: 2.6.0 + yaml: 2.5.1 dev: true - /mrm@4.1.13: - resolution: {integrity: sha512-IvMv4fVFfzQ6wUlC4eCl1sCzyMyz+yEjV4sHux7UQRIylJ8iCqFgM9JxpdKA1dPmEuf0s+itFJsp5CHMIpCdMw==} + /mrm@4.1.22: + resolution: {integrity: sha512-qvlUBfl5MU5YR50SJ3imjloqmYLrbX0uVN0cLIpU3lc0aUWPdl30BqJIX4V3Cr5zF4/QikBY7AYh6XWtp1cDJA==} engines: {node: '>=10.13'} hasBin: true dependencies: @@ -4603,11 +4641,15 @@ packages: which: 2.0.2 dev: true + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - /muggle-string@0.1.0: - resolution: {integrity: sha512-Tr1knR3d2mKvvWthlk7202rywKbiOm4rVFLsfAaSIhJ6dt9o47W4S+JMtWhd/PW9Wrdew2/S2fSvhz3E2gkfEg==} + /muggle-string@0.3.1: + resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} dev: true /mute-stream@0.0.8: @@ -4623,6 +4665,10 @@ packages: resolution: {integrity: sha512-NzOgmMQ+elxxHeIha+OG/Pv3Oc3p4RU2aBhwWwAqDpXrdTbtRylbRLQztLy8dMMwfl6pclznBdfUhccEn9ZIzw==} dev: false + /natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: false + /needle@3.3.1: resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} engines: {node: '>= 4.4.x'} @@ -4645,9 +4691,16 @@ packages: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 - tslib: 2.8.0 + tslib: 2.7.0 dev: true + /node-fetch@2.6.6: + resolution: {integrity: sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==} + engines: {node: 4.x || >=6.0.0} + dependencies: + whatwg-url: 5.0.0 + dev: false + /node-html-parser@5.4.2: resolution: {integrity: sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==} dependencies: @@ -4721,96 +4774,15 @@ packages: path-key: 4.0.0 dev: true - /npm@7.24.2: - resolution: {integrity: sha512-120p116CE8VMMZ+hk8IAb1inCPk4Dj3VZw29/n2g6UI77urJKVYb7FZUDW8hY+EBnfsjI/2yrobBgFyzo7YpVQ==} - engines: {node: '>=10'} - hasBin: true - dev: false - bundledDependencies: - - '@isaacs/string-locale-compare' - - '@npmcli/arborist' - - '@npmcli/ci-detect' - - '@npmcli/config' - - '@npmcli/map-workspaces' - - '@npmcli/package-json' - - '@npmcli/run-script' - - abbrev - - ansicolors - - ansistyles - - archy - - cacache - - chalk - - chownr - - cli-columns - - cli-table3 - - columnify - - fastest-levenshtein - - glob - - graceful-fs - - hosted-git-info - - ini - - init-package-json - - is-cidr - - json-parse-even-better-errors - - libnpmaccess - - libnpmdiff - - libnpmexec - - libnpmfund - - libnpmhook - - libnpmorg - - libnpmpack - - libnpmpublish - - libnpmsearch - - libnpmteam - - libnpmversion - - make-fetch-happen - - minipass - - minipass-pipeline - - mkdirp - - mkdirp-infer-owner - - ms - - node-gyp - - nopt - - npm-audit-report - - npm-install-checks - - npm-package-arg - - npm-pick-manifest - - npm-profile - - npm-registry-fetch - - npm-user-validate - - npmlog - - opener - - pacote - - parse-conflict-json - - qrcode-terminal - - read - - read-package-json - - read-package-json-fast - - readdir-scoped-modules - - rimraf - - semver - - ssri - - tar - - text-table - - tiny-relative-date - - treeverse - - validate-npm-package-name - - which - - write-file-atomic - - /nrm@1.2.5: - resolution: {integrity: sha512-QOfdBSDsrSso87Lluacdp7fXqU68c1EcjdKOKsr2SRPGXHWsxr88BNjxxJEwSKHP0cXutgUjJevxPhuYEwobMA==} + /nrm@1.2.6: + resolution: {integrity: sha512-p59wSVciFLTCB0754fNV/IHN6cvuvT4VNTxkSp+DZhhPUQ3QCR4WECd+6X1uTOKDajouX1Z/8FSuvozApH/bAQ==} hasBin: true dependencies: - async: 1.5.2 - commander: 2.20.3 - extend: 3.0.2 - humps: 2.0.1 - ini: 1.3.8 - npm: 7.24.2 - only: 0.0.2 - open: 10.1.0 - request: 2.88.2 + chalk: 4.1.2 + commander: 8.3.0 + ini: 2.0.0 + node-fetch: 2.6.6 + open: 8.4.2 dev: false /nth-check@2.1.1: @@ -4819,15 +4791,6 @@ packages: boolbase: 1.0.0 dev: true - /oauth-sign@0.9.0: - resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} - dev: false - - /object-inspect@1.13.2: - resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} - engines: {node: '>= 0.4'} - dev: true - /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -4847,20 +4810,6 @@ packages: mimic-fn: 4.0.0 dev: true - /only@0.0.2: - resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} - dev: false - - /open@10.1.0: - resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} - engines: {node: '>=18'} - dependencies: - default-browser: 5.2.1 - define-lazy-prop: 3.0.0 - is-inside-container: 1.0.0 - is-wsl: 3.1.0 - dev: false - /open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} @@ -4933,13 +4882,6 @@ packages: p-limit: 3.1.0 dev: true - /p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - dependencies: - aggregate-error: 3.1.0 - dev: true - /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -4969,7 +4911,7 @@ packages: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: dot-case: 3.0.4 - tslib: 2.8.0 + tslib: 2.7.0 dev: true /parent-module@1.0.1: @@ -4999,7 +4941,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.25.7 + '@babel/code-frame': 7.24.7 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -5018,14 +4960,18 @@ packages: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 - tslib: 2.8.0 + tslib: 2.7.0 + dev: true + + /path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} dev: true /path-case@3.0.4: resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} dependencies: dot-case: 3.0.4 - tslib: 2.8.0 + tslib: 2.7.0 dev: true /path-exists@3.0.0: @@ -5076,12 +5022,16 @@ packages: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} dev: false - /performance-now@2.1.0: - resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + /periscopic@3.1.0: + resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + dependencies: + '@types/estree': 1.0.5 + estree-walker: 3.0.3 + is-reference: 3.0.2 dev: false - /picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + /picocolors@1.1.0: + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -5104,12 +5054,12 @@ packages: requiresBuild: true optional: true - /pinia@2.0.28(typescript@4.9.3)(vue@3.3.4): - resolution: {integrity: sha512-YClq9DkqCblq9rlyUual7ezMu/iICWdBtfJrDt4oWU9Zxpijyz7xB2xTwx57DaBQ96UGvvTMORzALr+iO5PVMw==} + /pinia@2.2.2(typescript@4.9.5)(vue@3.3.4): + resolution: {integrity: sha512-ja2XqFWZC36mupU4z1ZzxeTApV7DOw44cV4dhQ9sGwun+N89v/XP7+j7q6TanS1u1tdbK4r+1BUx7heMaIdagA==} peerDependencies: '@vue/composition-api': ^1.4.0 typescript: '>=4.4.4' - vue: ^2.6.14 || ^3.2.0 + vue: ^2.6.14 || ^3.3.0 peerDependenciesMeta: '@vue/composition-api': optional: true @@ -5117,16 +5067,16 @@ packages: optional: true dependencies: '@vue/devtools-api': 6.6.4 - typescript: 4.9.3 + typescript: 4.9.5 vue: 3.3.4 vue-demi: 0.14.10(vue@3.3.4) dev: false - /pkg-types@1.2.1: - resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} + /pkg-types@1.2.0: + resolution: {integrity: sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==} dependencies: - confbox: 0.1.8 - mlly: 1.7.2 + confbox: 0.1.7 + mlly: 1.7.1 pathe: 1.1.2 dev: false @@ -5146,7 +5096,7 @@ packages: engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 - picocolors: 1.1.1 + picocolors: 1.1.0 source-map-js: 1.2.1 /preact@10.12.1: @@ -5163,8 +5113,8 @@ packages: engines: {node: '>=4'} dev: true - /prettier@2.8.1: - resolution: {integrity: sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==} + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} hasBin: true dev: true @@ -5198,10 +5148,6 @@ packages: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: true - /psl@1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - dev: false - /pump@3.0.2: resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} dependencies: @@ -5226,20 +5172,6 @@ packages: escape-goat: 2.1.1 dev: true - /q@1.5.1: - resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} - engines: {node: '>=0.6.0', teleport: '>=0.2.0'} - deprecated: |- - You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. - - (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) - dev: true - - /qs@6.5.3: - resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} - engines: {node: '>=0.6'} - dev: false - /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -5304,6 +5236,11 @@ packages: dependencies: picomatch: 2.3.1 + /readdirp@4.0.1: + resolution: {integrity: sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw==} + engines: {node: '>= 14.16.0'} + dev: false + /readme-badger@0.3.0: resolution: {integrity: sha512-+sMOLSs1imZUISZ2Rhz7qqVd77QtpcAPbGeIraFdgJmijb04YtdlPjGNBvDChTNtLbeQ6JNGQy3pOgslWfaP3g==} dependencies: @@ -5367,33 +5304,6 @@ packages: engines: {node: '>=0.10'} dev: true - /request@2.88.2: - resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} - engines: {node: '>= 6'} - deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 - dependencies: - aws-sign2: 0.7.0 - aws4: 1.13.2 - caseless: 0.12.0 - combined-stream: 1.0.8 - extend: 3.0.2 - forever-agent: 0.6.1 - form-data: 2.3.3 - har-validator: 5.1.5 - http-signature: 1.2.0 - is-typedarray: 1.0.0 - isstream: 0.1.2 - json-stringify-safe: 5.0.1 - mime-types: 2.1.35 - oauth-sign: 0.9.0 - performance-now: 2.1.0 - qs: 6.5.3 - safe-buffer: 5.2.1 - tough-cookie: 2.5.0 - tunnel-agent: 0.6.0 - uuid: 3.4.0 - dev: false - /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -5401,7 +5311,6 @@ packages: /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - dev: true /require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} @@ -5450,6 +5359,14 @@ packages: signal-exit: 3.0.7 dev: true + /restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -5470,8 +5387,8 @@ packages: resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} dev: false - /rollup-plugin-copy@3.4.0: - resolution: {integrity: sha512-rGUmYYsYsceRJRqLVlE9FivJMxJ7X6jDlP79fmFkL8sJs7VVMSVyA2yfyL+PGyO/vJs4A87hwhgVfz61njI+uQ==} + /rollup-plugin-copy@3.5.0: + resolution: {integrity: sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==} engines: {node: '>=8.3'} dependencies: '@types/fs-extra': 8.1.5 @@ -5497,18 +5414,13 @@ packages: yargs: 17.7.2 dev: false - /rollup@3.29.5: - resolution: {integrity: sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==} + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: fsevents: 2.3.3 - /run-applescript@7.0.0: - resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} - engines: {node: '>=18'} - dev: false - /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -5529,7 +5441,8 @@ packages: /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: - tslib: 2.8.0 + tslib: 2.7.0 + dev: false /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} @@ -5537,6 +5450,16 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + /sass@1.79.1: + resolution: {integrity: sha512-+mA7svoNKeL0DiJqZGeR/ZGUu8he4I8o3jyUcOFyo4eBJrwNgIMmAEwCMo/N2Y3wdjOBcRzoNxZIOtrtMX8EXg==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + chokidar: 4.0.0 + immutable: 4.3.7 + source-map-js: 1.2.1 + dev: false + /sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} requiresBuild: true @@ -5609,7 +5532,7 @@ packages: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} dependencies: no-case: 3.0.4 - tslib: 2.8.0 + tslib: 2.7.0 upper-case-first: 2.0.2 dev: true @@ -5664,24 +5587,6 @@ packages: engines: {node: '>=8'} dev: false - /slice-ansi@3.0.0: - resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - dev: true - - /slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - dev: true - /slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} @@ -5701,7 +5606,7 @@ packages: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} dependencies: dot-case: 3.0.4 - tslib: 2.8.0 + tslib: 2.7.0 dev: true /sortablejs@1.15.3: @@ -5769,22 +5674,6 @@ packages: readable-stream: 3.6.2 dev: true - /sshpk@1.18.0: - resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} - engines: {node: '>=0.10.0'} - hasBin: true - dependencies: - asn1: 0.2.6 - assert-plus: 1.0.0 - bcrypt-pbkdf: 1.0.2 - dashdash: 1.14.1 - ecc-jsbn: 0.1.2 - getpass: 0.1.7 - jsbn: 0.1.1 - safer-buffer: 2.1.2 - tweetnacl: 0.14.5 - dev: false - /string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -5899,7 +5788,11 @@ packages: /strip-literal@1.3.0: resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} dependencies: - acorn: 8.13.0 + acorn: 8.12.1 + dev: false + + /style-mod@4.1.2: + resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==} dev: false /supports-color@2.0.0: @@ -5918,7 +5811,6 @@ packages: engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - dev: true /supports-color@8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} @@ -5931,6 +5823,26 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + /svelte@4.2.19: + resolution: {integrity: sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==} + engines: {node: '>=16'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + '@types/estree': 1.0.5 + acorn: 8.12.1 + aria-query: 5.3.1 + axobject-query: 4.1.0 + code-red: 1.0.4 + css-tree: 2.3.1 + estree-walker: 3.0.3 + is-reference: 3.0.2 + locate-character: 3.0.0 + magic-string: 0.30.11 + periscopic: 3.1.0 + dev: false + /svg-tags@1.0.0: resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} dev: false @@ -5952,7 +5864,7 @@ packages: engines: {node: '>=8'} dev: true - /terser-webpack-plugin@5.3.10(webpack@5.95.0): + /terser-webpack-plugin@5.3.10(webpack@5.94.0): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -5972,17 +5884,17 @@ packages: jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 - terser: 5.36.0 - webpack: 5.95.0 + terser: 5.33.0 + webpack: 5.94.0 dev: false - /terser@5.36.0: - resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==} + /terser@5.33.0: + resolution: {integrity: sha512-JuPVaB7s1gdFKPKTelwUyRq5Sid2A3Gko2S0PncwdBq7kN9Ti9HPWDQ06MPsEDGsZeVESjKEnyGy68quBk1w6g==} engines: {node: '>=10'} hasBin: true dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.13.0 + acorn: 8.12.1 commander: 2.20.3 source-map-support: 0.5.21 @@ -6039,12 +5951,8 @@ packages: commander: 2.20.3 dev: false - /tough-cookie@2.5.0: - resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} - engines: {node: '>=0.8'} - dependencies: - psl: 1.9.0 - punycode: 2.3.1 + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: false /trim-newlines@3.0.1: @@ -6052,7 +5960,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node@10.9.2(@types/node@18.14.0)(typescript@4.9.3): + /ts-node@10.9.2(@types/node@18.19.50)(typescript@4.9.5): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -6071,14 +5979,14 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 18.14.0 - acorn: 8.13.0 + '@types/node': 18.19.50 + acorn: 8.12.1 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.9.3 + typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true @@ -6091,18 +5999,8 @@ packages: resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} dev: false - /tslib@2.8.0: - resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} - - /tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - dependencies: - safe-buffer: 5.2.1 - dev: false - - /tweetnacl@0.14.5: - resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} - dev: false + /tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} /type-fest@0.18.1: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} @@ -6124,6 +6022,11 @@ packages: engines: {node: '>=8'} dev: true + /type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + dev: true + /type@2.7.3: resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} dev: false @@ -6134,8 +6037,8 @@ packages: is-typedarray: 1.0.0 dev: true - /typescript@4.9.3: - resolution: {integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==} + /typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true @@ -6149,19 +6052,18 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - dev: false - /unimport@1.3.0: - resolution: {integrity: sha512-fOkrdxglsHd428yegH0wPH/6IfaSdDeMXtdRGn6en/ccyzc2aaoxiUTMrJyc6Bu+xoa18RJRPMfLUHEzjz8atw==} + /unimport@2.2.4: + resolution: {integrity: sha512-qMgmeEGqqrrmEtm0dqxMG37J6xBtrriqxq9hILvDb+e6l2F0yTnJomLoCCp0eghLR7bYGeBsUU5Y0oyiUYhViw==} dependencies: - '@rollup/pluginutils': 5.1.2 + '@rollup/pluginutils': 5.1.0 escape-string-regexp: 5.0.0 fast-glob: 3.3.2 local-pkg: 0.4.3 magic-string: 0.27.0 - mlly: 1.7.2 + mlly: 1.7.1 pathe: 1.1.2 - pkg-types: 1.2.1 + pkg-types: 1.2.0 scule: 1.3.0 strip-literal: 1.3.0 unplugin: 1.14.1 @@ -6205,8 +6107,8 @@ packages: engines: {node: '>= 10.0.0'} dev: true - /unplugin-auto-import@0.12.1(@vueuse/core@9.10.0): - resolution: {integrity: sha512-J/3ZORq5YGKG+8D5vLLOgqaHNK77izlVN07mQ752yRLqBNDbJiwPRSnUwwYqH5N6rDay1SqnJCHaUdbJ9QMI2w==} + /unplugin-auto-import@0.12.2(@vueuse/core@9.13.0): + resolution: {integrity: sha512-hC4w0GZjPjmLtrxV0u10XO350V9eCtQyEyifXr7B9UGD7SvbbIvKuOcHt58Zd4FAqZJXKWoXkpr9mdhBp85Usw==} engines: {node: '>=14'} peerDependencies: '@vueuse/core': '*' @@ -6215,11 +6117,11 @@ packages: optional: true dependencies: '@antfu/utils': 0.7.10 - '@rollup/pluginutils': 5.1.2 - '@vueuse/core': 9.10.0(vue@3.3.4) + '@rollup/pluginutils': 5.1.0 + '@vueuse/core': 9.13.0(vue@3.3.4) local-pkg: 0.4.3 magic-string: 0.27.0 - unimport: 1.3.0 + unimport: 2.2.4 unplugin: 1.14.1 transitivePeerDependencies: - rollup @@ -6237,7 +6139,7 @@ packages: optional: true dependencies: '@antfu/utils': 0.7.10 - '@rollup/pluginutils': 5.1.2 + '@rollup/pluginutils': 5.1.0 chokidar: 3.6.0 debug: 4.3.7 fast-glob: 3.3.2 @@ -6261,7 +6163,7 @@ packages: webpack-sources: optional: true dependencies: - acorn: 8.13.0 + acorn: 8.12.1 webpack-virtual-modules: 0.6.2 /unzip-response@2.0.1: @@ -6269,15 +6171,15 @@ packages: engines: {node: '>=4'} dev: true - /update-browserslist-db@1.1.1(browserslist@4.24.0): - resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + /update-browserslist-db@1.1.0(browserslist@4.23.3): + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.24.0 + browserslist: 4.23.3 escalade: 3.2.0 - picocolors: 1.1.1 + picocolors: 1.1.0 /update-notifier@2.5.0: resolution: {integrity: sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==} @@ -6317,13 +6219,13 @@ packages: /upper-case-first@2.0.2: resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} dependencies: - tslib: 2.8.0 + tslib: 2.7.0 dev: true /upper-case@2.0.2: resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} dependencies: - tslib: 2.8.0 + tslib: 2.7.0 dev: true /uri-js@4.4.1: @@ -6364,12 +6266,6 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /uuid@3.4.0: - resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true - dev: false - /v-clipboard3@0.1.4: resolution: {integrity: sha512-iGIXgluf2WLbT+/Z1de9kKzoK9c9aPpy+zcPlY8/fneO+NHK95QEmFx2Q9LoxeUPRemD+nOfEv1J20Ki7W0v7Q==} dev: false @@ -6391,21 +6287,46 @@ packages: builtins: 1.0.3 dev: true - /vanilla-jsoneditor@0.7.11: - resolution: {integrity: sha512-DFm6Fg6gzP4FlOaydDCRWpqEsmI5umpb9fOV3hKbbNDO1ZHTUpuMwi1SmMyoEsSgdDGGzRLFNCrW0URQ9Skx4w==} + /vanilla-jsoneditor@0.21.6(@lezer/common@1.2.1): + resolution: {integrity: sha512-qKWVW2qXrVazurZ5gZ+Ah7vTkxArUdv6JxlWJJlO3v4K+dowytku4KgfdOEkACpA6HQI2hyHL9GaGnWjwdj4dQ==} + dependencies: + '@codemirror/autocomplete': 6.18.1(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.33.0)(@lezer/common@1.2.1) + '@codemirror/commands': 6.6.2 + '@codemirror/lang-json': 6.0.1 + '@codemirror/language': 6.10.2 + '@codemirror/lint': 6.8.1 + '@codemirror/search': 6.5.6 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.33.0 + '@fortawesome/free-regular-svg-icons': 6.6.0 + '@fortawesome/free-solid-svg-icons': 6.6.0 + '@lezer/highlight': 1.2.1 + '@replit/codemirror-indentation-markers': 6.5.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.33.0) + ajv: 8.17.1 + codemirror-wrapped-line-indent: 1.0.8(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.33.0) + diff-sequences: 29.6.3 + immutable-json-patch: 6.0.1 + jmespath: 0.16.0 + json-source-map: 0.6.1 + jsonrepair: 3.8.0 + lodash-es: 4.17.21 + memoize-one: 6.0.0 + natural-compare-lite: 1.4.0 + sass: 1.79.1 + svelte: 4.2.19 + vanilla-picker: 2.12.3 + transitivePeerDependencies: + - '@lezer/common' dev: false - /verror@1.10.0: - resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} - engines: {'0': node >=0.6.0} + /vanilla-picker@2.12.3: + resolution: {integrity: sha512-qVkT1E7yMbUsB2mmJNFmaXMWE2hF8ffqzMMwe9zdAikd8u2VfnsVY2HQcOUi2F38bgbxzlJBEdS1UUhOXdF9GQ==} dependencies: - assert-plus: 1.0.0 - core-util-is: 1.0.2 - extsprintf: 1.3.0 + '@sphinxxxx/color-conversion': 2.2.2 dev: false - /vite-plugin-html@3.2.0(vite@4.0.0): - resolution: {integrity: sha512-2VLCeDiHmV/BqqNn5h2V+4280KRgQzCFN47cst3WiNK848klESPQnzuC3okH5XHtgwHH/6s1Ho/YV6yIO0pgoQ==} + /vite-plugin-html@3.2.2(vite@4.5.5): + resolution: {integrity: sha512-vb9C9kcdzcIo/Oc3CLZVS03dL5pDlOFuhGlZYDCJ840BhWl/0nGeZWf3Qy7NlOayscY4Cm/QRgULCQkEZige5Q==} peerDependencies: vite: '>=2.0.0' dependencies: @@ -6421,7 +6342,7 @@ packages: html-minifier-terser: 6.1.0 node-html-parser: 5.4.2 pathe: 0.2.0 - vite: 4.0.0(@types/node@18.14.0)(less@4.1.3) + vite: 4.5.5(@types/node@18.19.50)(less@4.2.0) dev: true /vite-plugin-monaco-editor@1.1.0(monaco-editor@0.50.0): @@ -6432,19 +6353,19 @@ packages: monaco-editor: 0.50.0 dev: false - /vite-plugin-progress@0.0.7(vite@4.0.0): + /vite-plugin-progress@0.0.7(vite@4.5.5): resolution: {integrity: sha512-zyvKdcc/X+6hnw3J1HVV1TKrlFKC4Rh8GnDnWG/2qhRXjqytTcM++xZ+SAPnoDsSyWl8O93ymK0wZRgHAoglEQ==} engines: {node: '>=14', pnpm: '>=7.0.0'} peerDependencies: vite: '>2.0.0-0' dependencies: - picocolors: 1.1.1 + picocolors: 1.1.0 progress: 2.0.3 rd: 2.0.1 - vite: 4.0.0(@types/node@18.14.0)(less@4.1.3) + vite: 4.5.5(@types/node@18.19.50)(less@4.2.0) dev: true - /vite-plugin-style-import@2.0.0(vite@4.0.0): + /vite-plugin-style-import@2.0.0(vite@4.5.5): resolution: {integrity: sha512-qtoHQae5dSUQPo/rYz/8p190VU5y19rtBaeV7ryLa/AYAU/e9CG89NrN/3+k7MR8mJy/GPIu91iJ3zk9foUOSA==} peerDependencies: vite: '>=2.0.0' @@ -6456,26 +6377,27 @@ packages: fs-extra: 10.1.0 magic-string: 0.25.9 pathe: 0.2.0 - vite: 4.0.0(@types/node@18.14.0)(less@4.1.3) + vite: 4.5.5(@types/node@18.19.50)(less@4.2.0) dev: true - /vite-plugin-vue-setup-extend@0.4.0(vite@4.0.0): + /vite-plugin-vue-setup-extend@0.4.0(vite@4.5.5): resolution: {integrity: sha512-WMbjPCui75fboFoUTHhdbXzu4Y/bJMv5N9QT9a7do3wNMNHHqrk+Tn2jrSJU0LS5fGl/EG+FEDBYVUeWIkDqXQ==} peerDependencies: vite: '>=2.0.0' dependencies: - '@vue/compiler-sfc': 3.5.12 + '@vue/compiler-sfc': 3.5.6 magic-string: 0.25.9 - vite: 4.0.0(@types/node@18.14.0)(less@4.1.3) + vite: 4.5.5(@types/node@18.19.50)(less@4.2.0) dev: true - /vite@4.0.0(@types/node@18.14.0)(less@4.1.3): - resolution: {integrity: sha512-ynad+4kYs8Jcnn8J7SacS9vAbk7eMy0xWg6E7bAhS1s79TK+D7tVFGXVZ55S7RNLRROU1rxoKlvZ/qjaB41DGA==} + /vite@4.5.5(@types/node@18.19.50)(less@4.2.0): + resolution: {integrity: sha512-ifW3Lb2sMdX+WU91s3R0FyQlAyLxOzCSCP37ujw0+r5POeHPwe6udWVIElKQq8gk3t7b8rkmvqC6IHBpCff4GQ==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: '@types/node': '>= 14' less: '*' + lightningcss: ^1.21.0 sass: '*' stylus: '*' sugarss: '*' @@ -6485,6 +6407,8 @@ packages: optional: true less: optional: true + lightningcss: + optional: true sass: optional: true stylus: @@ -6494,17 +6418,16 @@ packages: terser: optional: true dependencies: - '@types/node': 18.14.0 - esbuild: 0.16.17 - less: 4.1.3 + '@types/node': 18.19.50 + esbuild: 0.18.20 + less: 4.2.0 postcss: 8.4.47 - resolve: 1.22.8 - rollup: 3.29.5 + rollup: 3.29.4 optionalDependencies: fsevents: 2.3.3 - /vue-cropper@1.0.9: - resolution: {integrity: sha512-JhQwxmjqmQohzI7sAp5O/Rfdxuw5HOEYkKjnp/De7iCi6c8Mv6M3N9HpMt9xgWCFchX3/DfXBv2axCZOCg3G8Q==} + /vue-cropper@1.1.4: + resolution: {integrity: sha512-5m98vBsCEI9rbS4JxELxXidtAui3qNyTHLHg67Qbn7g8cg+E6LcnC+hh3SM/p94x6mFh6KRxT1ttnta+wCYqWA==} dev: false /vue-demi@0.14.10(vue@3.3.4): @@ -6522,14 +6445,14 @@ packages: vue: 3.3.4 dev: false - /vue-i18n@9.13.1(vue@3.3.4): - resolution: {integrity: sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==} + /vue-i18n@9.14.0(vue@3.3.4): + resolution: {integrity: sha512-LxmpRuCt2rI8gqU+kxeflRZMQn4D5+4M3oP3PWZdowW/ePJraHqhF7p4CuaME52mUxdw3Mmy2yAUKgfZYgCRjA==} engines: {node: '>= 16'} peerDependencies: vue: ^3.0.0 dependencies: - '@intlify/core-base': 9.13.1 - '@intlify/shared': 9.13.1 + '@intlify/core-base': 9.14.0 + '@intlify/shared': 9.14.0 '@vue/devtools-api': 6.6.4 vue: 3.3.4 dev: false @@ -6543,8 +6466,8 @@ packages: vue: 3.3.4 dev: false - /vue-router@4.1.6(vue@3.3.4): - resolution: {integrity: sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==} + /vue-router@4.4.5(vue@3.3.4): + resolution: {integrity: sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==} peerDependencies: vue: ^3.2.0 dependencies: @@ -6559,15 +6482,16 @@ packages: he: 1.2.0 dev: true - /vue-tsc@1.0.11(typescript@4.9.3): - resolution: {integrity: sha512-lj+6dEroPsE4wmQOPtjCzAf8x363Km5/tuEvMEoQaoRnzs9myBM46FNvCGIIPStYUGuaqF1W1bORmP2KDQEORA==} + /vue-tsc@1.8.27(typescript@4.9.5): + resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} hasBin: true peerDependencies: typescript: '*' dependencies: - '@volar/vue-language-core': 1.0.11 - '@volar/vue-typescript': 1.0.11 - typescript: 4.9.3 + '@volar/typescript': 1.11.1 + '@vue/language-core': 1.8.27(typescript@4.9.5) + semver: 7.6.3 + typescript: 4.9.5 dev: true /vue-types@3.0.2(vue@3.3.4): @@ -6589,11 +6513,15 @@ packages: vue: 3.3.4 dev: false - /vue3-ts-jsoneditor@2.7.1: - resolution: {integrity: sha512-u8dWSG21dK0+iwbY6yhpcyRstQEKbO53+4Ma4Qhf9ED/wbGURjLvX/GTMbVsU7xB4gJKEs1a01AxBIgIab+4uA==} + /vue3-ts-jsoneditor@2.11.2(@lezer/common@1.2.1)(typescript@4.9.5): + resolution: {integrity: sha512-jb4Gt+NmJe8hQJYdfzs9JF+7ZF7Ncgipy6D4g6AqQv7457Yor6zh0PuM+6Ph7UKafkVVIbkg5WMmdB2SOSFDfA==} dependencies: - vanilla-jsoneditor: 0.7.11 - vue: 3.3.4 + immutable-json-patch: 6.0.1 + vanilla-jsoneditor: 0.21.6(@lezer/common@1.2.1) + vue: 3.5.6(typescript@4.9.5) + transitivePeerDependencies: + - '@lezer/common' + - typescript dev: false /vue@3.3.4: @@ -6605,6 +6533,26 @@ packages: '@vue/server-renderer': 3.3.4(vue@3.3.4) '@vue/shared': 3.3.4 + /vue@3.5.6(typescript@4.9.5): + resolution: {integrity: sha512-zv+20E2VIYbcJOzJPUWp03NOGFhMmpCKOfSxVTmCYyYFFko48H9tmuQFzYj7tu4qX1AeXlp9DmhIP89/sSxxhw==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@vue/compiler-dom': 3.5.6 + '@vue/compiler-sfc': 3.5.6 + '@vue/runtime-dom': 3.5.6 + '@vue/server-renderer': 3.5.6(vue@3.5.6) + '@vue/shared': 3.5.6 + typescript: 4.9.5 + dev: false + + /w3c-keyname@2.2.8: + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} + dev: false + /warning@4.0.3: resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} dependencies: @@ -6619,6 +6567,10 @@ packages: graceful-fs: 4.2.11 dev: false + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: false + /webpack-merge@4.2.2: resolution: {integrity: sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==} dependencies: @@ -6633,8 +6585,8 @@ packages: /webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - /webpack@5.95.0: - resolution: {integrity: sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==} + /webpack@5.94.0: + resolution: {integrity: sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -6643,13 +6595,13 @@ packages: webpack-cli: optional: true dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.5 '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/wasm-edit': 1.12.1 '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.13.0 - acorn-import-attributes: 1.9.5(acorn@8.13.0) - browserslist: 4.24.0 + acorn: 8.12.1 + acorn-import-attributes: 1.9.5(acorn@8.12.1) + browserslist: 4.23.3 chrome-trace-event: 1.0.4 enhanced-resolve: 5.17.1 es-module-lexer: 1.5.4 @@ -6663,7 +6615,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.95.0) + terser-webpack-plugin: 5.3.10(webpack@5.94.0) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -6672,6 +6624,13 @@ packages: - uglify-js dev: false + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: false + /which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} dev: true @@ -6714,15 +6673,6 @@ packages: strip-ansi: 5.2.0 dev: true - /wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -6731,6 +6681,15 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: true + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -6761,17 +6720,17 @@ packages: engines: {node: '>=8'} dev: true - /xgplayer-flv@3.0.20-beta.0(core-js@3.38.1)(xgplayer@3.0.19): - resolution: {integrity: sha512-mAeaiEHdSIP7dKrDvoZQKa6pUEz9rq/H7K03Jt+Z0J3DToy+wuHNjO/dzvzGGwuB+kbewVArkkEvcGq0eEbdeA==} + /xgplayer-flv@3.0.20(core-js@3.38.1)(xgplayer@3.0.20): + resolution: {integrity: sha512-iIF3COnIHB0SDmdZ6HRQ+Ve2p2K2acB7rfqsWLVbgGvhjLYFA/PqRS+4AdGQyg+yi87MnX4zsoho/I4M7rByFA==} peerDependencies: core-js: '>=3.12.1' xgplayer: '>=3.0.1' dependencies: core-js: 3.38.1 eventemitter3: 4.0.7 - xgplayer: 3.0.19(core-js@3.38.1) - xgplayer-streaming-shared: 3.0.19(core-js@3.38.1) - xgplayer-transmuxer: 3.0.19(core-js@3.38.1) + xgplayer: 3.0.20(core-js@3.38.1) + xgplayer-streaming-shared: 3.0.20(core-js@3.38.1) + xgplayer-transmuxer: 3.0.20(core-js@3.38.1) dev: false /xgplayer-hls.js@2.2.2: @@ -6781,21 +6740,21 @@ packages: event-emitter: 0.3.5 dev: false - /xgplayer-hls@3.0.19(core-js@3.38.1)(xgplayer@3.0.19): - resolution: {integrity: sha512-xDXx+/OdCPbwwu7+zxdbedJt7UyQqHrOTX6mZrRIMtXs1oexGgCFV3ddZtICPxgINipNLUFpm67nMRDNl5PkFA==} + /xgplayer-hls@3.0.20(core-js@3.38.1)(xgplayer@3.0.20): + resolution: {integrity: sha512-ForAjajjSFb4sFWhjIKPChFsZMnGbrsifUp8W2h8x11HDc3ErDHX4r6xZjeqvZRPppv2OVPX7YAcyVjVYnCbIg==} peerDependencies: core-js: '>=3.12.1' - xgplayer: 3.0.19 + xgplayer: 3.0.20 dependencies: core-js: 3.38.1 eventemitter3: 4.0.7 - xgplayer: 3.0.19(core-js@3.38.1) - xgplayer-streaming-shared: 3.0.19(core-js@3.38.1) - xgplayer-transmuxer: 3.0.19(core-js@3.38.1) + xgplayer: 3.0.20(core-js@3.38.1) + xgplayer-streaming-shared: 3.0.20(core-js@3.38.1) + xgplayer-transmuxer: 3.0.20(core-js@3.38.1) dev: false - /xgplayer-streaming-shared@3.0.19(core-js@3.38.1): - resolution: {integrity: sha512-dZcVDpMGQ9zquBeFnXTqsvZSPvxrxii6CpAk+Zf6aDNnd2s/whOZ043WuRHcG9Tz6GOnqSXnuLW5NRenbEdvrA==} + /xgplayer-streaming-shared@3.0.20(core-js@3.38.1): + resolution: {integrity: sha512-Z7f/ozrEDUtT5g2y7y1wssuzIPpL8YXkq6f5UX6SI0qN+aC2/r5SlKpgCVaQMi3nynWiCjwoag6vJ+uf5HVEYA==} peerDependencies: core-js: '>=3.12.1' dependencies: @@ -6803,8 +6762,8 @@ packages: eventemitter3: 4.0.7 dev: false - /xgplayer-subtitles@3.0.19(core-js@3.38.1): - resolution: {integrity: sha512-e2k1oFq1HSbnnHaK694FREqkFyq65ze4vETTIy8ABkOXItcr9/ugyNIJ4zCjD+jExSAVppM9FAF761X4+wRCeA==} + /xgplayer-subtitles@3.0.20(core-js@3.38.1): + resolution: {integrity: sha512-I1bjsIY+aKOrhYQspLdneOkYg+Vf4cJVGPnDSFnNebnxXl9Mhz5SEpWGzYizMYxL9UvsQ9pgjeEY0o4hkwM+kQ==} peerDependencies: core-js: '>=3.12.1' dependencies: @@ -6812,19 +6771,19 @@ packages: eventemitter3: 4.0.7 dev: false - /xgplayer-transmuxer@3.0.19(core-js@3.38.1): - resolution: {integrity: sha512-nRlpIL/N19TG61fVdhUPdSsRpAi2rXsrPUID8lDHI0FLacDCdaM7cBo902iX1iGE0TUSoJBvkO/6Hps5GsoWhg==} + /xgplayer-transmuxer@3.0.20(core-js@3.38.1): + resolution: {integrity: sha512-WH1XV4ZBnZ5jTdMgz4R63K2ekw61leYzYzey3rjC0WSTMMufvwFQnJ0I1Jx5w7puSZqKwHpNl1a6CUDFlba+5A==} peerDependencies: core-js: '>=3.12.1' dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.25.6 concat-typed-array: 1.0.2 core-js: 3.38.1 crypto-es: 1.2.7 dev: false - /xgplayer@3.0.19(core-js@3.38.1): - resolution: {integrity: sha512-yw4yinU5EtxS5YxOpctCVnHS/WW3tLTYjT+ZHivUYihlaAdudrmBmoOCcRYykGg7xz6PVIi6B79Gn1RBnGAnpg==} + /xgplayer@3.0.20(core-js@3.38.1): + resolution: {integrity: sha512-UNKZJRyODOZGdka83ao8fI18xdhzOV8qG4aNEOOkuOQbXFXfXsJMr/dazRHFP+uXmTqiCXr568euee3ch7CS7g==} peerDependencies: core-js: '>=3.12.1' dependencies: @@ -6833,7 +6792,7 @@ packages: delegate: 3.2.0 downloadjs: 1.4.7 eventemitter3: 4.0.7 - xgplayer-subtitles: 3.0.19(core-js@3.38.1) + xgplayer-subtitles: 3.0.20(core-js@3.38.1) dev: false /y18n@4.0.3: @@ -6856,8 +6815,13 @@ packages: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true - /yaml@2.6.0: - resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==} + /yaml@2.3.1: + resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} + engines: {node: '>= 14'} + dev: true + + /yaml@2.5.1: + resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} engines: {node: '>= 14'} hasBin: true dev: true @@ -6916,8 +6880,8 @@ packages: engines: {node: '>=10'} dev: true - /zrender@5.4.1: - resolution: {integrity: sha512-M4Z05BHWtajY2241EmMPHglDQAJ1UyHQcYsxDNzD9XLSkPDqMq4bB28v9Pb4mvHnVQ0GxyTklZ/69xCFP6RXBA==} + /zrender@5.6.0: + resolution: {integrity: sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==} dependencies: tslib: 2.3.0 dev: false diff --git a/public/images/access/agent-device.png b/public/images/access/agent-device.png new file mode 100644 index 0000000000000000000000000000000000000000..52f23bd7f59de543c5c65c6d67922f6f296c40cc GIT binary patch literal 4455 zcmV-t5t#0YP)Px#1am@3R0s$N2z&@+hyVZ)5lKWrRCt{2oqu#x<(bF7&->mxnMo!I5llm5_!Th0 z*hU4b1iCBjdJcQG+SZz&c-qrtOY5rbq0;WzdRi$S*X_FgXscmWc5S!TUn$kDSl70T za#}#CN{JFfV8K9QfDnXClKFMt_j&dYoNNe5m?SfkD1Oe#Iho9U3q22|{*GbWM_ajwkygQI8%N~xEDKQIS=`j#~%Z~Xzx3@L?@&}cP@$TDj zOnAY|*GUmnbO{KW#5S^3s|37BE8S+vP8HBzK762QqKcldf@|tJf~5Raj&e$2WxvvB zAGi%E<+q+K1IZMt+}ED|x_{qz^mRBUoZ$XqiP26<_MfSZ2p2J=Op%JSLc^0QgGaK_ z*HoBLf|u2G&(m7Z19MordY>@IM$%q{i-dF~fxEPq_r}j}p<|iqYpP5L!OI?wm1*Is z(TW|2FwKVW4CC0n;~facRd7vRN6@G8t`J2565B|mj;Cwi#*m{GrjK_Z92dc<1h8~L zO8Jeoewc{&2&m;`^=#P%m$ zfpAoUYw9|J%E_(PP=ymUfTas#$bqtD3Md&(ARLk44`KjI7ySbvTfFwv&AF{9wM%8A zWB}7Z6^Yts83!Fl%-Fj8!DOU?@Qi{#%=7G6V2e^{nti4~IHcg~{;l_72;WGGo^`Zt z{z&ZU^i}L&=aW$PlQ#u_I&d2`WNVh?BZtF(7-KM6H0(qhI>Dq%A{8p?v3PHPNSwKu#t$s~(M7W4p%@Lw=1b9dh&KqpIAq6uyqQq=c+HEIAers)+ zKrKGovWJ13B9`P37&{dNP*O42_CpFjWv9$BrK$0xXf9)@*=L*Rq*#V37T}O#>`bLy zN`m_iau$mAJe%(-UBOVr#5gK~ol2#iqK-&#lK!HZrIJA(I?<$*pA&YjQhGYSFP4-T zHNtD(Q3*~W%rR1U17eFnYW9agbW*G(o=!qXg-0hg$(RK9b&Aw+(8xr$?~aDzaXoET zmG6~w^kJ+RLymH2j(A*_4zWqnA~;D>v{)&Hrr8V(DLUMN4FVeqci4)8VjWIrKL%s( zE3vfzFn6JUP5<|eA;%$_sT5|4;S=c+n`GzuUqG_=R_x;If+b*wC zfDiy2+3&5)L>~rXJy~i!S(IXQBroh?d5 z>q@XhLA<}W%UcN$2xzqlsReLvvQ7K$XsElB)(Rw~HEpvNm97u3-&u zBh7lUR9LE+PmcC|e~Q&6;&eX%5D+#AS-bbu*lGaq;v5o|YLmcM0fdF6y8Au5A>3gL z#Grr(@C8s9oa9`r6-um4?8(H4J?-2xx%1NwrqSNABN|LZdFrH6XYQ zbcLmw6m6?m9Jn&KP_OFW-bA zuwcr`J0nEg1^`ZuZ9BEK6bcY(`a^Wc>_p|LRsbM{urELe7SR$2zZLJbRv4Tuu}QKj zINV_i*itP3M7m`|q}!hCgpXi7Tgz5&CIvv$GysT2s1lIA_5^ALq@bV}*A90aVVYf7 zqG!g!3>%X+5$qBMXY9m=A*)lw(H3th04PmQ`~0-Z=ciS^9DTb<2s-weB}6KkKUp`p z0jh4^5^IY0;QmuO>!4A9Q1>xe9SzgM?oPTt+9lP=e|LO@qGEk1glENjI2!9^#N#Fk z07{`<1f}o3omk%6#rfGf=d6xkFM(PB$e%3tl~x4$?rAk|i7jPDWp}6Pbo2C0*4VH6 zgX%mHY3c5?f0x{D?&bb_o3}=sOyZM5>iZ#Fcile%af;I~qFgg1n=xyJFw89#;AC z=#4AkE6{Ba+eNVB-St74aDqQJ+g*RO z#cO3oNGY_QJJWqJC!oWml;1L6NuY;e_yv%@Tg0|ZRIy1WoZy0D9WE%=^#kAc6vsh{ z-+_H~Lh=$>?#&P-1FNwh_o-^IAXxV4@$)%0(el`SZjO)Hy|Qjri(bK zlJPLHd0p+o9nX9()c#;VWVz9PBLt&e`?h7;|LH+CJ~eZz@EZ(Ad)JZI6vpIrXqXNfopaV%N#v)G)!xcOK2#(Iv;&*n(ZsNfyXd@r&3$*&wan@u{Z0#H|@~dn?g=b{@YjI z(Xgs`?xHn^nqK<-pP%{uc41Ta`Mch}cGhLr_1(8ywBl!vPb#f^sIa8s@jyXIdr#*( z<%!7g`P+YS(^ZMc@%gdvk*Ue)Ln$$$C8o(?unj=uykiI6xGIz9-Jgt35#hsoruB3l zs7^$V*Dn5M{pC&n^FWh{^?u^TAAb5mwh5!%z$>K}Us-?2HFvgdURS%&deLdWzU_hy z01%io_4eFJrH$dk&C8zsZpH7Fc3QPBukjOq^N;^It?KgtfM|C|xj@MA<%YHEZ#RiZ zL19V7;{*GV41{m}=B_HoAKVL((7~P0Pn&+xXWIsDn{F~Xg0Hx#{*|S7Y`;%wA2~6T zo0D7gO04_H+}xt6e+W*Qu`Llfe#+el?F+P$Qeow|Z6?-zVfb+KG62wSPNQ;iTK&Pv zjWgzdvFneITz_NN;oUdbM5NRvqWJ*e#lj05UvA$hcm4UNRm+Yvz4YyKLKi)jUvmCq z|GQ=V9fJkJbdxc`r(_01V*F0zGv9jtNwKED7bpz(bRMX7{rN9ma?PEsz{&rN+)1U4 z%E@V+cF|S$=HyM@CTt7-|94aPSGT_KA^@CQR{e6`Iny@=C(nF2IAvCI&#{&z{(_R{ z0HEhs%aUk!N4Xd4KBeZn_0g}~;N%3GtFB)2`hsike%U6X_N^EGsY;l9EH;M~W#pmE zj7$;6#2kt1zAG>`acucX?d1S4eZe)~dOxec7yfzom8Z3h_g1&<+*rWI3yE-H+s=)* zvhhO7ar-{b6`%P=^Y&ldbUpx7UA^Y@mmawKYBq^{?aS?9Yx3tTSoXw>OKbYdth+Zo zP~Ow|&hm;SxAgsqK&a}fdk(y@;l9G+IV(f+YdbP^MVQtREQ&N+FQ7=fPQVve+KoB} zB5Xq^+IFq>1q#D$J2$S@Zcd{J7d(H*Wvlz=$N=Evl zMN3R+2wCzI$W51%v@c5YnV)7kRX{>R(;)4yHb zb$Is;g;VG4`Q1IAe(HGJn@c9on7{GLTYtCml56g|)r*`c-MsFL-vNNm{jc6o{+EA$ zYk#>(7OnW%Vz-k#K-lM~Hb$f^sJmKIUI#Mv|* zqzaR;CjFijc?*PN!MwcQf!hrIoZR8o|3=A-7H0Ycm=2uH4}cGbA}4A!k>U6SN;#V> zsfK|W1dzhR;5Bs}LD$K@l&qagKPCIqDl&a}o)$_0+= z*Y|u(F{%WrFx|@_j)d_NObiQGtT2^AsRCFRWf6q7MaJuVX)qp=|Gqb!B#lp_;jHN%^a=RBxxx!Cq)xvt`>bLlNm=Q z1uJr*VvSFHssaKlnzxR1?X~Dc5Mo`Wo(I%{WFX*a}BT z>pZ1s4zWZy+&GZ1Afgvd7@3*-Y6 z;CnP`>N-!O6^kjg*Q)X*L5`Doi-RNtV@h&(jK312c}K;G|gV@j2Pf3`W9) z6$}iXaS(BhSlOYp>V~G-7Tm>I_&$u$GNA=0NoE{m)k0$RV-USe3J;EV0851rgy1AK tbsa&a0$(DlcRY1V?)LHS&qquE{twPi4j(yK%wGTi002ovPDHLkV1lk#w=Mtx literal 0 HcmV?d00001 diff --git a/public/images/access/agent-media.png b/public/images/access/agent-media.png new file mode 100644 index 0000000000000000000000000000000000000000..622f8e54bb2aa5799962c6b81b3a04b96b8e95fd GIT binary patch literal 4508 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 literal 0 HcmV?d00001 diff --git a/public/images/edge/token-error-icon.png b/public/images/edge/token-error-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c06080ccf053ea8acfceb1bc54c518b175898745 GIT binary patch literal 1601 zcmV-H2EO@;P)Px#1am@3R0s$N2z&@+hyVZu>q$gGRA_P z=>V{_v_!2|10c_H+U+(;l8_|Hh?t^Ks3)XpN}lJ0VK^cH2BM|WXaJBTNs%T21(UEF z01wJicU5Z{L2`CPQcz5=){^HrS(X8V7|`$c_w?D{CL#nuP{?U9brSmhKJ9kYq4I3bpom+?H0ZnsOX*DK4E@;sr@ zXb=Pe#+cIN@-9jv;YK}Bb^=uz3EggYltFH6Y?MkwX)(b$N0KBMV@i?AH)3`=P@*Tm zAX&23mT3Y|G6`9hjpTBfm~96NAR!FHQpQe#sc(l$rNZ&!$4B+VNpR1Q00W79l&||| zF@YHgz>EZ7MglM(VYBQkt}G1Ky=j2Aiz;IsH4NANwo%nrx3;!Q&*_VXsxn;ntESm( zp10P%xVE--B$AmTV6COyZey)|vDs{%AJw$3T)FZi&+~rn`+j81^x|c$R@-w0w;ww@ zJM8T2Ol^MW9M;2|wpZ*Tv`IrrOX*pTOW`|8!J@18w-cI5VZwCu3q(ljOqXti2j9jBjj?)_%7`NwJ5 zu^)x$1XcA#WUMzvMI=zw!jg?Us&lKV7sv4@gCIERoI4>RCxC}kbwxz(2krwFfkhFC zy4|h^aI5Vw?31hNHn2H-)>O4EBCEh!1%O3W9|2|dSb8m3a9m1qXu&R2%!ti-;|Nn{zs*3OXWLdVBrs;dYKY_Qb zwU?^Z>Ln5Bj5F7vo}j7~YwZ)xxu-iZ({8t`%$h8J&a860Szf~tOMHemoqD}q>J^%*((Co;^?IzVtc)|n ziO6|XeIX3PzW^9j4YMqJ9(Yq#zrh#;>{f`QC@Pfz7{rDsiU7u~T$|xK-^{Y?c~uR4 zYwb@|_1q*AJLj0Ds=OT-V{pz*GNh`i=d86((lq@DI6lefe!tJg#zx_<+T9FElCZS2 z#BF@L@n0W^CmrScKJ|Ki(qU6YyL=X?k%*fwaWM7Nz9k~x zQPnR|@}=!vf)$ZJtLpE9Ab4FwuHD#p(?ecWPp4`6W#F44at3&KnwH*Wyr-%cfj3n3 zPnAmL@?jk(QaY-7D$n!Jsp=P0^>GHD6F)?`+o!`ItGsNCxhNuk_dM?%5&8GHe{jcg zZ{X`@NP)hH?5JuF*aEsD zvZ1Q$s=6v79~fgka?X7i1i>}nLlL>7;^_YXn&+t0A6z+V00000NkvXXu0mjfR1OjG literal 0 HcmV?d00001 diff --git a/public/images/edge/token-error.jpg b/public/images/edge/token-error.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6b06d9658bc0e86a65ae4af2e02b0cf63db42ce4 GIT binary patch literal 41994 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%0A8Mux%H4;oFUDiHw$71h*|Rw zi^e$&tvBvZowl67uD%fDZcC``^rRHmpSEn`GcFwx;-Y14zB*qxkdyk_s-RzkR%(NU zW$NvRa;~n1Jw>1`zs9=2 zxc_MAG1(%?WjfW@&QZ@}`#8t~XN8G;#W6uG#)AC$qh089_B^((?U&y81msuXx#Y~r zju5{Fbm!GaQ=W1dkSOlIYpU9lgGTnUkaD1-QXodbu~sUspGtf5NL{;Ca5p*hMyMaM zW2Wtn_7t76mZLT1dyD9@P>;BDQA1i=5lSu*xlhLn?g2P44axvYdJAajX@Y`XG zghsrOw@6{Y=JSB~sYSLqVCqF_GeBfeZMLtXQuK6gT^;nSGFSAO?(^Rc`B;9{z~W!$ zY5Rx8|7iA~hy9ZpDz3Wvd$XSYT1+vFL#I5U~@rhii>k&w< sBj$ST|76X7)`g4t5+@%9x)xGuehnMr|B-H7oeY-&RvrTaVgH=^KhrgUYXATM literal 0 HcmV?d00001 diff --git a/public/images/media/agent_doc.png b/public/images/media/agent_doc.png new file mode 100644 index 0000000000000000000000000000000000000000..87712d26c9c27c0b35ef071abbf832a5d7896168 GIT binary patch literal 134053 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 literal 0 HcmV?d00001 diff --git a/src/api/device/instance.ts b/src/api/device/instance.ts index 1f2a5698..66c1474c 100644 --- a/src/api/device/instance.ts +++ b/src/api/device/instance.ts @@ -259,6 +259,38 @@ export const unbindBatchDevice = (deviceId: string, data: Record) = */ export const bindDevice = (deviceId: string, data: Record) => server.post(`/device/gateway/${deviceId}/bind`, data) +/** + * 云端批量禁用设备-云边协同 + * @param gatewayId 网关设备ID + * @param data 云端子设备ID集合 + * @returns + */ +export const _undeployCloud = (gatewayId: string, data: Record,params?:any) => server.post(`/edge/action-sync/${gatewayId}/_undeploy`, data,params) + +/** + * 云端批量启用设备-云边协同 + * @param gatewayId 网关设备ID + * @param data 云端子设备ID集合 + * @returns + */ +export const _deployCloud = (gatewayId: string, data: Record,params?:any) => server.post(`/edge/action-sync/${gatewayId}/_deploy`, data,params) + +/** + * 云端批量解绑设备-云边协同 + * @param gatewayId 网关设备ID + * @param data 云端子设备ID集合 + * @returns + */ +export const _unbindCloud = (gatewayId: string, data: Record,params?:any) => server.post(`/edge/action-sync/${gatewayId}/_unbind`, data,params) + +/** + * 云端批量删除设备-云边协同 + * @param gatewayId 网关设备ID + * @param data 云端子设备ID集合 + * @returns + */ +export const _deleteCloud = (gatewayId: string, data: Record,params?:any) => server.post(`/edge/action-sync/${gatewayId}/_delete`, data,params) + /** * 查询是否存在云端映射设备 @@ -689,3 +721,10 @@ export const uploadAnalyzeMetadata = (productId:string,data: any) => server.post * @param id 设备ID */ export const getDeviceShadow = (id: string) => server.get(`/device/shadow/${id}`) + +/** + * 物模型事件图片地址代理 + */ +export const proxyUrl = (deviceId: string, url: string) => server.get(`/edge/device/${deviceId}/_proxy?url=${url}`, {}, { responseType: 'blob' }) + +export const tagsList = () => server.get('/device-instance/tags/key') diff --git a/src/api/edge-resource/ai-model.ts b/src/api/edge-resource/ai-model.ts new file mode 100644 index 00000000..23c0cb78 --- /dev/null +++ b/src/api/edge-resource/ai-model.ts @@ -0,0 +1,30 @@ +import server from '@/utils/request'; + +/** + * 分页查询AI模型资源 + */ +export const queryPage = (data: any) => server.post('/entity/template/_query', data) + +/** + * 保存AI模型资源 + */ +export const save = (data: any) => server.patch('/entity/template', data); + +/** + * 删除AI模型资源 + * @params id 模型id + */ +export const remove = (id: string) => server.remove(`/entity/template/${id}`); + +/** + * 更新AI模型资源 + * @params id 模型id + * @params data 模型实体 + */ +export const update = (id: string, data: any) => server.put(`/entity/template/${id}`, data); + +/** + * AI模型资源详情 + * @params id 模型id + */ +export const detail = (id: string) => server.get(`/entity/template/${id}`); diff --git a/src/api/edge-resource/index.ts b/src/api/edge-resource/index.ts new file mode 100644 index 00000000..9d386aa5 --- /dev/null +++ b/src/api/edge-resource/index.ts @@ -0,0 +1,81 @@ +import server from '@/utils/request'; + +/** + * 分页查询资源 + */ +export const queryPage = (data: any) => server.post('/entity/template/_query', data) + +/** + * 保存资源 + */ +export const save = (data: any) => server.patch('/entity/template', data); + +/** + * 删除资源 + * @params id 模型id + */ +export const remove = (id: string) => server.remove(`/entity/template/${id}`); + +/** + * 更新资源 + * @params id 模型id + * @params data 模型实体 + */ +export const update = (id: string, data: any) => server.put(`/entity/template/${id}`, data); + +/** + * 资源详情 + * @params id 模型id + */ +export const detail = (id: string) => server.get(`/entity/template/${id}`); +/** + * 创建下发任务 + */ +export const createTask = (data: any) => server.post('/edge/agent-job/_create', data) + +/** + * 下发任务详情列表 + */ +export const queryTaskDetailPage = (data: any) => server.post('/edge/agent-job/detail/_query', data) + +/** + * 下发任务详情记录 + */ +export const queryIssueDetail = (data: any) => server.post('/edge/agent-job/tasks/detail/_query', data) + +/** + * 暂停全部任务 + * @param type 任务类型(resourceIssue-资源下发,remoteUpgrade-远程升级,bindDevice-绑定子设备) + * @param id 任务ID + */ +export const pauseAll = (id: string) => server.post(`/edge/agent-job/${id}/_stop`) + +/** + * 开始任务/重试任务 + * @param type 任务类型(resourceIssue-资源下发,remoteUpgrade-远程升级,bindDevice-绑定子设备) + * @param id 任务ID + * @param data 状态 + */ +export const startTask = (id: string, data: string[]) => server.post(`/edge/agent-job/${id}/_deploy`, data) + +/** + * 重试单个任务 + * @param id 任务ID + * @param data 状态 + */ +export const startTaskOne = (id: string, data: any) => server.post(`/edge/agent-job/tasks/${id}/_deploy`, data) + +/** + * 停止单个任务 + */ +export const stopTaskOne = (id: string, data: any) => server.post(`/edge/agent-job/tasks/${id}/_stop`) + +/** + * 删除单个任务 + */ +export const deleteTaskOne = (taskId: string) => server.remove(`/edge/agent-job/tasks/${taskId}/_delete`) + +/** + * 删除作业 + */ +export const deleteJob = (id: string) => server.remove(`/edge/agent-job/${id}`) \ No newline at end of file diff --git a/src/api/edge/batch.ts b/src/api/edge/batch.ts new file mode 100644 index 00000000..18f5e94a --- /dev/null +++ b/src/api/edge/batch.ts @@ -0,0 +1,127 @@ +import server from '@/utils/request' + +/** + * 访问边端设备列表 + * @param thingId 边缘网关ID + * @param internalId 连接id + * @param data + */ +export const _queryByEdge = (thingId: string,data:any) => server.post(`/edge/device/${thingId}/_/edge/command/QueryBindInfoList/_execute`,data) + +/** + * 绑定子设备命令 + * @param thingId 边缘网关ID + * @param commandId 命令ID{BindMasterDevice:绑定单个,BatchBindDevice:批量绑定,UnbindDevice:解绑} + * @param data + */ +export const _commandByEdge = (thingId: string,commandId:string,data:any) => server.post(`/edge/device/${thingId}/_/edge/command/${commandId}/_execute`,data) + +/** + * 云端调边端详情 + * @param thingId 边缘网关ID + * @param id 设备ID + */ +export const _detailByEdge = (thingId: string,id:string) => server.get(`/edge/device/${thingId}/_/device-instance/${id}/detail`,{}) + +/** + * 云端调边端事件 + * @param thingId 边缘网关ID + * @param id 设备ID + */ +export const getEventListByEdge = (thingId: string,id:string,eventId:string,data:any) => server.post(`/edge/device/${thingId}/_/device-instance/${id}/event/${eventId}?format=true`,data) + +/** + * 云端调边端日志 + * @param thingId 边缘网关ID + * @param id 设备ID + */ +export const queryLogByEdge = (thingId: string,id:string,data:any) => server.post(`/edge/device/${thingId}/_/device-instance/${id}/logs`,data) + +/** + * 创建任务 + * @param data + */ +export const createTask = (data: any) => server.post('/edge/agent-job/_create', data) + +/** + * 查询任务信息 + + * @param data + */ +export const queryTask = (data: any) => server.post('/edge/agent-job/detail/_query', data) + +/** + * 查询任务详情列表 + * @param data + */ +export const queryTaskdDtail = (data: any) => server.post('/edge/agent-job/tasks/detail/_query', data) + +/** + * 全部开始 + * @param data + * @param id + */ +export const startAllTask = (id:string,data: any) => server.post(`/edge/agent-job/${id}/_deploy`, data) +/** + * 全部停止 + * @param data + * @param id + */ +export const stopAllTask = (id:string,data: any) => server.post(`/edge/agent-job/${id}/_stop`, data) +/** + * 全部删除 + * @param data + * @param id + */ +export const deleteAllTask = (id:string) => server.remove(`/edge/agent-job/${id}`) + +/** + * 停止一项 + * @param data + * @param id + */ +export const stopOneTask = (id:string,data: any) => server.post(`/edge/agent-job/tasks/${id}/_stop`, data) +/** + * 开始一项 + * @param data + * @param id + */ +export const startOneTask = (id:string,data: any) => server.post(`/edge/agent-job/tasks/${id}/_deploy`, data) +/** + * 删除一项 + * @param data + * @param id + */ +export const deleteOneTask = (id:string,data: any) => server.remove(`/edge/agent-job/tasks/${id}/_delete`) + +/** + * 任务详情中涉及网关 + * @param data + */ +export const queryDetailGateway = (data: any) => server.post('/device-instance/_query', data) + +/** + * 分页查询网关操作详情 + * @param data + */ +export const queryDetailPlugin = (data: any) => server.post('/batch/device/operation/detail/_query', data) + +/** + * 分页查询批量操作任务详情记录 + * @param data + */ +export const queryDetailHistory = (data: any) => server.post('/batch/operation/history/_query', data) + +/** + * 开始任务 + * @param type + * @param id + */ +export const startTask = (type: string, id:string) => server.post(`/batch/operation/task/${type}/${id}/_start`) + +/** + * + * @param type + * @param id + */ +export const stopTask = (type: string, id:string) => server.post(`/batch/operation/task/${type}/${id}/_stop`) diff --git a/src/api/edge/device.ts b/src/api/edge/device.ts index 62bf77f7..323d044e 100644 --- a/src/api/edge/device.ts +++ b/src/api/edge/device.ts @@ -6,4 +6,9 @@ export const _control = (deviceId: string) => server.get(`/edge/remote/${deviceI export const _stopControl = (deviceId: string) => server.post(`/edge/remote/${deviceId}/stop`) +export const getRemoteProxyUrl = (deviceId: string) => server.post(`/edge/device/${deviceId}/_proxy/_start?timeoutMinute=1440`) + +export const getRemoteToken = (deviceId: string, data) => server.post(`/edge/device/${deviceId}/token`, data) +export const getRemoteSystem = (deviceId: string, data: any) => server.post(`/edge/device/${deviceId}/_/system/config/scopes`, data) + diff --git a/src/api/iot-card/cardManagement.ts b/src/api/iot-card/cardManagement.ts index f44d31e4..0ac3c47d 100644 --- a/src/api/iot-card/cardManagement.ts +++ b/src/api/iot-card/cardManagement.ts @@ -53,7 +53,7 @@ export const unDeployBatch = (data: any) => server.get(`/network/card/_deactivat * 复机已停机物联卡(批量) * @param data */ -export const resumptionBatch = (data: any) => server.get(`/network/card/_resumption/_bitch`, data); +export const resumptionBatch = (data: any) => server.post(`/network/card/_resumption/_bitch`, data); /** * 同步物联卡状态 diff --git a/src/components/BadgeStatus/color.ts b/src/components/BadgeStatus/color.ts index d79c300a..edccd1cc 100644 --- a/src/components/BadgeStatus/color.ts +++ b/src/components/BadgeStatus/color.ts @@ -1,17 +1,21 @@ +import {hexToRGB} from "@/utils/comm"; const color = { - 'processing': '9, 46, 231', - 'error': '229, 0, 18', - 'success': '36, 178, 118', - 'warning': '255, 144, 0', - 'default': '102, 102, 102', + 'processing': '#092EE7', + 'error': '#E50012', + 'success': '#24B276', + 'warning': '#FF9000', + 'default': '#666666', + 'primary': '#1890ff' } export const getHexColor = (code: string, pe: number = 0.1) => { const _color = color[code] || color.default + + const rgb = hexToRGB(_color) if (code === 'default') { pe = 0.1 } - return `rgba(${_color}, ${pe})` + return `rgba(${rgb.join(',')}, ${pe})` } -export default color \ No newline at end of file +export default color diff --git a/src/components/CardBox/index.vue b/src/components/CardBox/index.vue index fa24788a..7f16d9d8 100644 --- a/src/components/CardBox/index.vue +++ b/src/components/CardBox/index.vue @@ -158,12 +158,14 @@ const props = defineProps({ } }); -const getBackgroundColor = (code: string | number) => { - const _color = color[code] || color.default; +const getBackgroundColor = (code: string) => { + const _color1 = getHexColor(code, 0.03); + const _color2 = getHexColor(code, 0); + return `linear-gradient( 188.4deg, - rgba(${_color}, 0.03) 30%, - rgba(${_color}, 0) 80% + ${_color1} 30%, + ${_color2} 80% )`; }; diff --git a/src/components/CheckButton/CheckButton.vue b/src/components/CheckButton/CheckButton.vue index 3746f451..b54d90da 100644 --- a/src/components/CheckButton/CheckButton.vue +++ b/src/components/CheckButton/CheckButton.vue @@ -14,7 +14,9 @@ } " > - {{ item.label }} + + {{ item.label }} + @@ -56,6 +58,9 @@ const props = defineProps({ columns: { type: Number, default: 3 + }, + beforeChange: { + type: Function } }); const emit = defineEmits(['update:value', 'change', 'select']); @@ -81,13 +86,21 @@ const _options = computed(() => { return props.options; }); -const selected = (key: string | number, disabeld: boolean) => { +const selected = async (key: string | number, disabeld: boolean) => { if (disabeld || props.disabled) return; + const pending = await props.beforeChange?.(key) + + if (pending === false) { + return + } + const values = new Set(myValue.value); if (values.has(key)) { - values.delete(key); + if (props.multiple) { + values.delete(key); + } } else { if (!props.multiple) { values.clear(); @@ -126,29 +139,31 @@ watch( \ No newline at end of file + diff --git a/src/components/FRuleEditor/index.vue b/src/components/FRuleEditor/index.vue index 29a444a2..99bf558b 100644 --- a/src/components/FRuleEditor/index.vue +++ b/src/components/FRuleEditor/index.vue @@ -5,6 +5,7 @@ visible width="1300px" title="编辑规则" + centered :destroyOnClose="true" :dialogStyle="{ zIndex: 1072 diff --git a/src/components/GeoComponent/index.vue b/src/components/GeoComponent/index.vue index 9ed714f3..5edeb926 100644 --- a/src/components/GeoComponent/index.vue +++ b/src/components/GeoComponent/index.vue @@ -15,6 +15,7 @@ @cancel="modalVis = false" @ok="handleModalSubmit" destroyOnClose + :zIndex="1031" >

{{errorMap.message}} -
+
@@ -76,7 +77,7 @@ const filedValue = computed(() => { provide(TABLE_FORM_ITEM_ERROR, errorMap) const popContainer = (e) => { - return e + return e } const removeTimer = () => { diff --git a/src/components/Metadata/Table/components/BooleanSelect/index.vue b/src/components/Metadata/Table/components/BooleanSelect/index.vue index 1b24b643..2713e4d2 100644 --- a/src/components/Metadata/Table/components/BooleanSelect/index.vue +++ b/src/components/Metadata/Table/components/BooleanSelect/index.vue @@ -1,5 +1,6 @@ + \ No newline at end of file + diff --git a/src/router/menu.ts b/src/router/menu.ts index 2fe389ea..0173edac 100644 --- a/src/router/menu.ts +++ b/src/router/menu.ts @@ -87,6 +87,13 @@ export default [ }, component: () => import('@/views/oauth/WeChat.vue') }, + { + path: '/edge/token/:id', + meta: { + title: 'token失效' + }, + component: () => import('@/views/edge/TokenJump/index.vue') + }, { path: VideoSharePath, component: () => import('@/views/media/Device/Channel/Share/index.vue') diff --git a/src/store/resource.ts b/src/store/resource.ts new file mode 100644 index 00000000..056b20f1 --- /dev/null +++ b/src/store/resource.ts @@ -0,0 +1,8 @@ +import { defineStore } from "pinia"; + +export const useResourceStore = defineStore('alarm', () => { + const resource = ref({}) + return { + resource + } +}) \ No newline at end of file diff --git a/src/store/system.ts b/src/store/system.ts index b9820b8f..61974519 100644 --- a/src/store/system.ts +++ b/src/store/system.ts @@ -7,8 +7,9 @@ import type { ConfigInfoType } from '@/views/system/Basis/typing'; import { LocalStore } from '@/utils/comm' import { SystemConst } from '@/utils/consts' import { - getTagsColor, + getTagsColor, } from '@/api/system/calendar' +import Config from '../../config/config' type SystemStateType = { isCommunity: boolean; @@ -68,8 +69,8 @@ export const useSystem = defineStore('system', { const res = await settingDetail('front') if (res.success) { const ico: any = document.querySelector('link[rel="icon"]'); - ico.href = res.result.ico; - document.title = res.result.title || ''; + ico.href = res.result.ico || Config.logo; + document.title = res.result.title || Config.title; this.configInfo['front'] = res.result } }, @@ -77,8 +78,8 @@ export const useSystem = defineStore('system', { const _data = this.configInfo['front'] if (_data) { const ico: any = document.querySelector('link[rel="icon"]'); - ico.href = _data.ico; - document.title = _data.title || ''; + ico.href = _data.ico || Config.logo; + document.title = _data.title || Config.title; } }, async getSystemConfig() { diff --git a/src/style/comm.less b/src/style/comm.less new file mode 100644 index 00000000..3ba6d876 --- /dev/null +++ b/src/style/comm.less @@ -0,0 +1,23 @@ +@set: { + 0: #ffffff; + 50: #F8F9FA; + 200: #EFF0F1; + 300: #E4E6E7; + 400: #C3C7CB; + 500: #8D9399; + 600: #646C73; + 900: #1F2429; +} + +each(@set, { + .text-color-@{key} { + color: @value; + } + .bg-color-@{key} { + background-color: @value; + } + .border-color-@{key} { + border-color: @value; + } +}) + diff --git a/src/style/global.less b/src/style/global.less index 8440adb9..7b585dcf 100644 --- a/src/style/global.less +++ b/src/style/global.less @@ -1,2 +1,3 @@ @import "./scrollbar.less"; @import "./modal.less"; +@import "./comm.less"; diff --git a/src/style/variable.less b/src/style/variable.less index f08b2d82..ff6b1305 100644 --- a/src/style/variable.less +++ b/src/style/variable.less @@ -2,12 +2,12 @@ @import 'jetlinks-ui-components/es/style/variable.less'; @import './scrollbar.less'; -.ellipsisFn(@num: 1, @width: 100%) { - display: -webkit-box; - max-width: @width; - overflow: hidden; - /*! autoprefixer: off */ - -webkit-box-orient: vertical; - /*! autoprefixer: on */ - -webkit-line-clamp: @num; -} +@font-gray-900: #1F2429; +@font-gray-600: #646C73; +@font-gray-500: #8D9399; +@font-gray-400: #C3C7CB; +@font-gray-300: #E4E6E7; +@font-gray-200: #EFF0F1; +@font-gray-50: #F8F9FA; +@font-gray-0: #fffff; +@border-base-color: #D9D9D9; diff --git a/src/utils/comm.ts b/src/utils/comm.ts index e8082392..e7f4791c 100644 --- a/src/utils/comm.ts +++ b/src/utils/comm.ts @@ -1,7 +1,8 @@ import type { Slots } from 'vue' -import { TOKEN_KEY } from '@/utils/variable' +import {BASE_API_PATH, TOKEN_KEY} from '@/utils/variable' import { message } from 'jetlinks-ui-components'; import {cloneDeep, isArray} from "lodash-es"; +import {getRemoteProxyUrl, getRemoteSystem, getRemoteToken} from "@/api/edge/device"; /** * 静态图片资源处理 @@ -194,3 +195,73 @@ export const isFullScreen = () => { document.webkitFullScreen || document.msFullScreen) } + +export const hexToRGB = (hex: string) => { + let alpha = false, + h = hex.slice(hex.startsWith("#") ? 1 : 0); + if (h.length === 3) { + h = [...h].map((x) => x + x).join("") + } else if (h.length === 8) { + alpha = true; + } else { + h = parseInt(h, 16); + } + + + return [ + h >>> (alpha ? 24 : 16), + (h & (alpha ? 0x00ff0000 : 0x00ff00)) >>> (alpha ? 16 : 8), + ((h & (alpha ? 0x0000ff00 : 0x0000ff)) >>> (alpha ? 8 : 0)) + ] +} + +export const openEdgeUrl = async (id: string) => { + const resp = await getRemoteToken(id, + { + "expires": 7200000, + "authentication": { + "user": { + "id": "", + "username": "admin", + "name": "超级管理员", + "userType": "admin", + "type": "user" + }, + "permissions": [ + { + "id": "*", + "name": "*", + "actions": [ + "*" + ], + "dataAccesses": [] + } + ], + "dimensions": [ + { + "id": "", + "username": "admin", + "name": "超级管理员", + "userType": "admin", + "type": "user" + } + ], + "attributes": {} + } + }) + + if (resp.success) { + const _location = window.location.origin + window.location.pathname + const system = await getRemoteSystem(id, [ "paths" ]) + const path = system.result[0]?.properties['base-path'] + // const path = 'http://192.168.32.116:5173' + const base64Url = btoa(path) + const proxyUrl = await getRemoteProxyUrl(id) + const fallbackBase64 = btoa(`${_location}#/edge/token/${id}`) + const basePath = BASE_API_PATH?.replace('/', '') || '' + + const url = `${_location}${basePath}/edge/device:${id}/_proxy/${proxyUrl.result}/${fallbackBase64}/${base64Url}/#/?token=${resp.result}&thingId=${id}&terminal=cloud` + + window.open(url) + } +} diff --git a/src/utils/menu.ts b/src/utils/menu.ts index 08f6a06b..c9e97320 100644 --- a/src/utils/menu.ts +++ b/src/utils/menu.ts @@ -151,7 +151,7 @@ const extraRouteObj = { ], }, 'edge/Device': { - children: [{ code: 'Remote', name: '远程控制' }], + children: [{ code: 'Remote', name: '远程访问' }], }, 'rule-engine/Alarm/Log': { children: [{ code: 'Record', name: '处理记录' }] diff --git a/src/utils/websocket.ts b/src/utils/websocket.ts index a23cda1f..106796b7 100644 --- a/src/utils/websocket.ts +++ b/src/utils/websocket.ts @@ -28,7 +28,9 @@ export const initWebSocket = () => { timer = setInterval(heartCheck, 2000) if (tempQueue.length > 0) { for (let i = tempQueue.length - 1; i >= 0; i--) { - ws.send(tempQueue[i].msg) + if (ws.readyState === WebSocket.OPEN) { + ws.send(tempQueue[i].msg) + } } } } @@ -95,7 +97,7 @@ export const getWebSocket = (id: string, topic: string, parameter: Record item.id !== id) - if (thisWs) { + if (thisWs && thisWs.readyState === WebSocket.OPEN) { thisWs.send(unsub) } } diff --git a/src/views/DataCollect/Collector/Point/components/Import/index.vue b/src/views/DataCollect/Collector/Point/components/Import/index.vue index 3f472c52..d8a9fbf8 100644 --- a/src/views/DataCollect/Collector/Point/components/Import/index.vue +++ b/src/views/DataCollect/Collector/Point/components/Import/index.vue @@ -1,5 +1,5 @@ diff --git a/src/views/DataCollect/Collector/Point/components/WritePoint/index.vue b/src/views/DataCollect/Collector/Point/components/WritePoint/index.vue index 7e87842b..17426062 100644 --- a/src/views/DataCollect/Collector/Point/components/WritePoint/index.vue +++ b/src/views/DataCollect/Collector/Point/components/WritePoint/index.vue @@ -325,10 +325,12 @@ const validateHex = async (rule: any, value: any) => { }; const validatorOpc_UA = async (rule: any, value: any) => { - console.log(value); + console.log(value.every((i) => { + return i || i === 0; + })); return value.length && value.every((i) => { - return i; + return i || i === 0; }) ? Promise.resolve() : Promise.reject(`请输入${props.data.name}`); diff --git a/src/views/Northbound/DuerOS/Detail/index.vue b/src/views/Northbound/DuerOS/Detail/index.vue index fd6eb48a..86dd1e66 100644 --- a/src/views/Northbound/DuerOS/Detail/index.vue +++ b/src/views/Northbound/DuerOS/Detail/index.vue @@ -884,9 +884,9 @@ watch( async () => { noData.value = false formRef.value?.resetFields(); + await getProduct(props.data?.id || ':id' as string); + getTypes(); if (props.data?.id) { - await getProduct(props.data?.id as string); - getTypes(); const resp = await detail(props.data?.id as string); const _data: any = resp.result; const _obj = cloneDeep(_data); diff --git a/src/views/Northbound/DuerOS/Tree/index.vue b/src/views/Northbound/DuerOS/Tree/index.vue index 59669484..bcb74f57 100644 --- a/src/views/Northbound/DuerOS/Tree/index.vue +++ b/src/views/Northbound/DuerOS/Tree/index.vue @@ -83,7 +83,7 @@ const selectItem = (data) => { emit('viewData', data); }; const handleAdd = () => { - selectedId.value = ''; + selectedId.value = "" emit('viewData', { type: 'add', }); diff --git a/src/views/device/Firmware/Task/Detail/index.vue b/src/views/device/Firmware/Task/Detail/index.vue index 5cbf586f..5f4f5c1d 100644 --- a/src/views/device/Firmware/Task/Detail/index.vue +++ b/src/views/device/Firmware/Task/Detail/index.vue @@ -114,7 +114,9 @@
diff --git a/src/views/device/Firmware/index.vue b/src/views/device/Firmware/index.vue index 713e546f..8d13ea93 100644 --- a/src/views/device/Firmware/index.vue +++ b/src/views/device/Firmware/index.vue @@ -86,7 +86,7 @@ import type { ActionsType } from '@/components/Table/index'; import { query, queryProduct, remove } from '@/api/device/firmware'; import TaskDrawer from './Task/index.vue'; import dayjs from 'dayjs'; -import _ from 'lodash-es'; +import { map, cloneDeep } from 'lodash-es'; import Save from './Save/index.vue'; import type { FormDataType } from './type'; import { onlyMessage } from '@/utils/comm'; @@ -240,7 +240,7 @@ const handleAdd = () => { visible.value = true; }; const handleEdit = (data: Partial>) => { - current.value = _.cloneDeep(data); + current.value = cloneDeep(data); visible.value = true; }; @@ -273,7 +273,7 @@ onMounted(() => { terms: [{ column: 'state', value: 1 }], // 不传参会报错,暂时查询启用状态的,后期会改查全部 todo }).then((resp: any) => { const list = resp.result.filter((it: any) => { - return _.map(it?.features || [], 'id').includes('supportFirmware'); + return map(it?.features || [], 'id').includes('supportFirmware'); }); productOptions.value = list.map((item: any) => ({ label: item.name, diff --git a/src/views/device/Instance/Detail/Child/Save/index.vue b/src/views/device/Instance/Detail/Child/Save/index.vue new file mode 100644 index 00000000..fdb5455a --- /dev/null +++ b/src/views/device/Instance/Detail/Child/Save/index.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/src/views/device/Instance/Detail/Child/actionModal.vue b/src/views/device/Instance/Detail/Child/actionModal.vue new file mode 100644 index 00000000..84390fdf --- /dev/null +++ b/src/views/device/Instance/Detail/Child/actionModal.vue @@ -0,0 +1,373 @@ + + + + + diff --git a/src/views/device/Instance/Detail/Child/data.ts b/src/views/device/Instance/Detail/Child/data.ts new file mode 100644 index 00000000..259c8534 --- /dev/null +++ b/src/views/device/Instance/Detail/Child/data.ts @@ -0,0 +1,88 @@ + +export const stateMap = new Map(); +stateMap.set('success', { + text: '已映射', + status: 'success', +}); +stateMap.set('error', { + text: '失败', + status: 'error', +}); +stateMap.set('warning', { + text: '待保存', + status: 'warning', +}); +stateMap.set('none', { + text: '未映射', + status: 'default', +}); + +export const statusMap = new Map() +statusMap.set('notActive','warning') +statusMap.set('offline','error') +statusMap.set('online','success') + + +export const columns = [ + + { + title: '平台设备ID', + dataIndex: 'id', + key: 'id', + scopedSlots: true, + search: { + type: 'string', + // defaultTermType: 'eq', + }, + }, + { + title: '平台设备名称', + dataIndex: 'name', + key: 'name', + scopedSlots: true, + search: { + type: 'string', + }, + }, + { + title: '所属产品', + dataIndex: 'productName', + key: 'productName', + scopedSlots: true, + }, + { + title: '注册时间', + dataIndex: 'registryTime', + key: 'registryTime', + scopedSlots: true, + search: { + type: 'string', + }, + }, + + { + title: '说明', + dataIndex: 'describe', + key: 'describe', + scopedSlots: true, + width: 100, + }, + { + title: '状态', + dataIndex: 'state', + key: 'state', + scopedSlots: true, + width: 70, + + }, + { + title: '已映射边端设备', + key: 'action', + fixed: 'right', + width: 200, + scopedSlots: true, + }, +]; + + + diff --git a/src/views/device/Instance/Detail/Child/index.less b/src/views/device/Instance/Detail/Child/index.less new file mode 100644 index 00000000..b280661b --- /dev/null +++ b/src/views/device/Instance/Detail/Child/index.less @@ -0,0 +1,174 @@ +.container { + width: 100%; + .header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 12px; + height: 30px; + .header-action-text { + font-weight: 500; + margin-left: 0.5rem; + margin-right: 1.5rem; + font-weight: 600; + } + .header-action-desc { + color: #8d9399; + } + } + .content { + display: flex; + + // gap: 12px; + .left { + flex: 1 1 0; + min-width: 0; + border: 1px solid #c3c7cb; + // min-height: 50px; + border-radius: 4px; + :deep(.JSearch-warp) { + padding-bottom: 0 !important; + } + .left-header { + background: #f8f9fa; + height: 56px; + line-height: 56px; + border-radius: 4px; + padding-left: 12px; + background: #f8f9fa; + box-sizing: border-box; + border-width: 0px 0px 1px 0px; + border-style: solid; + border-color: #e4e6e7; + display: flex; + justify-content: space-between; + } + .left-list { + min-height: 600px; + .renderId { + display: flex; + } + + .left-drag { + border: 1px solid #eff0f1; + height: 32px; + line-height: 32px; + border-radius: 3px; + color: #a3a3a3; + font-size: 14px; + letter-spacing: 0; + padding-left: 4px; + // text-align: center; + } + .left-map { + height: 32px; + background-color: #f8f9fa; + display: flex; + justify-content: space-between; + align-items: center; + border: 1px solid #eff0f1; + border-radius: 3px; + color: #1a1a1a; + font-size: 14px; + letter-spacing: 0; + padding: 0 8px; + } + + } + .left-state{ + margin-left: 30px + } + .left-bottom { + height: 48px; + line-height: 48px; + padding-left: 12px; + box-sizing: border-box; + /* Gray400 */ + border-width: 1px 0px 0px 0px; + border-style: solid; + border-color: #c3c7cb; + font-size: 12px; + font-weight: normal; + letter-spacing: 0em; + /* Gray600 */ + color: #646c73; + } + } + .fold { + display: flex; + align-items: center; + .fold-item { + position: relative; + width: 20px; + height: 55px; + border-radius: 4px; + border: 1px solid #9e9e9e; + background-color: #fff; + display: flex; + align-items: center; + } + } + .right { + width: 380px; + border-radius: 4px; + border: 1px solid #c3c7cb; + .right-title { + background: #020202; + height: 56px; + line-height: 56px; + border-radius: 4px; + + background: #f8f9fa; + box-sizing: border-box; + /* Gray300 */ + border-width: 0px 0px 1px 0px; + border-style: solid; + border-color: #e4e6e7; + display: flex; + justify-content: space-between; + align-items: center; + padding: 0 12px; + } + .right-list { + padding: 12px; + max-height: 630px; + min-height: 640px; + overflow-y: auto; + .right-item { + height: 80px; + border: 1px solid #eff0f1; + border-radius: 6px; + background-color: #f8f9fa; + margin-bottom: 10px; + padding: 12px; + .item-name { + font-size: 16px; + margin-bottom: 6px; + color: #1f2429; + width: 90%; + } + .item-info { + display: flex; + gap: 16px; + font-size: 14px; + color: #646c73; + span { + max-width: 140px; + } + } + } + } + .right-bottom { + margin-top: 12px; + height: 20px; + line-height: 20px; + padding: 0 12px; + } + } + .right-fold { + // width: 10px; + // border-radius: 4px; + // border: 1px solid #c3c7cb; + } + } +} \ No newline at end of file diff --git a/src/views/device/Instance/Detail/Child/index.vue b/src/views/device/Instance/Detail/Child/index.vue new file mode 100644 index 00000000..602141a9 --- /dev/null +++ b/src/views/device/Instance/Detail/Child/index.vue @@ -0,0 +1,1251 @@ + + + + + diff --git a/src/views/device/Instance/Detail/ChildDevice/BindChildDevice/index.vue b/src/views/device/Instance/Detail/ChildDevice/BindChildDevice/index.vue index 1e6b4dd2..8403c69e 100644 --- a/src/views/device/Instance/Detail/ChildDevice/BindChildDevice/index.vue +++ b/src/views/device/Instance/Detail/ChildDevice/BindChildDevice/index.vue @@ -4,7 +4,7 @@ :maskClosable="false" width="1000px" :visible="true" - title="绑定子设备" + :title="title" okText="确定" cancelText="取消" @ok="handleOk" @@ -24,6 +24,7 @@ :request="query" model="TABLE" :defaultParams="{ + sorts: [{ name: 'createTime', order: 'desc' }], terms: [ { terms: [ @@ -62,8 +63,12 @@ ], }" :rowSelection="{ + // selectedRowKeys: _selectedRowKeys, + // onChange: onSelectChange, selectedRowKeys: _selectedRowKeys, - onChange: onSelectChange, + onSelect: onSelectChange, + onSelectAll: selectAll, + onSelectNone: () => (_selectedRowKeys = []), }" :params="params" > @@ -73,7 +78,7 @@ ? dayjs(slotProps.registryTime).format( 'YYYY-MM-DD HH:mm:ss', ) - : '' + : '--' }} diff --git a/src/views/device/Instance/Detail/Info/components/Tags/Save.vue b/src/views/device/Instance/Detail/Info/components/Tags/Save.vue index 4d875aa6..ed364b2a 100644 --- a/src/views/device/Instance/Detail/Info/components/Tags/Save.vue +++ b/src/views/device/Instance/Detail/Info/components/Tags/Save.vue @@ -87,7 +87,7 @@ const handleOk = async () => { if (dataSource.value.length) { loading.value = true const list = (dataSource.value || []) - .filter((item: any) => item?.key && item?.value) + .filter((item: any) => item?.key && (item?.value !== undefined && item?.value !== null)) .map((i: any) => { const { dataType, ...extra } = i; return { ...extra }; @@ -101,7 +101,7 @@ const handleOk = async () => { onlyMessage('操作成功!'); } } - const _list = (dataSource.value || []).filter((item: any) => item?.key && !item?.value); + const _list = (dataSource.value || []).filter((item: any) => item?.key && (item?.value === undefined || item?.value === null)); if (_list.length) { // 删除值 _list.map(async (item: any) => { diff --git a/src/views/device/Instance/Detail/Info/components/Tags/index.vue b/src/views/device/Instance/Detail/Info/components/Tags/index.vue index 8fc6b195..1b16f9c9 100644 --- a/src/views/device/Instance/Detail/Info/components/Tags/index.vue +++ b/src/views/device/Instance/Detail/Info/components/Tags/index.vue @@ -50,7 +50,20 @@ const saveBtn = () => { const findName = (item: any) => { let name = undefined if (item.dataType) { - const _element = item.dataType.elements?.find((a: any) => a.value === item.value) + let arr = item.dataType?.elements || [] + if(item.dataType?.type === 'boolean'){ + arr = [ + { + text: item.dataType.trueText, + value: item.dataType.trueValue, + }, + { + text: item.dataType.falseText, + value: item.dataType.falseValue, + } + ] + } + const _element = arr?.find((a: any) => a.value === item.value) name = _element?.text } return name || item.value diff --git a/src/views/device/Instance/Detail/Running/Event/ValueRender.vue b/src/views/device/Instance/Detail/Running/Event/ValueRender.vue new file mode 100644 index 00000000..2b31fe9a --- /dev/null +++ b/src/views/device/Instance/Detail/Running/Event/ValueRender.vue @@ -0,0 +1,71 @@ + + + + + \ No newline at end of file diff --git a/src/views/device/Instance/Detail/Running/Event/index.vue b/src/views/device/Instance/Detail/Running/Event/index.vue index aedee051..575632b3 100644 --- a/src/views/device/Instance/Detail/Running/Event/index.vue +++ b/src/views/device/Instance/Detail/Running/Event/index.vue @@ -1,79 +1,81 @@ diff --git a/src/views/device/Instance/Detail/Running/Property/ValueDetail.vue b/src/views/device/Instance/Detail/Running/Property/ValueDetail.vue index 0c8539da..ef3b2b55 100644 --- a/src/views/device/Instance/Detail/Running/Property/ValueDetail.vue +++ b/src/views/device/Instance/Detail/Running/Property/ValueDetail.vue @@ -42,8 +42,7 @@ const _emit = defineEmits(['close']); const handleCancel = () => { _emit('close'); }; - \ No newline at end of file + diff --git a/src/views/device/Instance/Detail/Terminal/index.vue b/src/views/device/Instance/Detail/Terminal/index.vue new file mode 100644 index 00000000..0c1c8526 --- /dev/null +++ b/src/views/device/Instance/Detail/Terminal/index.vue @@ -0,0 +1,123 @@ + + + + + diff --git a/src/views/device/Instance/Detail/Terminal/websocket.ts b/src/views/device/Instance/Detail/Terminal/websocket.ts new file mode 100644 index 00000000..cf0fd536 --- /dev/null +++ b/src/views/device/Instance/Detail/Terminal/websocket.ts @@ -0,0 +1,134 @@ +import { Observable } from 'rxjs' +import { BASE_API_PATH } from '@/utils/variable'; +import { notification } from 'ant-design-vue'; +import { getToken } from '@/utils/comm'; + +let ws: any = null +let count = 0 // 重连计数 +// @ts-ignore +let timer: NodeJS.Timeout = null +let lockReconnect = false // 避免重复连接 +const total = 100 // 重连总次数 +const subs = {} +const timeout = 5000 +const tempQueue: any[] = [] // websocket未连接上时,缓存消息列 + +export const initWebSocket = (id: string) => { + const token = getToken() + if (!token) return + if (ws) { + return ws + } + const url = `${document.location.protocol.replace('http', 'ws')}//${document.location.host}${BASE_API_PATH}/edge/device/${id}/_ws/messaging/${token}?:X_Access_Token=${token}`; + if (count < total) { + count += 1 + ws = new WebSocket(url) + + ws.onopen = () => { + count = 0 + timer = setInterval(heartCheck, 2000) + if (tempQueue.length > 0) { + for (let i = tempQueue.length - 1; i >= 0; i--) { + ws.send(tempQueue[i]) + tempQueue.splice(i, 1) + } + } + } + + ws.onclose = () => { + ws = null + reconnect(id) + } + + ws.onmessage = (msg: Record) => { + const data = JSON.parse(msg.data) + + if (data.type === 'error') { + notification.error({ key: 'error', message: data.message }) + } + + if (subs[data.requestId]) { + if (data.type === 'complete') { + subs[data.requestId].forEach((item: Record) => { + item.complete() + }) + } else if (data.type === 'result') { + subs[data.requestId].forEach((element: Record) => { + element.next(data) + }) + } + } + } + + ws.onerror = () => { + ws = null + reconnect(id) + } + + return ws + } +} + +export const getWebSocket = (id: string, topic: string, parameter: Record, deviceId: string) => new Observable(subscriber => { + if (!subs[id]) { + subs[id] = [] + } + + subs[id].push({ + next(val: Record) { + subscriber.next(val) + }, + complete() { + subscriber.complete() + } + }) + + const msg = JSON.stringify({ id, topic, parameter, type: 'sub' }) + const thisWs = initWebSocket(deviceId) + if (thisWs) { + if (thisWs.readyState === WebSocket.OPEN) { + thisWs.send(msg) + } else { + tempQueue.push(msg) + } + } + + return () => { + const unsub = JSON.stringify({ id, type: 'unsub' }) + delete subs[id] + if (thisWs) { + thisWs.send(unsub) + } + } +}) + +export const closeWs = () => { + if (ws) { + ws.close() + timer && clearInterval(timer) + } +} + +/** + * 重连 + */ +function reconnect(deviceId: string) { + timer && clearInterval(timer) + if (lockReconnect) { + return + } + lockReconnect = true + timer = setTimeout(() => { + initWebSocket(deviceId) + lockReconnect = false + }, timeout * count) +} + +/** + * 心跳检测 + */ +function heartCheck() { + if (ws) { + ws.send(JSON.stringify({ type: 'ping' })) + } +} diff --git a/src/views/device/Instance/Detail/components/EditTable/PatchMapping.vue b/src/views/device/Instance/Detail/components/EditTable/PatchMapping.vue index 1a1cee34..d7a56972 100644 --- a/src/views/device/Instance/Detail/components/EditTable/PatchMapping.vue +++ b/src/views/device/Instance/Detail/components/EditTable/PatchMapping.vue @@ -17,7 +17,7 @@
数据源
- + @@ -102,7 +102,11 @@ const handleData = (data: any[], type: string, provider?: string) => { item.key = item.id; item.title = item.name; item.checkable = type === 'collectors'; - provider ? (item.provider = provider) : ''; + + if (provider) { + item.provider = provider + } + if ( item.collectors && Array.isArray(item.collectors) && @@ -114,8 +118,10 @@ const handleData = (data: any[], type: string, provider?: string) => { item.provider, ); } + if (item.points && Array.isArray(item.points) && item.points.length) { item.children = handleData(item.points, 'points'); + } }); return data as any[]; @@ -194,12 +200,17 @@ const treeFilter = (data: any[], value: any, key: string = 'name'): any[] => { if (!data) return [] return data.filter(item => { - if (item.children && item.children.length) { + if (item[key].includes(value)) { + return true + } + + // 排除点位的搜索 + if (item.children && item.children.length && !item.hasOwnProperty('points')) { item.children = treeFilter(item.children || [], value, key) return !!item.children.length - } else { - return item[key].includes(value) } + + return false }) } diff --git a/src/views/device/Instance/Detail/index.vue b/src/views/device/Instance/Detail/index.vue index 5e8e96bd..d9655738 100644 --- a/src/views/device/Instance/Detail/index.vue +++ b/src/views/device/Instance/Detail/index.vue @@ -1,19 +1,19 @@ diff --git a/src/views/device/Instance/components/TagSearch.vue b/src/views/device/Instance/components/TagSearch.vue index 6257d8df..ad326fb4 100644 --- a/src/views/device/Instance/components/TagSearch.vue +++ b/src/views/device/Instance/components/TagSearch.vue @@ -1,56 +1,274 @@ - - + diff --git a/src/views/device/Instance/index.vue b/src/views/device/Instance/index.vue index 838653ea..f13c4fc4 100644 --- a/src/views/device/Instance/index.vue +++ b/src/views/device/Instance/index.vue @@ -228,10 +228,10 @@ import BadgeStatus from '@/components/BadgeStatus/index.vue'; import BatchDropdown from '@/components/BatchDropdown/index.vue'; import { BatchActionsType } from '@/components/BatchDropdown/types'; import { useRouterParams } from '@/utils/hooks/useParams'; -import { accessConfigTypeFilter } from '@/utils/setting'; import TagSearch from './components/TagSearch.vue'; import { Modal } from 'ant-design-vue'; import { isNoCommunity } from '@/utils/utils'; + const instanceRef = ref>({}); const params = ref>({}); const _selectedRowKeys = ref([]); @@ -410,18 +410,17 @@ const columns = ref([ ], }, }, - - // { - // key: 'id$dev-tag', - // dataIndex: 'id$dev-tag', - // title: '设备标签', - // hideInTable: true, - // search: { - // type: 'component', - // components: TagSearch, - // termOptions: ['eq'], - // }, - // }, + { + key: 'id$dev-tag', + dataIndex: 'id$dev-tag', + title: '标签', + hideInTable: true, + search: { + type: 'component', + components: TagSearch, + termOptions: ['eq', 'not'], + }, + }, { title: '说明', dataIndex: 'describe', @@ -478,7 +477,6 @@ const handleParams = (config: Record) => { if (Object.keys(_terms).length) { const url = new URLSearchParams(); Object.keys(_terms).forEach((key) => { - console.log(_terms[key]); url.append(key, _terms[key]); }); return url.toString(); @@ -829,6 +827,14 @@ const handleSearch = (_params: any) => { // params.value = _params; const newParams = (_params?.terms as any[])?.map((item1) => { item1.terms = item1.terms.map((item2: any) => { + + if (item2.column === 'id$dev-tag') { + return { + terms: item2.value, + type: item2.type + } + } + if (item2.column === 'id$dim-assets') { if (item2.termType === 'not') { const oldValue = JSON.parse(item2.value); @@ -845,7 +851,6 @@ const handleSearch = (_params: any) => { ) ) { const oldTermType = item2.termType === 'nin' ? 'not' : item2.termType; - console.log(item2.termType,'termType') delete item2.termType; return { ...item2, diff --git a/src/views/device/Product/index.vue b/src/views/device/Product/index.vue index 482a1e86..0fce2731 100644 --- a/src/views/device/Product/index.vue +++ b/src/views/device/Product/index.vue @@ -197,6 +197,7 @@ import { useMenuStore } from 'store/menu'; import { useRouterParams } from '@/utils/hooks/useParams'; import { accessConfigTypeFilter } from '@/utils/setting'; import { usePermissionStore } from '@/store/permission'; +import TagSearch from '../Instance/components/TagSearch.vue'; /** * 表格数据 */ @@ -533,6 +534,17 @@ const query = reactive({ ], }, }, + { + key: 'id$dev-instance', + dataIndex: 'id$dev-instance', + title: '标签', + hideInTable: true, + search: { + type: 'component', + components: TagSearch, + termOptions: ['eq', 'not'], + }, + }, { title: '状态', key: 'state', @@ -584,6 +596,15 @@ const handleSearch = (e: any) => { if (newTerms.terms?.length) { newTerms.terms.forEach((a: any) => { a.terms = a.terms.map((b: any) => { + if (b.column === 'id$dev-instance') { + return { + column: 'id$dev-instance', + options: ['productId'], + value: b.value, + type: b.type + } + } + if (b.column === 'id$dim-assets') { const value = b.value; b = { diff --git a/src/views/device/components/Metadata/Base/Base.vue b/src/views/device/components/Metadata/Base/Base.vue index d23613fd..3ed2786c 100644 --- a/src/views/device/components/Metadata/Base/Base.vue +++ b/src/views/device/components/Metadata/Base/Base.vue @@ -110,7 +110,7 @@ - + + \ No newline at end of file diff --git a/src/views/edge/NewResource/Detail/Info/index.vue b/src/views/edge/NewResource/Detail/Info/index.vue new file mode 100644 index 00000000..fde82a18 --- /dev/null +++ b/src/views/edge/NewResource/Detail/Info/index.vue @@ -0,0 +1,78 @@ + + + + + \ No newline at end of file diff --git a/src/views/edge/NewResource/Detail/Record/Card.vue b/src/views/edge/NewResource/Detail/Record/Card.vue new file mode 100644 index 00000000..8b3b61ef --- /dev/null +++ b/src/views/edge/NewResource/Detail/Record/Card.vue @@ -0,0 +1,255 @@ + + + + + diff --git a/src/views/edge/NewResource/Detail/Record/Detail.vue b/src/views/edge/NewResource/Detail/Record/Detail.vue new file mode 100644 index 00000000..f96dc037 --- /dev/null +++ b/src/views/edge/NewResource/Detail/Record/Detail.vue @@ -0,0 +1,467 @@ + + + + + diff --git a/src/views/edge/NewResource/Detail/Record/index.vue b/src/views/edge/NewResource/Detail/Record/index.vue new file mode 100644 index 00000000..6a634337 --- /dev/null +++ b/src/views/edge/NewResource/Detail/Record/index.vue @@ -0,0 +1,88 @@ + + + + + \ No newline at end of file diff --git a/src/views/edge/NewResource/Detail/index.vue b/src/views/edge/NewResource/Detail/index.vue new file mode 100644 index 00000000..91f50310 --- /dev/null +++ b/src/views/edge/NewResource/Detail/index.vue @@ -0,0 +1,76 @@ + + + + + \ No newline at end of file diff --git a/src/views/edge/NewResource/Issue/GatewayDevice.vue b/src/views/edge/NewResource/Issue/GatewayDevice.vue new file mode 100644 index 00000000..ca5928fc --- /dev/null +++ b/src/views/edge/NewResource/Issue/GatewayDevice.vue @@ -0,0 +1,298 @@ + + + + + \ No newline at end of file diff --git a/src/views/edge/NewResource/Issue/index.vue b/src/views/edge/NewResource/Issue/index.vue new file mode 100644 index 00000000..6b3ae6c4 --- /dev/null +++ b/src/views/edge/NewResource/Issue/index.vue @@ -0,0 +1,152 @@ + + + + + \ No newline at end of file diff --git a/src/views/edge/NewResource/Save/FileSelect.vue b/src/views/edge/NewResource/Save/FileSelect.vue new file mode 100644 index 00000000..7b1291a4 --- /dev/null +++ b/src/views/edge/NewResource/Save/FileSelect.vue @@ -0,0 +1,71 @@ + + + + + \ No newline at end of file diff --git a/src/views/edge/NewResource/Save/UploadFile.vue b/src/views/edge/NewResource/Save/UploadFile.vue new file mode 100644 index 00000000..0418037b --- /dev/null +++ b/src/views/edge/NewResource/Save/UploadFile.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/src/views/edge/NewResource/Save/index.vue b/src/views/edge/NewResource/Save/index.vue new file mode 100644 index 00000000..23248b0a --- /dev/null +++ b/src/views/edge/NewResource/Save/index.vue @@ -0,0 +1,267 @@ + + + + + \ No newline at end of file diff --git a/src/views/edge/NewResource/index.vue b/src/views/edge/NewResource/index.vue new file mode 100644 index 00000000..00df3d2f --- /dev/null +++ b/src/views/edge/NewResource/index.vue @@ -0,0 +1,333 @@ + + + + + \ No newline at end of file diff --git a/src/views/edge/NewResource/utils.ts b/src/views/edge/NewResource/utils.ts new file mode 100644 index 00000000..4215570e --- /dev/null +++ b/src/views/edge/NewResource/utils.ts @@ -0,0 +1,26 @@ +export const TargetTypeOptions = [ + { + label: 'AI模型', + value: 'AiModel' + }, + { + label: '插件', + value: 'PluginDriver' + }, + { + label: '采集器模板', + value: 'entityTemplate:Collector' + } +] + +export const ServiceIdEnum = { + 'AiModel': 'aiService:modelManager', + 'PluginDriver': 'pluginService:driver', + 'entityTemplate:Collector': 'commonService:entityTemplate' +} + +export const JobTypeEnum = { + 'AiModel': 'AiModel', + 'PluginDriver': 'plugin', + 'entityTemplate:Collector': 'CollectorTemplate' +} \ No newline at end of file diff --git a/src/views/edge/TokenJump/index.vue b/src/views/edge/TokenJump/index.vue new file mode 100644 index 00000000..0d785dd7 --- /dev/null +++ b/src/views/edge/TokenJump/index.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/src/views/init-home/data/baseMenu.ts b/src/views/init-home/data/baseMenu.ts index 6eb5c091..c5d83d6b 100644 --- a/src/views/init-home/data/baseMenu.ts +++ b/src/views/init-home/data/baseMenu.ts @@ -631,7 +631,7 @@ export default [ actions: ['save', 'delete'], }, { - permission: 'edge-operations', + permission: 'edge-manager', actions: ['invoke'], }, { @@ -750,6 +750,8 @@ export default [ permission: 'dashboard', actions: ['query'], }, + {permission: "edge-action-sync", actions: ["save", "delete"]}, + {permission: "edge-manager", actions: ["proxy", "proxy_request"]} ], }, { @@ -810,6 +812,16 @@ export default [ }, ], }, + { + id: 'remote', + name: '远程访问', + permissions: [ + { + permission: 'edge-manager', + actions: ['remote', 'proxy'], + }, + ], + }, ], }, { @@ -2597,7 +2609,7 @@ export default [ name: '边缘网关', owner: 'iot', id: 'cc29671ed5ef8d6df951b2fc523f36ca', - sortIndex: 8, + sortIndex: 9, url: '/iot/edge', icon: 'icon-bianyuanwangguan', permissions: [], @@ -2611,7 +2623,7 @@ export default [ sortIndex: 1, url: '/iot/edge/Device', icon: 'icon-bumenguanli', - showPage: ['edge-operations'], + showPage: ['edge-manager'], permissions: [ { permission: 'device-product', @@ -2689,15 +2701,11 @@ export default [ }, { id: 'setting', - name: '远程控制', + name: '远程访问', permissions: [ { - permission: 'device-instance', - actions: ['save'], - }, - { - permission: 'edge-operations', - actions: ['remote'], + permission: 'edge-manager', + actions: ['remote', 'proxy'], }, ], }, @@ -2706,7 +2714,7 @@ export default [ name: '重置密码', permissions: [ { - permission: 'edge-operations', + permission: 'edge-manager', actions: ['invoke'], }, ], @@ -2717,85 +2725,674 @@ export default [ indirectMenus: ['1b136e7e4e4e74bb24b91802e4cfcd2d'] }, { - code: 'edge/Resource', - name: '资源库', - owner: 'iot', - id: '7f49fcece2b291aa595a0ace3ea43ca1', - sortIndex: 2, - url: '/iot/edge/Resource', - icon: 'icon-Vector', - showPage: ['edge-operations'], + "id": "aa30a56878065635574bb62dd4f894e6", + "path": "yci3-B2Qf-m3oA", + "sortIndex": 2, + "level": 3, + "owner": "iot", + "name": "资源库", + "code": "edge/NewResource", + "icon": "SlidersOutlined", + "url": "/iot/edge/new-resource", + "describe": "", + showPage: ['edge-manager'], permissions: [ { - permission: 'entity-template', - actions: ['query'], - }, + "permission": "entity-template", + "actions": [ + "query" + ] + } ], - buttons: [ + "buttons": [ { - id: 'view', - name: '查看', - permissions: [ + "id": "add", + "name": "新增", + "description": "", + "enabled": false, + "granted": true, + "permissions": [ { - permission: 'entity-template', - actions: ['query'], - }, - ], + "permission": "entity-template", + "actions": [ + "query", + "save" + ] + } + ] }, { - id: 'action', - name: '启/禁用', - permissions: [ + "id": "delete", + "name": "删除", + "description": "", + "enabled": false, + "granted": true, + "permissions":[ { - permission: 'entity-template', - actions: ['enable', 'disable'], - }, - ], + "permission": "entity-template", + "actions": [ + "query", + "save", + "delete" + ] + } + ] }, { - id: 'delete', - name: '删除', - permissions: [ + "id": "update", + "name": "编辑", + "description": "", + "enabled": false, + "granted": true, + "permissions": [ { - permission: 'entity-template', - actions: ['delete'], - }, - ], + "permission": "entity-template", + "actions": [ + "query", + "save" + ] + } + ] }, { - id: 'update', - name: '编辑', - permissions: [ + "id": "issue", + "name": "下发", + "description": "", + "enabled": false, + "granted": true, + "permissions": [ { - permission: 'entity-template', - actions: ['save'], - }, - ], + "permission": "entity-template", + "actions": [ + "query", + "save" + ] + } + ] }, { - id: 'setting', - name: '下发', - permissions: [ - { - permission: 'device-instance', - actions: ['query'], - }, - { - permission: 'edge-operations', - actions: ['invoke'], - }, + "id": "action", + "name": "启/禁用", + "description": "", + "enabled": false, + "granted": true, + "permissions": [ { - permission: 'entity-template', - actions: ['query'], - }, - ], + "permission": "entity-template", + "actions": [ + "enable", + "disable" + ] + } + ] + } + ], + "accessSupport": { + "text": "不支持", + "value": "unsupported" + }, + "indirectMenus": [], + "assetAccesses": [], + "options": { + "show": true + }, + "createTime": 1730966464081, + "granted": true + }, + { + code: 'edge/Batch', + name: '批量操作', + owner: 'iot', + id: '7f49fce112b291aa59321ace3ea43ca1', + sortIndex: 3, + url: '/iot/edge/batch', + icon: 'icon-caidanguanli1', + showPage: ['edge-manager'], + permissions: [ + { + "permission": "device-product", + "actions": [ + "query" + ] + }, + { + "permission": "device-instance", + "actions": [ + "query" + ] + }, + { + "permission": "agent-job", + "actions": [ + "query", + "save", + "delete" + ] + }, + { + "permission": "batch-operation-task", + "actions": [ + "query", + "save", + "delete", + "deploy" + ] }, + { + "permission": "batch-operation-history", + "actions": [ + "query", + "save", + "delete" + ] + }, + { + "permission": "batch-dev-operation-detail", + "actions": [ + "query", + "save", + "delete" + ] + } + ], + buttons: [ + ], accessSupport: { text: "不支持", value: "unsupported" }, supportDataAccess: false }, ], }, + { + "id": "3e5a9473e284803134b3f63c086d7385", + "parentId": "9c21f88182e7cc75cbdfa8e4b7844272", + "path": "gNTl-bFuY", + "sortIndex": 10, + "level": 2, + "owner": "iot", + "name": "数据采集", + "code": "DataCollect", + "url": "/iot/link/DataCollect", + "icon": "icon-analytics", + "status": 1, + "permissions": [], + "options": { + "show": true + }, + "children": [ + { + "id": "802c1d835cd9f687ffb2092b593fb1b8", + "path": "gNTl-bFuY-h6Ol", + "sortIndex": 1, + "level": 3, + "owner": "iot", + "name": "仪表盘", + "code": "DataCollect/Dashboard", + "url": "/iot/DataCollect/Dashboard", + "icon": "icon-keshihua", + "status": 1, + showPage: ['data-collect-channel', 'data-collector'], + "permissions": [ + { + "permission": "dashboard", + "actions": [ + "query" + ] + }, + { + "permission": "data-collect-channel", + "actions": [ + "query" + ] + }, + { + "permission": "data-collect-opc", + "actions": [ + "query" + ] + }, + { + "permission": "data-collector", + "actions": [ + "query" + ] + }, + { + "permission": "things-collector", + "actions": [ + "query" + ] + } + ], + "accessSupport": { + "text": "不支持", + "value": "unsupported" + }, + "buttons": [], + "options": { + "show": true + }, + "supportDataAccess": false + }, + { + "id": "e867ee3d31a7b963d38f40a3b51d0191", + "path": "gNTl-bFuY-wkGG", + "sortIndex": 2, + "level": 3, + "owner": "iot", + "name": "通道管理", + "code": "DataCollect/Channel", + "url": "/iot/DataCollect/Channel", + "icon": "icon-rizhifuwu", + "status": 1, + "permissions": [], + "accessSupport": { + "text": "支持", + "value": "support" + }, + showPage: ['data-collect-channel'], + "assetType": "dataCollectChannel", + "buttons": [ + { + "id": "view", + "name": "查看", + "permissions": [ + { + "permission": "data-collect-channel", + "actions": [ + "query" + ] + }, + { + "permission": "data-collector", + "actions": [ + "query" + ] + }, + { + "permission": "data-collect-opc", + "actions": [ + "query" + ] + }, + { + "permission": "things-collector", + "actions": [ + "query" + ] + } + ] + }, + { + "id": "add", + "name": "新增", + "permissions": [ + { + "permission": "data-collect-channel", + "actions": [ + "query", + "save" + ] + }, + { + "permission": "data-collector", + "actions": [ + "query", + "save" + ] + }, + { + "permission": "data-collect-opc", + "actions": [ + "query", + "save" + ] + }, + { + "permission": "things-collector", + "actions": [ + "query", + "save" + ] + } + ] + }, + { + "id": "update", + "name": "编辑", + "permissions": [ + { + "permission": "data-collect-channel", + "actions": [ + "query", + "save" + ] + }, + { + "permission": "data-collector", + "actions": [ + "query", + "save" + ] + }, + { + "permission": "data-collect-opc", + "actions": [ + "query", + "save" + ] + }, + { + "permission": "things-collector", + "actions": [ + "query", + "save" + ] + }, + { + "permission": "certificate", + "actions": [ + "query" + ] + } + ] + }, + { + "id": "action", + "name": "禁用/启用", + "permissions": [ + { + "permission": "data-collect-channel", + "actions": [ + "query", + "save" + ] + }, + { + "permission": "data-collector", + "actions": [ + "query", + "save" + ] + }, + { + "permission": "data-collect-opc", + "actions": [ + "query", + "save" + ] + }, + { + "permission": "things-collector", + "actions": [ + "query", + "save" + ] + } + ] + }, + { + "id": "delete", + "name": "删除", + "permissions": [ + { + "permission": "data-collect-channel", + "actions": [ + "query", + "delete" + ] + }, + { + "permission": "data-collector", + "actions": [ + "query", + "delete" + ] + }, + { + "permission": "data-collect-opc", + "actions": [ + "query", + "delete" + ] + }, + { + "permission": "things-collector", + "actions": [ + "query", + "delete" + ] + } + ] + } + ], + "options": { + "show": true + }, + "supportDataAccess": true + }, + { + "id": "f97141d2737ebc3e3ab2cda4a38e8c79", + "path": "gNTl-bFuY-CHGw", + "sortIndex": 3, + "level": 3, + "owner": "iot", + "name": "采集器", + "code": "DataCollect/Collector", + "url": "/iot/DataCollect/Collector", + "icon": "icon-yingyongguanli", + "status": 1, + "permissions": [], + "accessSupport": { + "text": "支持", + "value": "support" + }, + "assetType": "dataCollectCollector", + showPage: ['data-collect-channel', 'data-collector'], + "buttons": [ + { + "id": "view", + "name": "查看", + "permissions": [ + { + "permission": "data-collect-channel", + "actions": [ + "query" + ] + }, + { + "permission": "data-collector", + "actions": [ + "query" + ] + }, + { + "permission": "data-collect-opc", + "actions": [ + "query" + ] + }, + { + "permission": "things-collector", + "actions": [ + "query" + ] + }, + { + "permission": "s7-client", + "actions": [ + "query" + ] + } + ] + }, + { + "id": "add", + "name": "新增", + "permissions": [ + { + "permission": "data-collect-channel", + "actions": [ + "query", + "save" + ] + }, + { + "permission": "data-collector", + "actions": [ + "query", + "save" + ] + }, + { + "permission": "data-collect-opc", + "actions": [ + "query", + "save" + ] + }, + { + "permission": "things-collector", + "actions": [ + "query", + "save" + ] + }, + { + "permission": "s7-client", + "actions": [ + "query" + ] + } + ] + }, + { + "id": "update", + "name": "编辑", + "permissions": [ + { + "permission": "data-collect-channel", + "actions": [ + "query", + "save" + ] + }, + { + "permission": "data-collector", + "actions": [ + "query", + "save" + ] + }, + { + "permission": "data-collect-opc", + "actions": [ + "query", + "save" + ] + }, + { + "permission": "things-collector", + "actions": [ + "query", + "save" + ] + }, + { + "permission": "certificate", + "actions": [ + "query" + ] + }, + { + "permission": "s7-client", + "actions": [ + "query" + ] + } + ] + }, + { + "id": "action", + "name": "禁用/启用", + "permissions": [ + { + "permission": "data-collect-channel", + "actions": [ + "query", + "save" + ] + }, + { + "permission": "data-collector", + "actions": [ + "query", + "save" + ] + }, + { + "permission": "data-collect-opc", + "actions": [ + "query", + "save" + ] + }, + { + "permission": "things-collector", + "actions": [ + "query", + "save" + ] + }, + { + "permission": "s7-client", + "actions": [] + } + ] + }, + { + "id": "delete", + "name": "删除", + "permissions": [ + { + "permission": "data-collect-channel", + "actions": [ + "query", + "delete" + ] + }, + { + "permission": "data-collector", + "actions": [ + "query", + "delete" + ] + }, + { + "permission": "data-collect-opc", + "actions": [ + "query", + "delete" + ] + }, + { + "permission": "things-collector", + "actions": [ + "query", + "delete" + ] + } + ] + } + ], + "options": { + "show": true + }, + "supportDataAccess": true + } + ], + "supportDataAccess": false + } ], }, diff --git a/src/views/link/AccessConfig/Detail/index.vue b/src/views/link/AccessConfig/Detail/index.vue index 2aa48d19..768357b9 100644 --- a/src/views/link/AccessConfig/Detail/index.vue +++ b/src/views/link/AccessConfig/Detail/index.vue @@ -115,6 +115,8 @@ const TypeMap = new Map([ ['official-edge-gateway', 'edge'], ['edge-child-device', 'edge'], ['network', 'network'], + ['agent-device-gateway','network'], + ['agent-media-device-gateway','network'] ]); // DataMap后期优化 const DataMap = new Map(); @@ -130,6 +132,8 @@ DataMap.set('opc-ua', { type: 'channel', title: '通道类设备接入' }); DataMap.set('official-edge-gateway', { type: 'edge', title: '官方接入' }); DataMap.set('edge-child-device', { type: 'edge', title: '官方接入' }); DataMap.set('network', { type: 'network', title: '自定义设备接入' }); +DataMap.set('agent-device-gateway',{ type:'network', title:'Agent代理接入'}) +DataMap.set('agent-media-device-gateway',{ type:'network', title:'Agent代理接入'}) const getTypeList = (result: Record) => { const list = []; @@ -138,8 +142,9 @@ const getTypeList = (result: Record) => { const cloud: any[] = []; const channel: any[] = []; const edge: any[] = []; + const agent: any[] = []; result - .filter((i:any) => { + .filter((i: any) => { return i.id !== 'OneNet'; }) .forEach((item: any) => { @@ -169,6 +174,12 @@ const getTypeList = (result: Record) => { ) { item.type = 'edge'; edge.push(item); + } else if ( + item.id === 'agent-device-gateway' || + item.id === 'agent-media-device-gateway' + ) { + item.type = 'network'; + agent.push(item); } else { item.type = 'network'; network.push(item); @@ -200,7 +211,10 @@ const getTypeList = (result: Record) => { list: [...edge], title: '官方接入', }); - + agent.length && list.push({ + list: [...agent], + title: 'Agent代理接入' + }) return list; }; diff --git a/src/views/link/AccessConfig/Outline/components/FirstKind.vue b/src/views/link/AccessConfig/Outline/components/FirstKind.vue index 12997cae..47d6c218 100644 --- a/src/views/link/AccessConfig/Outline/components/FirstKind.vue +++ b/src/views/link/AccessConfig/Outline/components/FirstKind.vue @@ -31,39 +31,53 @@
- - - - - - -
- - -
diff --git a/src/views/link/AccessConfig/Outline/index.vue b/src/views/link/AccessConfig/Outline/index.vue index 1164d156..1a1a93cb 100644 --- a/src/views/link/AccessConfig/Outline/index.vue +++ b/src/views/link/AccessConfig/Outline/index.vue @@ -27,6 +27,8 @@ 'coap-server-gateway', 'tcp-server-gateway', 'udp-device-gateway', + 'agent-device-gateway', + 'agent-media-device-gateway', ].includes(data.provider) " :data="data" @@ -36,7 +38,9 @@ :data="data" /> {{ provider.description }}

-

消息协议

-

- {{ - procotolList.find( - (i: any) => - i.id === procotolCurrent, - ).name - }} -

-

- -

-
+

网络组件

-
-

+

@@ -358,10 +367,14 @@ const id = route.params.id as string; const formRef = ref(); const useForm = Form.useForm; - +const isAgent = ['agent-device-gateway', 'agent-media-device-gateway'].includes( + props.provider.id, +); const current = ref(0); const stepCurrent = ref(0); -const steps = ref(['网络组件', '消息协议', '完成']); +const steps = computed(() => { + return !isAgent ? ['网络组件', '消息协议', '完成'] : ['网络组件', '完成']; +}); const networkList: any = ref([]); const allNetworkList: any = ref([]); const procotolList: any = ref([]); @@ -449,16 +462,14 @@ const addProcotol = () => { }; }; -const getNetworkCurrent = () => - networkList.value.find((i: any) => i.id === networkCurrent) && - ( - networkList.value.find((i: any) => i.id === networkCurrent).addresses || +const getNetworkCurrent = computed(() => { + return ( + (networkList.value.find((i: any) => i.id === networkCurrent.value) && + networkList.value.find((i: any) => i.id === networkCurrent.value) + ?.addresses) || [] - ).length > 0; -const getNetworkCurrentData = () => - getNetworkCurrent() - ? networkList.value.find((i: any) => i.id === networkCurrent).addresses - : []; + ); +}); const getColor = (i: any) => (i.health === -1 ? 'error' : 'processing'); @@ -542,6 +553,9 @@ const next = async () => { if (current.value === 0) { if (!networkCurrent.value) { onlyMessage('请选择网络组件!', 'error'); + } else if (isAgent) { + current.value = 2; + procotolCurrent.value = props.provider.id; } else { queryProcotolList(props.provider.id); current.value = current.value + 1; @@ -558,7 +572,7 @@ const next = async () => { ) : await getChildConfigView(procotolCurrent.value); if (resp.status === 200) { - config.value = resp.result; + config.value = resp.result || {}; current.value = current.value + 1; const Group = { title: '分组', @@ -591,7 +605,11 @@ const next = async () => { } }; const prev = () => { - current.value = current.value - 1; + if (isAgent) { + current.value = 1; + } else { + current.value = current.value - 1; + } }; onMounted(() => { diff --git a/src/views/link/AccessConfig/data.ts b/src/views/link/AccessConfig/data.ts index 2503bc4a..6852e71e 100644 --- a/src/views/link/AccessConfig/data.ts +++ b/src/views/link/AccessConfig/data.ts @@ -17,6 +17,8 @@ ProtocolMapping.set('opc-ua', 'OPC_UA'); ProtocolMapping.set('edge-child-device', 'EdgeGateway'); ProtocolMapping.set('collector-gateway', 'collector-gateway'); ProtocolMapping.set('official-edge-gateway', 'MQTT'); +ProtocolMapping.set('agent-device-gateway', 'MQTT'); +ProtocolMapping.set('agent-media-device-gateway', 'MQTT'); const NetworkTypeMapping = new Map(); NetworkTypeMapping.set('websocket-server', 'WEB_SOCKET_SERVER'); @@ -27,6 +29,8 @@ NetworkTypeMapping.set('mqtt-client-gateway', 'MQTT_CLIENT'); NetworkTypeMapping.set('mqtt-server-gateway', 'MQTT_SERVER'); NetworkTypeMapping.set('tcp-server-gateway', 'TCP_SERVER'); NetworkTypeMapping.set('official-edge-gateway', 'MQTT_SERVER'); +NetworkTypeMapping.set('agent-device-gateway', 'MQTT_SERVER'); +NetworkTypeMapping.set('agent-media-device-gateway', 'MQTT_SERVER'); const BackMap = new Map(); BackMap.set('mqtt-server-gateway', getImage('/access/mqtt.png')); @@ -50,6 +54,8 @@ BackMap.set('official-edge-gateway', getImage('/access/edge.png')); BackMap.set('collector-gateway', getImage('/access/collector-gateway.png')); BackMap.set('onvif',getImage('/access/onvif.png')); BackMap.set('media-plugin',getImage('/access/media-plugin.png')) +BackMap.set('agent-device-gateway',getImage('/access/agent-device.png')) +BackMap.set('agent-media-device-gateway',getImage('/access/media-plugin.png')) const descriptionList = { 'udp-device-gateway': diff --git a/src/views/media/Device/Channel/Save.vue b/src/views/media/Device/Channel/Save.vue index 1df6e634..25731e15 100644 --- a/src/views/media/Device/Channel/Save.vue +++ b/src/views/media/Device/Channel/Save.vue @@ -79,7 +79,6 @@ name="media_url" :rules="[ { required: true, message: '请输入视频地址' }, - { max: 128, message: '最多可输入128个字符' }, { validator: validateUrl, }, diff --git a/src/views/media/Device/Save/SaveProduct.vue b/src/views/media/Device/Save/SaveProduct.vue index 63c2d4d7..028a70bf 100644 --- a/src/views/media/Device/Save/SaveProduct.vue +++ b/src/views/media/Device/Save/SaveProduct.vue @@ -228,6 +228,7 @@ const props = defineProps({ visible: { type: Boolean, default: false }, productId: { type: String, default: '' }, channel: { type: String, default: '' }, + channels: { type: Array, default: () => [] }, deviceType: { type: String, default: 'device' }, }); @@ -271,7 +272,7 @@ const getGatewayList = async () => { const params = { pageSize: 100, sorts: [{ name: 'createTime', order: 'desc' }], - terms: [{ column: 'provider', value: props.channel }], + terms: [{ column: 'provider', termType: 'in', value: props.channels }], }; const { result } = await DeviceApi.queryProvider(params); gatewayList.value = result.data; @@ -427,9 +428,11 @@ const handleCancel = () => { * 添加接入网关 */ const handleAdd = () => { - const tab: any = window.open( - `${origin}/#/iot/link/accessConfig/detail/:id?save=true&view=false&type=${props.channel}`, - ); + const tab: any = props.channels.length > 1 + ? window.open( + `${origin}/#/iot/link/accessConfig/detail/:id?save=true&view=false`, + ) + : window.open(`${origin}/#/iot/link/accessConfig/detail/:id?save=true&view=false&type=${props.channel}`); tab.onTabSaveSuccess = async (value: any) => { await getGatewayList(); handleClick(gatewayList.value?.[0]); diff --git a/src/views/media/Device/Save/index.vue b/src/views/media/Device/Save/index.vue index 21d9044b..f77ad983 100644 --- a/src/views/media/Device/Save/index.vue +++ b/src/views/media/Device/Save/index.vue @@ -421,7 +421,11 @@
不影响设备接入平台,可保持设备初始化值。
-
+

1.概述

视频设备通过RTSP、RTMP固定地址接入平台分为2步。 @@ -441,16 +445,20 @@ 只能选择接入方式为固定地址的产品,若当前无对应产品,可点击右侧快速添加按钮,填写产品名称和选择固定地址类型的网关完成产品创建。
-
+

1.概述

JetLinks平台支持通过Onvif方式接入视频设备。分为两个部分,包括平台端配置和设备端配置。本文通过海康摄像头为例将onvif视频接入到平台播放。

2.配置说明

+
设备端配置
- 设备端配置 + 1.本文以海康监控为例演示,登录海康监控设备后台,进入配置>网络>高级配置>集成协议,用户自定义输入用户名和密码,完成用户添加。
-
1.本文以海康监控为例演示,登录海康监控设备后台,进入配置>网络>高级配置>集成协议,用户自定义输入用户名和密码,完成用户添加。
平台端配置
-
ID:设备唯一标识,若不填写,系统将自动生成唯一标识
+
+ ID:设备唯一标识,若不填写,系统将自动生成唯一标识 +
设备名称:用户自定义输入小于或等于64位字符
-
所属产品:选择接入方式为Onvif的产品,若当前无对应产品,可点击右侧快速添加按钮,填写产品名称和选择Onvif类型的网关完成产品创建
-
接入地址:不同平台的摄像头接入地址组合方式不一致,请参考对应品牌接入Onvif的地址设置。如海康:http://ip/onvif/device_service。IP地址来自于海康监控设备端后台:配置>网络>基本配置>TCP/IP
+
+ 所属产品:选择接入方式为Onvif的产品,若当前无对应产品,可点击右侧快速添加按钮,填写产品名称和选择Onvif类型的网关完成产品创建 +
+
+ 接入地址:不同平台的摄像头接入地址组合方式不一致,请参考对应品牌接入Onvif的地址设置。如海康:http://ip/onvif/device_service。IP地址来自于海康监控设备端后台:配置>网络>基本配置>TCP/IP +

3.所有配置项填写完成,点击保存。

-
+

1.概述

JetLinks平台支持通过调用SDK或API请求将第三方系统视频设备数据接入到平台。

2.配置说明

2.1平台端配置
-
ID:设备唯一标识,若不填写,系统将自动生成唯一标识
+
+ ID:设备唯一标识,若不填写,系统将自动生成唯一标识 +
+
设备名称:用户自定义输入小于或等于64位字符
+
+ 所属产品:选择接入方式为插件视频接入的产品,若当前无对应产品,可点击右侧快速添加按钮,填写产品名称和选择插件类型的网关完成产品创建。 +
+

3.所有配置项填写完成,点击保存。

+
+
+

1.概述

+
+ JetLinks平台支持通过Agent代理,将具有视频能力的边缘网关接入到平台。边缘网关下的视频设备可将其视频通道统一推送至云平台。用户在平台中即可在该网关下直接查看和管理所有已接入的视频通道。 +
+
+ +
+

2.配置说明

+
2.1平台端配置
+
+ ID:设备唯一标识,若不填写,系统将自动生成唯一标识 +
设备名称:用户自定义输入小于或等于64位字符
-
所属产品:选择接入方式为插件视频接入的产品,若当前无对应产品,可点击右侧快速添加按钮,填写产品名称和选择插件类型的网关完成产品创建。
+
+ 所属产品:选择接入方式为Agent视频设备接入的产品,若当前无对应产品,可点击右侧快速添加按钮,填写产品名称和选择Agent视频设备接入类型的网关完成产品创建。 +

3.所有配置项填写完成,点击保存。

@@ -499,6 +547,7 @@ v-model:productId="formData.productId" v-model:password="formData.others.access_pwd" :channel="formData.channel" + :channels="[formData.channel]" @close="getProductList" /> @@ -560,12 +609,11 @@ const getProductList = async () => { }; const { result } = await DeviceApi.queryProductList(params); productList.value = result; - if(result.length && !route.query.id){ - formData.value.productId = result[0]?.id - formData.value.others.access_pwd = result[0]?.configuration?.access_pwd - formData.value.streamMode = result[0]?.configuration?.stream_mode + if (result.length && !route.query.id) { + formData.value.productId = result[0]?.id; + formData.value.others.access_pwd = result[0]?.configuration?.access_pwd; + formData.value.streamMode = result[0]?.configuration?.stream_mode; } - }; const handleProductChange = () => { @@ -626,7 +674,10 @@ const getDetail = async () => { : productData?.configuration?.stream_mode; } if (productData && formData.value.channel === 'media-plugin') { - if(!res.result.others || JSON.stringify(res.result?.others) === "{}"){ + if ( + !res.result.others || + JSON.stringify(res.result?.others) === '{}' + ) { formData.value.others = productData?.configuration; } const resp: any = await queryDeviceConfig(formData.value.id); @@ -663,7 +714,10 @@ const handleSubmit = () => { ...extraParams } = formData.value; let params: any; - if (formData.value.channel === 'fixed-media') { + if ( + formData.value.channel === 'fixed-media' || + formData.value.channel === 'agent-media-device-gateway' + ) { // 固定地址 params = !id ? extraParams @@ -712,7 +766,6 @@ const handleSubmit = () => { ...extraParams, }; } - formRef.value ?.validate() .then(async () => { diff --git a/src/views/media/Device/const.ts b/src/views/media/Device/const.ts index 98d69be4..26cb5aeb 100644 --- a/src/views/media/Device/const.ts +++ b/src/views/media/Device/const.ts @@ -2,7 +2,8 @@ export const PROVIDER_OPTIONS = [ { label: 'GB/T28181', value: 'gb28181-2016' }, { label: '固定地址', value: 'fixed-media' }, { label: 'Onvif', value: 'onvif'}, - { label: '插件', value: 'media-plugin'} + { label: '插件', value: 'media-plugin'}, + { label: 'Agent接入', value: 'agent-media-device-gateway'} ] export const streamMode = [ { label: 'UDP', value: 'UDP' }, @@ -13,5 +14,6 @@ export const providerType = { 'gb28181-2016': 'GB/T28181', 'fixed-media': '固定地址', 'onvif': 'Onvif', - 'media-plugin': '插件' + 'media-plugin': '插件', + 'agent-media-device-gateway':'Agent接入' }; \ No newline at end of file diff --git a/src/views/media/Stream/Detail/index.vue b/src/views/media/Stream/Detail/index.vue index ae4e9eed..9fc0ca7c 100644 --- a/src/views/media/Stream/Detail/index.vue +++ b/src/views/media/Stream/Detail/index.vue @@ -1120,7 +1120,7 @@ const detail = async (id: string) => { rtmpPort: '', }, }; - configuration?.playerConfig.forEach((item: any) => { + configuration?.playerConfig?.forEach((item: any) => { formData.value.otherConfiguration.internalNet[ item.format + 'Port' ] = item.localPort; diff --git a/src/views/media/Stream/type.d.ts b/src/views/media/Stream/type.d.ts index 3a4afbf4..662d3a85 100644 --- a/src/views/media/Stream/type.d.ts +++ b/src/views/media/Stream/type.d.ts @@ -10,10 +10,12 @@ export interface Configuration { dynamicRtpPortRange?: array; dynamicRtpPortRange0?: number | string | undefined; dynamicRtpPortRange1?: number | string | undefined; + distinguish: boolean } export interface FormDataType { name: string; provider: string | undefined; configuration: Configuration; id?: string; + otherConfiguration: any } diff --git a/src/views/rule-engine/Alarm/Configuration/Save/Scene/Save/Actions.vue b/src/views/rule-engine/Alarm/Configuration/Save/Scene/Save/Actions.vue index a2a5d3e4..89593a35 100644 --- a/src/views/rule-engine/Alarm/Configuration/Save/Scene/Save/Actions.vue +++ b/src/views/rule-engine/Alarm/Configuration/Save/Scene/Save/Actions.vue @@ -160,7 +160,7 @@ {{ item.options?.type }} - {{ item.options?.name }} + {{ Array.isArray(item?.options?.name) ? item?.options?.name?.join(',') : item.options?.name }} {{ item.options?.propertiesName }} diff --git a/src/views/rule-engine/Alarm/Configuration/Save/Scene/Save/utils.ts b/src/views/rule-engine/Alarm/Configuration/Save/Scene/Save/utils.ts index cd0e1caf..5680bdce 100644 --- a/src/views/rule-engine/Alarm/Configuration/Save/Scene/Save/utils.ts +++ b/src/views/rule-engine/Alarm/Configuration/Save/Scene/Save/utils.ts @@ -275,7 +275,7 @@ export const handleGroupAndFilter = (branches: any[], when: any[]) =>{ if (index === 0 || item.executeAnyway) { group.push({ - branchName: item.branchName || item.whenOptions?.branchName || `条件${group.length + 1}`, + branchName: item.branchName || item.whenOptions?.branchName || `条件`, key: item.key || item.branchId, children: [] }) diff --git a/src/views/rule-engine/Alarm/Log/TabComponent/components/DetailDrawer.vue b/src/views/rule-engine/Alarm/Log/TabComponent/components/DetailDrawer.vue index ae3a5c8a..19f9d582 100644 --- a/src/views/rule-engine/Alarm/Log/TabComponent/components/DetailDrawer.vue +++ b/src/views/rule-engine/Alarm/Log/TabComponent/components/DetailDrawer.vue @@ -19,7 +19,13 @@
-
+
{{ AlarmData?.description || '暂无说明' }}
@@ -56,14 +62,14 @@ 告警日志