From 827c71c81ad8b5bf25eabb4f607d5f12ad90b3f7 Mon Sep 17 00:00:00 2001 From: wxy <3050128610@qq.com> Date: Thu, 16 Oct 2025 15:59:55 +0800 Subject: [PATCH] push front-end code --- orion-ops-vue/.editorconfig | 5 + orion-ops-vue/.env | 3 + orion-ops-vue/.env.dev | 3 + orion-ops-vue/.env.production | 3 + orion-ops-vue/.gitignore | 23 + orion-ops-vue/babel.config.js | 5 + orion-ops-vue/jsconfig.json | 19 + orion-ops-vue/package.json | 60 + orion-ops-vue/public/favicon.ico | Bin 0 -> 41662 bytes orion-ops-vue/public/index.html | 13 + orion-ops-vue/src/App.vue | 25 + orion-ops-vue/src/assets/left-top-bg.png | Bin 0 -> 37305 bytes orion-ops-vue/src/assets/login-btn.png | Bin 0 -> 71586 bytes orion-ops-vue/src/assets/logo.svg | 20 + orion-ops-vue/src/assets/logo_100.png | Bin 0 -> 4121 bytes orion-ops-vue/src/assets/logo_horizontal.png | Bin 0 -> 50857 bytes orion-ops-vue/src/assets/right-bottom-bg.png | Bin 0 -> 23598 bytes .../src/components/app/AddAppEnvModal.vue | 154 + .../src/components/app/AddAppForm.vue | 176 + .../src/components/app/AddAppModal.vue | 60 + .../src/components/app/AddAppProfileModal.vue | 162 + .../src/components/app/AddPipelineModal.vue | 269 + .../src/components/app/AddRepositoryModal.vue | 261 + .../src/components/app/AppAutoComplete.vue | 90 + .../src/components/app/AppBuildConfigForm.vue | 328 + .../components/app/AppBuildDetailDrawer.vue | 256 + .../src/components/app/AppBuildModal.vue | 393 + .../app/AppBuildStatisticsCharts.vue | 96 + .../app/AppBuildStatisticsMetrics.vue | 124 + .../app/AppBuildStatisticsViews.vue | 338 + .../app/AppPipelineDetailViewDrawer.vue | 83 + .../app/AppPipelineExecAuditModal.vue | 83 + .../app/AppPipelineExecBuildModal.vue | 239 + .../components/app/AppPipelineExecModal.vue | 415 + .../app/AppPipelineExecReleaseModal.vue | 226 + .../app/AppPipelineExecTimedModal.vue | 74 + .../components/app/AppPipelineSelector.vue | 73 + .../app/AppPipelineStatisticsCharts.vue | 95 + .../app/AppPipelineStatisticsMetrics.vue | 123 + .../app/AppPipelineStatisticsViews.vue | 347 + .../app/AppPipelineTaskDetailDrawer.vue | 226 + .../src/components/app/AppProfileChecker.vue | 162 + .../components/app/AppReleaseAuditModal.vue | 83 + .../components/app/AppReleaseConfigForm.vue | 457 ++ .../components/app/AppReleaseDetailDrawer.vue | 253 + .../app/AppReleaseMachineDetailDrawer.vue | 226 + .../src/components/app/AppReleaseModal.vue | 414 + .../app/AppReleaseStatisticsCharts.vue | 96 + .../app/AppReleaseStatisticsMetrics.vue | 124 + .../app/AppReleaseStatisticsViews.vue | 466 ++ .../components/app/AppReleaseTimedModal.vue | 74 + .../src/components/app/AppSelector.vue | 64 + .../components/app/PipelineAutoComplete.vue | 93 + .../components/app/ProfileAutoComplete.vue | 90 + .../components/clear/AppBuildClearModal.vue | 181 + .../clear/AppPipelineClearModal.vue | 197 + .../components/clear/AppReleaseClearModal.vue | 197 + .../components/clear/BatchExecClearModal.vue | 173 + .../components/clear/EventLogClearModal.vue | 164 + .../clear/MachineAlarmHistoryClearModal.vue | 151 + .../clear/SchedulerRecordClearModal.vue | 151 + .../clear/TerminalLogClearModal.vue | 161 + .../src/components/common/RightClickMenu.vue | 51 + .../components/content/AddTemplateModal.vue | 153 + .../components/content/AddWebhookModal.vue | 159 + .../components/content/EnvHistoryModal.vue | 233 + .../components/content/TemplateSelector.vue | 167 + .../src/components/editor/Editor.vue | 108 + .../components/exec/ExecTaskDetailModal.vue | 110 + .../export/AppProfileExportModal.vue | 92 + .../export/AppRepositoryExportModal.vue | 100 + .../export/ApplicationExportModal.vue | 92 + .../export/CommandTemplateExportModal.vue | 92 + .../export/EventLogExportExportModal.vue | 131 + .../export/MachineAlarmHistoryExportModal.vue | 104 + .../components/export/MachineExportModal.vue | 100 + .../export/MachineProxyExportModal.vue | 100 + .../components/export/TailFileExportModal.vue | 104 + .../export/TerminalLogExportModal.vue | 104 + .../components/export/WebhookExportModal.vue | 107 + .../src/components/import/DataImportModal.vue | 241 + .../src/components/layout/Header.vue | 158 + .../components/layout/HeaderProfileSelect.vue | 76 + .../src/components/layout/HeaderUser.vue | 100 + .../src/components/layout/Layout.vue | 129 + orion-ops-vue/src/components/layout/Menu.vue | 97 + .../layout/WebSideMessageDrawer.vue | 530 ++ .../src/components/log/AddLogFileModal.vue | 263 + .../components/log/AppActionLogAppender.vue | 99 + .../log/AppActionLogAppenderModal.vue | 47 + .../components/log/AppBuildLogAppender.vue | 238 + .../log/AppBuildLogAppenderModal.vue | 47 + .../components/log/AppReleaseLogAppender.vue | 335 + .../log/AppReleaseLogAppenderModal.vue | 48 + .../log/AppReleaseMachineLogAppender.vue | 205 + .../log/AppReleaseMachineLogAppenderModal.vue | 48 + .../src/components/log/ExecLoggerAppender.vue | 181 + .../log/ExecLoggerAppenderModal.vue | 50 + .../src/components/log/FileAnsiCleanModal.vue | 98 + .../src/components/log/LogAppender.vue | 389 + .../src/components/log/LoggerViewModal.vue | 164 + .../log/SchedulerTaskLogAppender.vue | 301 + .../log/SchedulerTaskLogAppenderModal.vue | 48 + .../log/SchedulerTaskMachineLogAppender.vue | 184 + .../SchedulerTaskMachineLogAppenderModal.vue | 49 + .../src/components/log/UploadLogFileModal.vue | 102 + .../components/machine/AddMachineEnvModal.vue | 151 + .../components/machine/AddMachineKeyModal.vue | 184 + .../components/machine/AddMachineModal.vue | 449 ++ .../machine/AddMachineProxyModal.vue | 197 + .../machine/MachineAutoComplete.vue | 89 + .../src/components/machine/MachineChecker.vue | 295 + .../components/machine/MachineDetailModal.vue | 125 + .../machine/MachineEditableTree.vue | 546 ++ .../machine/MachineKeyBindModal.vue | 98 + .../components/machine/MachineListMenu.vue | 140 + .../machine/MachineMonitorAlarmConfig.vue | 224 + .../machine/MachineMonitorAlarmHistory.vue | 252 + .../machine/MachineMonitorChart.vue | 1050 +++ .../machine/MachineMonitorConfigModal.vue | 146 + .../machine/MachineMonitorSummary.vue | 697 ++ .../machine/MachineMultiSelector.vue | 67 + .../MachineMultiTableSelectorModal.vue | 184 + .../MachineMultiTreeTableSelectorModal.vue | 243 + .../components/machine/MachineSelector.vue | 74 + .../src/components/preview/EditorPreview.vue | 60 + .../src/components/preview/TextPreview.vue | 48 + .../components/scheduler/AddSchedulerTask.vue | 330 + .../src/components/sftp/FileTransferList.vue | 477 ++ .../src/components/sftp/MachineSftpDrawer.vue | 93 + .../src/components/sftp/MachineSftpMain.vue | 818 ++ .../src/components/sftp/SftpChmodModal.vue | 146 + .../src/components/sftp/SftpFolderTree.vue | 214 + .../src/components/sftp/SftpMoveModal.vue | 113 + .../src/components/sftp/SftpTouchModal.vue | 123 + .../src/components/sftp/SftpUpload.vue | 214 + .../components/system/AddSystemEnvModal.vue | 147 + .../src/components/system/IpConfig.vue | 174 + .../src/components/system/OtherConfig.vue | 146 + .../src/components/system/SecurityConfig.vue | 197 + .../src/components/system/SystemAbout.vue | 80 + .../src/components/system/SystemAnalysis.vue | 362 + .../src/components/system/ThreadMetrics.vue | 112 + .../components/terminal/TerminalBanner.vue | 131 + .../src/components/terminal/TerminalBody.vue | 335 + .../components/terminal/TerminalHeader.vue | 188 + .../src/components/terminal/TerminalModal.vue | 214 + .../terminal/TerminalScreenModal.vue | 185 + .../components/terminal/TerminalSearch.vue | 142 + .../terminal/TerminalSettingModal.vue | 188 + .../src/components/terminal/TerminalView.vue | 99 + .../terminal/TerminalWatcherModal.vue | 350 + .../src/components/user/AddAlarmGroup.vue | 192 + .../src/components/user/AddUserModal.vue | 190 + .../src/components/user/EventLogList.vue | 287 + .../src/components/user/LoginHistory.vue | 145 + .../src/components/user/ResetPassword.vue | 152 + .../src/components/user/UserAutoComplete.vue | 95 + .../src/components/user/UserBasicForm.vue | 206 + .../src/components/user/UserSelector.vue | 55 + orion-ops-vue/src/css/common.less | 218 + orion-ops-vue/src/css/component.less | 49 + orion-ops-vue/src/css/layout.less | 145 + orion-ops-vue/src/css/table.less | 92 + orion-ops-vue/src/lib/api.js | 2493 ++++++ orion-ops-vue/src/lib/chart.js | 56 + orion-ops-vue/src/lib/directive.js | 122 + orion-ops-vue/src/lib/enum.js | 2562 ++++++ orion-ops-vue/src/lib/filters.js | 8 + orion-ops-vue/src/lib/http.js | 239 + orion-ops-vue/src/lib/storage.js | 72 + orion-ops-vue/src/lib/tree.js | 111 + orion-ops-vue/src/lib/utils.js | 428 + orion-ops-vue/src/lib/validate.js | 9 + orion-ops-vue/src/lib/watermark.js | 80 + orion-ops-vue/src/main.js | 89 + orion-ops-vue/src/router/index.js | 537 ++ orion-ops-vue/src/views/404.vue | 19 + orion-ops-vue/src/views/Console.vue | 276 + orion-ops-vue/src/views/Login.vue | 225 + .../src/views/app/AppActionLogView.vue | 20 + orion-ops-vue/src/views/app/AppBuild.vue | 451 ++ .../src/views/app/AppBuildLogView.vue | 20 + .../src/views/app/AppBuildStatistics.vue | 167 + orion-ops-vue/src/views/app/AppConfig.vue | 129 + orion-ops-vue/src/views/app/AppEnv.vue | 515 ++ orion-ops-vue/src/views/app/AppList.vue | 502 ++ orion-ops-vue/src/views/app/AppPipeline.vue | 278 + .../src/views/app/AppPipelineStatistics.vue | 176 + .../src/views/app/AppPipelineTask.vue | 783 ++ orion-ops-vue/src/views/app/AppProfile.vue | 255 + orion-ops-vue/src/views/app/AppRelease.vue | 794 ++ .../src/views/app/AppReleaseLogView.vue | 21 + .../views/app/AppReleaseMachineLogView.vue | 21 + .../src/views/app/AppReleaseStatistics.vue | 167 + orion-ops-vue/src/views/app/AppRepository.vue | 333 + .../src/views/content/TemplateList.vue | 261 + .../src/views/content/WebhookList.vue | 230 + .../src/views/exec/BatchExecList.vue | 559 ++ .../src/views/exec/BatchExecTask.vue | 446 ++ .../src/views/exec/BatchUploadFile.vue | 591 ++ .../src/views/exec/ExecLoggerView.vue | 21 + orion-ops-vue/src/views/log/LoggerList.vue | 353 + orion-ops-vue/src/views/log/LoggerView.vue | 358 + .../src/views/machine/AddMachine.vue | 452 ++ .../src/views/machine/MachineEnv.vue | 502 ++ .../src/views/machine/MachineGroupView.vue | 365 + .../src/views/machine/MachineKey.vue | 268 + .../src/views/machine/MachineList.vue | 184 + .../src/views/machine/MachineListView.vue | 500 ++ .../src/views/machine/MachineMonitorList.vue | 367 + .../views/machine/MachineMonitorMetrics.vue | 169 + .../src/views/machine/MachineProxy.vue | 261 + .../src/views/machine/MachineSftp.vue | 128 + .../src/views/machine/MachineTerminal.vue | 173 + .../src/views/machine/MachineTerminalLogs.vue | 332 + .../views/machine/MachineTerminalSession.vue | 239 + .../src/views/scheduler/SchedulerList.vue | 327 + .../scheduler/SchedulerMachineLogView.vue | 20 + .../src/views/scheduler/SchedulerRecord.vue | 632 ++ .../views/scheduler/SchedulerStatistics.vue | 224 + .../views/scheduler/SchedulerTaskLogView.vue | 20 + orion-ops-vue/src/views/system/SystemEnv.vue | 362 + .../src/views/system/SystemSetting.vue | 56 + .../src/views/user/AlarmGroupList.vue | 198 + orion-ops-vue/src/views/user/UserDetail.vue | 69 + .../src/views/user/UserEventLogList.vue | 374 + orion-ops-vue/src/views/user/UserList.vue | 366 + orion-ops-vue/vue.config.js | 42 + orion-ops-vue/yarn.lock | 6896 +++++++++++++++++ 230 files changed, 56207 insertions(+) create mode 100644 orion-ops-vue/.editorconfig create mode 100644 orion-ops-vue/.env create mode 100644 orion-ops-vue/.env.dev create mode 100644 orion-ops-vue/.env.production create mode 100644 orion-ops-vue/.gitignore create mode 100644 orion-ops-vue/babel.config.js create mode 100644 orion-ops-vue/jsconfig.json create mode 100644 orion-ops-vue/package.json create mode 100644 orion-ops-vue/public/favicon.ico create mode 100644 orion-ops-vue/public/index.html create mode 100644 orion-ops-vue/src/App.vue create mode 100644 orion-ops-vue/src/assets/left-top-bg.png create mode 100644 orion-ops-vue/src/assets/login-btn.png create mode 100644 orion-ops-vue/src/assets/logo.svg create mode 100644 orion-ops-vue/src/assets/logo_100.png create mode 100644 orion-ops-vue/src/assets/logo_horizontal.png create mode 100644 orion-ops-vue/src/assets/right-bottom-bg.png create mode 100644 orion-ops-vue/src/components/app/AddAppEnvModal.vue create mode 100644 orion-ops-vue/src/components/app/AddAppForm.vue create mode 100644 orion-ops-vue/src/components/app/AddAppModal.vue create mode 100644 orion-ops-vue/src/components/app/AddAppProfileModal.vue create mode 100644 orion-ops-vue/src/components/app/AddPipelineModal.vue create mode 100644 orion-ops-vue/src/components/app/AddRepositoryModal.vue create mode 100644 orion-ops-vue/src/components/app/AppAutoComplete.vue create mode 100644 orion-ops-vue/src/components/app/AppBuildConfigForm.vue create mode 100644 orion-ops-vue/src/components/app/AppBuildDetailDrawer.vue create mode 100644 orion-ops-vue/src/components/app/AppBuildModal.vue create mode 100644 orion-ops-vue/src/components/app/AppBuildStatisticsCharts.vue create mode 100644 orion-ops-vue/src/components/app/AppBuildStatisticsMetrics.vue create mode 100644 orion-ops-vue/src/components/app/AppBuildStatisticsViews.vue create mode 100644 orion-ops-vue/src/components/app/AppPipelineDetailViewDrawer.vue create mode 100644 orion-ops-vue/src/components/app/AppPipelineExecAuditModal.vue create mode 100644 orion-ops-vue/src/components/app/AppPipelineExecBuildModal.vue create mode 100644 orion-ops-vue/src/components/app/AppPipelineExecModal.vue create mode 100644 orion-ops-vue/src/components/app/AppPipelineExecReleaseModal.vue create mode 100644 orion-ops-vue/src/components/app/AppPipelineExecTimedModal.vue create mode 100644 orion-ops-vue/src/components/app/AppPipelineSelector.vue create mode 100644 orion-ops-vue/src/components/app/AppPipelineStatisticsCharts.vue create mode 100644 orion-ops-vue/src/components/app/AppPipelineStatisticsMetrics.vue create mode 100644 orion-ops-vue/src/components/app/AppPipelineStatisticsViews.vue create mode 100644 orion-ops-vue/src/components/app/AppPipelineTaskDetailDrawer.vue create mode 100644 orion-ops-vue/src/components/app/AppProfileChecker.vue create mode 100644 orion-ops-vue/src/components/app/AppReleaseAuditModal.vue create mode 100644 orion-ops-vue/src/components/app/AppReleaseConfigForm.vue create mode 100644 orion-ops-vue/src/components/app/AppReleaseDetailDrawer.vue create mode 100644 orion-ops-vue/src/components/app/AppReleaseMachineDetailDrawer.vue create mode 100644 orion-ops-vue/src/components/app/AppReleaseModal.vue create mode 100644 orion-ops-vue/src/components/app/AppReleaseStatisticsCharts.vue create mode 100644 orion-ops-vue/src/components/app/AppReleaseStatisticsMetrics.vue create mode 100644 orion-ops-vue/src/components/app/AppReleaseStatisticsViews.vue create mode 100644 orion-ops-vue/src/components/app/AppReleaseTimedModal.vue create mode 100644 orion-ops-vue/src/components/app/AppSelector.vue create mode 100644 orion-ops-vue/src/components/app/PipelineAutoComplete.vue create mode 100644 orion-ops-vue/src/components/app/ProfileAutoComplete.vue create mode 100644 orion-ops-vue/src/components/clear/AppBuildClearModal.vue create mode 100644 orion-ops-vue/src/components/clear/AppPipelineClearModal.vue create mode 100644 orion-ops-vue/src/components/clear/AppReleaseClearModal.vue create mode 100644 orion-ops-vue/src/components/clear/BatchExecClearModal.vue create mode 100644 orion-ops-vue/src/components/clear/EventLogClearModal.vue create mode 100644 orion-ops-vue/src/components/clear/MachineAlarmHistoryClearModal.vue create mode 100644 orion-ops-vue/src/components/clear/SchedulerRecordClearModal.vue create mode 100644 orion-ops-vue/src/components/clear/TerminalLogClearModal.vue create mode 100644 orion-ops-vue/src/components/common/RightClickMenu.vue create mode 100644 orion-ops-vue/src/components/content/AddTemplateModal.vue create mode 100644 orion-ops-vue/src/components/content/AddWebhookModal.vue create mode 100644 orion-ops-vue/src/components/content/EnvHistoryModal.vue create mode 100644 orion-ops-vue/src/components/content/TemplateSelector.vue create mode 100644 orion-ops-vue/src/components/editor/Editor.vue create mode 100644 orion-ops-vue/src/components/exec/ExecTaskDetailModal.vue create mode 100644 orion-ops-vue/src/components/export/AppProfileExportModal.vue create mode 100644 orion-ops-vue/src/components/export/AppRepositoryExportModal.vue create mode 100644 orion-ops-vue/src/components/export/ApplicationExportModal.vue create mode 100644 orion-ops-vue/src/components/export/CommandTemplateExportModal.vue create mode 100644 orion-ops-vue/src/components/export/EventLogExportExportModal.vue create mode 100644 orion-ops-vue/src/components/export/MachineAlarmHistoryExportModal.vue create mode 100644 orion-ops-vue/src/components/export/MachineExportModal.vue create mode 100644 orion-ops-vue/src/components/export/MachineProxyExportModal.vue create mode 100644 orion-ops-vue/src/components/export/TailFileExportModal.vue create mode 100644 orion-ops-vue/src/components/export/TerminalLogExportModal.vue create mode 100644 orion-ops-vue/src/components/export/WebhookExportModal.vue create mode 100644 orion-ops-vue/src/components/import/DataImportModal.vue create mode 100644 orion-ops-vue/src/components/layout/Header.vue create mode 100644 orion-ops-vue/src/components/layout/HeaderProfileSelect.vue create mode 100644 orion-ops-vue/src/components/layout/HeaderUser.vue create mode 100644 orion-ops-vue/src/components/layout/Layout.vue create mode 100644 orion-ops-vue/src/components/layout/Menu.vue create mode 100644 orion-ops-vue/src/components/layout/WebSideMessageDrawer.vue create mode 100644 orion-ops-vue/src/components/log/AddLogFileModal.vue create mode 100644 orion-ops-vue/src/components/log/AppActionLogAppender.vue create mode 100644 orion-ops-vue/src/components/log/AppActionLogAppenderModal.vue create mode 100644 orion-ops-vue/src/components/log/AppBuildLogAppender.vue create mode 100644 orion-ops-vue/src/components/log/AppBuildLogAppenderModal.vue create mode 100644 orion-ops-vue/src/components/log/AppReleaseLogAppender.vue create mode 100644 orion-ops-vue/src/components/log/AppReleaseLogAppenderModal.vue create mode 100644 orion-ops-vue/src/components/log/AppReleaseMachineLogAppender.vue create mode 100644 orion-ops-vue/src/components/log/AppReleaseMachineLogAppenderModal.vue create mode 100644 orion-ops-vue/src/components/log/ExecLoggerAppender.vue create mode 100644 orion-ops-vue/src/components/log/ExecLoggerAppenderModal.vue create mode 100644 orion-ops-vue/src/components/log/FileAnsiCleanModal.vue create mode 100644 orion-ops-vue/src/components/log/LogAppender.vue create mode 100644 orion-ops-vue/src/components/log/LoggerViewModal.vue create mode 100644 orion-ops-vue/src/components/log/SchedulerTaskLogAppender.vue create mode 100644 orion-ops-vue/src/components/log/SchedulerTaskLogAppenderModal.vue create mode 100644 orion-ops-vue/src/components/log/SchedulerTaskMachineLogAppender.vue create mode 100644 orion-ops-vue/src/components/log/SchedulerTaskMachineLogAppenderModal.vue create mode 100644 orion-ops-vue/src/components/log/UploadLogFileModal.vue create mode 100644 orion-ops-vue/src/components/machine/AddMachineEnvModal.vue create mode 100644 orion-ops-vue/src/components/machine/AddMachineKeyModal.vue create mode 100644 orion-ops-vue/src/components/machine/AddMachineModal.vue create mode 100644 orion-ops-vue/src/components/machine/AddMachineProxyModal.vue create mode 100644 orion-ops-vue/src/components/machine/MachineAutoComplete.vue create mode 100644 orion-ops-vue/src/components/machine/MachineChecker.vue create mode 100644 orion-ops-vue/src/components/machine/MachineDetailModal.vue create mode 100644 orion-ops-vue/src/components/machine/MachineEditableTree.vue create mode 100644 orion-ops-vue/src/components/machine/MachineKeyBindModal.vue create mode 100644 orion-ops-vue/src/components/machine/MachineListMenu.vue create mode 100644 orion-ops-vue/src/components/machine/MachineMonitorAlarmConfig.vue create mode 100644 orion-ops-vue/src/components/machine/MachineMonitorAlarmHistory.vue create mode 100644 orion-ops-vue/src/components/machine/MachineMonitorChart.vue create mode 100644 orion-ops-vue/src/components/machine/MachineMonitorConfigModal.vue create mode 100644 orion-ops-vue/src/components/machine/MachineMonitorSummary.vue create mode 100644 orion-ops-vue/src/components/machine/MachineMultiSelector.vue create mode 100644 orion-ops-vue/src/components/machine/MachineMultiTableSelectorModal.vue create mode 100644 orion-ops-vue/src/components/machine/MachineMultiTreeTableSelectorModal.vue create mode 100644 orion-ops-vue/src/components/machine/MachineSelector.vue create mode 100644 orion-ops-vue/src/components/preview/EditorPreview.vue create mode 100644 orion-ops-vue/src/components/preview/TextPreview.vue create mode 100644 orion-ops-vue/src/components/scheduler/AddSchedulerTask.vue create mode 100644 orion-ops-vue/src/components/sftp/FileTransferList.vue create mode 100644 orion-ops-vue/src/components/sftp/MachineSftpDrawer.vue create mode 100644 orion-ops-vue/src/components/sftp/MachineSftpMain.vue create mode 100644 orion-ops-vue/src/components/sftp/SftpChmodModal.vue create mode 100644 orion-ops-vue/src/components/sftp/SftpFolderTree.vue create mode 100644 orion-ops-vue/src/components/sftp/SftpMoveModal.vue create mode 100644 orion-ops-vue/src/components/sftp/SftpTouchModal.vue create mode 100644 orion-ops-vue/src/components/sftp/SftpUpload.vue create mode 100644 orion-ops-vue/src/components/system/AddSystemEnvModal.vue create mode 100644 orion-ops-vue/src/components/system/IpConfig.vue create mode 100644 orion-ops-vue/src/components/system/OtherConfig.vue create mode 100644 orion-ops-vue/src/components/system/SecurityConfig.vue create mode 100644 orion-ops-vue/src/components/system/SystemAbout.vue create mode 100644 orion-ops-vue/src/components/system/SystemAnalysis.vue create mode 100644 orion-ops-vue/src/components/system/ThreadMetrics.vue create mode 100644 orion-ops-vue/src/components/terminal/TerminalBanner.vue create mode 100644 orion-ops-vue/src/components/terminal/TerminalBody.vue create mode 100644 orion-ops-vue/src/components/terminal/TerminalHeader.vue create mode 100644 orion-ops-vue/src/components/terminal/TerminalModal.vue create mode 100644 orion-ops-vue/src/components/terminal/TerminalScreenModal.vue create mode 100644 orion-ops-vue/src/components/terminal/TerminalSearch.vue create mode 100644 orion-ops-vue/src/components/terminal/TerminalSettingModal.vue create mode 100644 orion-ops-vue/src/components/terminal/TerminalView.vue create mode 100644 orion-ops-vue/src/components/terminal/TerminalWatcherModal.vue create mode 100644 orion-ops-vue/src/components/user/AddAlarmGroup.vue create mode 100644 orion-ops-vue/src/components/user/AddUserModal.vue create mode 100644 orion-ops-vue/src/components/user/EventLogList.vue create mode 100644 orion-ops-vue/src/components/user/LoginHistory.vue create mode 100644 orion-ops-vue/src/components/user/ResetPassword.vue create mode 100644 orion-ops-vue/src/components/user/UserAutoComplete.vue create mode 100644 orion-ops-vue/src/components/user/UserBasicForm.vue create mode 100644 orion-ops-vue/src/components/user/UserSelector.vue create mode 100644 orion-ops-vue/src/css/common.less create mode 100644 orion-ops-vue/src/css/component.less create mode 100644 orion-ops-vue/src/css/layout.less create mode 100644 orion-ops-vue/src/css/table.less create mode 100644 orion-ops-vue/src/lib/api.js create mode 100644 orion-ops-vue/src/lib/chart.js create mode 100644 orion-ops-vue/src/lib/directive.js create mode 100644 orion-ops-vue/src/lib/enum.js create mode 100644 orion-ops-vue/src/lib/filters.js create mode 100644 orion-ops-vue/src/lib/http.js create mode 100644 orion-ops-vue/src/lib/storage.js create mode 100644 orion-ops-vue/src/lib/tree.js create mode 100644 orion-ops-vue/src/lib/utils.js create mode 100644 orion-ops-vue/src/lib/validate.js create mode 100644 orion-ops-vue/src/lib/watermark.js create mode 100644 orion-ops-vue/src/main.js create mode 100644 orion-ops-vue/src/router/index.js create mode 100644 orion-ops-vue/src/views/404.vue create mode 100644 orion-ops-vue/src/views/Console.vue create mode 100644 orion-ops-vue/src/views/Login.vue create mode 100644 orion-ops-vue/src/views/app/AppActionLogView.vue create mode 100644 orion-ops-vue/src/views/app/AppBuild.vue create mode 100644 orion-ops-vue/src/views/app/AppBuildLogView.vue create mode 100644 orion-ops-vue/src/views/app/AppBuildStatistics.vue create mode 100644 orion-ops-vue/src/views/app/AppConfig.vue create mode 100644 orion-ops-vue/src/views/app/AppEnv.vue create mode 100644 orion-ops-vue/src/views/app/AppList.vue create mode 100644 orion-ops-vue/src/views/app/AppPipeline.vue create mode 100644 orion-ops-vue/src/views/app/AppPipelineStatistics.vue create mode 100644 orion-ops-vue/src/views/app/AppPipelineTask.vue create mode 100644 orion-ops-vue/src/views/app/AppProfile.vue create mode 100644 orion-ops-vue/src/views/app/AppRelease.vue create mode 100644 orion-ops-vue/src/views/app/AppReleaseLogView.vue create mode 100644 orion-ops-vue/src/views/app/AppReleaseMachineLogView.vue create mode 100644 orion-ops-vue/src/views/app/AppReleaseStatistics.vue create mode 100644 orion-ops-vue/src/views/app/AppRepository.vue create mode 100644 orion-ops-vue/src/views/content/TemplateList.vue create mode 100644 orion-ops-vue/src/views/content/WebhookList.vue create mode 100644 orion-ops-vue/src/views/exec/BatchExecList.vue create mode 100644 orion-ops-vue/src/views/exec/BatchExecTask.vue create mode 100644 orion-ops-vue/src/views/exec/BatchUploadFile.vue create mode 100644 orion-ops-vue/src/views/exec/ExecLoggerView.vue create mode 100644 orion-ops-vue/src/views/log/LoggerList.vue create mode 100644 orion-ops-vue/src/views/log/LoggerView.vue create mode 100644 orion-ops-vue/src/views/machine/AddMachine.vue create mode 100644 orion-ops-vue/src/views/machine/MachineEnv.vue create mode 100644 orion-ops-vue/src/views/machine/MachineGroupView.vue create mode 100644 orion-ops-vue/src/views/machine/MachineKey.vue create mode 100644 orion-ops-vue/src/views/machine/MachineList.vue create mode 100644 orion-ops-vue/src/views/machine/MachineListView.vue create mode 100644 orion-ops-vue/src/views/machine/MachineMonitorList.vue create mode 100644 orion-ops-vue/src/views/machine/MachineMonitorMetrics.vue create mode 100644 orion-ops-vue/src/views/machine/MachineProxy.vue create mode 100644 orion-ops-vue/src/views/machine/MachineSftp.vue create mode 100644 orion-ops-vue/src/views/machine/MachineTerminal.vue create mode 100644 orion-ops-vue/src/views/machine/MachineTerminalLogs.vue create mode 100644 orion-ops-vue/src/views/machine/MachineTerminalSession.vue create mode 100644 orion-ops-vue/src/views/scheduler/SchedulerList.vue create mode 100644 orion-ops-vue/src/views/scheduler/SchedulerMachineLogView.vue create mode 100644 orion-ops-vue/src/views/scheduler/SchedulerRecord.vue create mode 100644 orion-ops-vue/src/views/scheduler/SchedulerStatistics.vue create mode 100644 orion-ops-vue/src/views/scheduler/SchedulerTaskLogView.vue create mode 100644 orion-ops-vue/src/views/system/SystemEnv.vue create mode 100644 orion-ops-vue/src/views/system/SystemSetting.vue create mode 100644 orion-ops-vue/src/views/user/AlarmGroupList.vue create mode 100644 orion-ops-vue/src/views/user/UserDetail.vue create mode 100644 orion-ops-vue/src/views/user/UserEventLogList.vue create mode 100644 orion-ops-vue/src/views/user/UserList.vue create mode 100644 orion-ops-vue/vue.config.js create mode 100644 orion-ops-vue/yarn.lock diff --git a/orion-ops-vue/.editorconfig b/orion-ops-vue/.editorconfig new file mode 100644 index 0000000..7053c49 --- /dev/null +++ b/orion-ops-vue/.editorconfig @@ -0,0 +1,5 @@ +[*.{js,jsx,ts,tsx,vue}] +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/orion-ops-vue/.env b/orion-ops-vue/.env new file mode 100644 index 0000000..22ae45c --- /dev/null +++ b/orion-ops-vue/.env @@ -0,0 +1,3 @@ +VUE_APP_BASE_API='/orion/api' +VUE_APP_WATERMARK=true +VUE_APP_DEMO_MODE=false diff --git a/orion-ops-vue/.env.dev b/orion-ops-vue/.env.dev new file mode 100644 index 0000000..22ae45c --- /dev/null +++ b/orion-ops-vue/.env.dev @@ -0,0 +1,3 @@ +VUE_APP_BASE_API='/orion/api' +VUE_APP_WATERMARK=true +VUE_APP_DEMO_MODE=false diff --git a/orion-ops-vue/.env.production b/orion-ops-vue/.env.production new file mode 100644 index 0000000..22ae45c --- /dev/null +++ b/orion-ops-vue/.env.production @@ -0,0 +1,3 @@ +VUE_APP_BASE_API='/orion/api' +VUE_APP_WATERMARK=true +VUE_APP_DEMO_MODE=false diff --git a/orion-ops-vue/.gitignore b/orion-ops-vue/.gitignore new file mode 100644 index 0000000..403adbc --- /dev/null +++ b/orion-ops-vue/.gitignore @@ -0,0 +1,23 @@ +.DS_Store +node_modules +/dist + + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/orion-ops-vue/babel.config.js b/orion-ops-vue/babel.config.js new file mode 100644 index 0000000..e955840 --- /dev/null +++ b/orion-ops-vue/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [ + '@vue/cli-plugin-babel/preset' + ] +} diff --git a/orion-ops-vue/jsconfig.json b/orion-ops-vue/jsconfig.json new file mode 100644 index 0000000..4aafc5f --- /dev/null +++ b/orion-ops-vue/jsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "target": "es5", + "module": "esnext", + "baseUrl": "./", + "moduleResolution": "node", + "paths": { + "@/*": [ + "src/*" + ] + }, + "lib": [ + "esnext", + "dom", + "dom.iterable", + "scripthost" + ] + } +} diff --git a/orion-ops-vue/package.json b/orion-ops-vue/package.json new file mode 100644 index 0000000..751131b --- /dev/null +++ b/orion-ops-vue/package.json @@ -0,0 +1,60 @@ +{ + "name": "orion-ops-vue", + "version": "1.3.1", + "private": true, + "scripts": { + "serve": "vue-cli-service serve --mode dev", + "build": "vue-cli-service build --mode production", + "build:demo": "set VUE_APP_DEMO_MODE=true&& npm run build", + "lint": "vue-cli-service lint" + }, + "dependencies": { + "@antv/g2": "^4.1.48", + "ant-design-vue": "^1.7.8", + "asciinema-player": "^3.0.1", + "axios": "^0.23.0", + "core-js": "^3.8.3", + "js-md5": "^0.7.3", + "lodash": "^4.17.21", + "vue": "^2.6.14", + "vue-router": "^3.5.1", + "vue2-ace-editor": "^0.0.15", + "xterm": "^4.14.1", + "xterm-addon-fit": "^0.5.0", + "xterm-addon-search": "^0.8.1", + "xterm-addon-web-links": "^0.4.0" + }, + "devDependencies": { + "@babel/core": "^7.12.16", + "@babel/eslint-parser": "^7.12.16", + "@vue/cli-plugin-babel": "~5.0.0", + "@vue/cli-plugin-eslint": "~5.0.0", + "@vue/cli-plugin-router": "~5.0.0", + "@vue/cli-service": "~5.0.0", + "eslint": "^7.32.0", + "eslint-plugin-vue": "^8.0.3", + "less": "^4.0.0", + "less-loader": "^8.0.0", + "vue-template-compiler": "^2.6.14" + }, + "eslintConfig": { + "root": true, + "env": { + "node": true + }, + "extends": [ + "plugin:vue/essential", + "eslint:recommended" + ], + "parserOptions": { + "parser": "@babel/eslint-parser" + }, + "rules": {} + }, + "eslintIgnore": ["*"], + "browserslist": [ + "> 1%", + "last 2 versions", + "not dead" + ] +} diff --git a/orion-ops-vue/public/favicon.ico b/orion-ops-vue/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..f52e00e18f825809ae7bd77e3c76c02a84d64d8c GIT binary patch literal 41662 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 b^pV%I!5n!(X0EJX;%Mv3+e?xmlYRal9=XQA literal 0 HcmV?d00001 diff --git a/orion-ops-vue/public/index.html b/orion-ops-vue/public/index.html new file mode 100644 index 0000000..4059238 --- /dev/null +++ b/orion-ops-vue/public/index.html @@ -0,0 +1,13 @@ + + + + + + + + orion-ops + + +
+ + diff --git a/orion-ops-vue/src/App.vue b/orion-ops-vue/src/App.vue new file mode 100644 index 0000000..d123007 --- /dev/null +++ b/orion-ops-vue/src/App.vue @@ -0,0 +1,25 @@ + + + diff --git a/orion-ops-vue/src/assets/left-top-bg.png b/orion-ops-vue/src/assets/left-top-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..e096177699a446c7683157e598e2a0551267154b GIT binary patch literal 37305 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 T!FOq}qA2B?>I!-C#?Sr_P&s-- literal 0 HcmV?d00001 diff --git a/orion-ops-vue/src/assets/login-btn.png b/orion-ops-vue/src/assets/login-btn.png new file mode 100644 index 0000000000000000000000000000000000000000..0c7b5df2f3aab4c64c3b3ade5e24ef4a75046f00 GIT binary patch literal 71586 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

|zTP+r_BqgGJ^h@tCoy1QOR=I_L*|@& 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 literal 0 HcmV?d00001 diff --git a/orion-ops-vue/src/assets/logo.svg b/orion-ops-vue/src/assets/logo.svg new file mode 100644 index 0000000..7f589e1 --- /dev/null +++ b/orion-ops-vue/src/assets/logo.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + diff --git a/orion-ops-vue/src/assets/logo_100.png b/orion-ops-vue/src/assets/logo_100.png new file mode 100644 index 0000000000000000000000000000000000000000..33179b21fd2f48ad376a9c0e90174da86972be51 GIT binary patch literal 4121 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 QRpSBL>UwH5Dz=gT2ij`#AOHXW literal 0 HcmV?d00001 diff --git a/orion-ops-vue/src/assets/logo_horizontal.png b/orion-ops-vue/src/assets/logo_horizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..34cc408e4b845ceea35651b438460b094e5bed90 GIT binary patch literal 50857 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

I~IxH%>6+w6!{2oYqB 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 literal 0 HcmV?d00001 diff --git a/orion-ops-vue/src/assets/right-bottom-bg.png b/orion-ops-vue/src/assets/right-bottom-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..3f13825054a6d52c14652a6d85b094e13cd31015 GIT binary patch literal 23598 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 E2ZGz85dZ)H literal 0 HcmV?d00001 diff --git a/orion-ops-vue/src/components/app/AddAppEnvModal.vue b/orion-ops-vue/src/components/app/AddAppEnvModal.vue new file mode 100644 index 0000000..19400cc --- /dev/null +++ b/orion-ops-vue/src/components/app/AddAppEnvModal.vue @@ -0,0 +1,154 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AddAppForm.vue b/orion-ops-vue/src/components/app/AddAppForm.vue new file mode 100644 index 0000000..fb2c8f1 --- /dev/null +++ b/orion-ops-vue/src/components/app/AddAppForm.vue @@ -0,0 +1,176 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AddAppModal.vue b/orion-ops-vue/src/components/app/AddAppModal.vue new file mode 100644 index 0000000..de32a1b --- /dev/null +++ b/orion-ops-vue/src/components/app/AddAppModal.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AddAppProfileModal.vue b/orion-ops-vue/src/components/app/AddAppProfileModal.vue new file mode 100644 index 0000000..1a6f50b --- /dev/null +++ b/orion-ops-vue/src/components/app/AddAppProfileModal.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AddPipelineModal.vue b/orion-ops-vue/src/components/app/AddPipelineModal.vue new file mode 100644 index 0000000..11c47ee --- /dev/null +++ b/orion-ops-vue/src/components/app/AddPipelineModal.vue @@ -0,0 +1,269 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AddRepositoryModal.vue b/orion-ops-vue/src/components/app/AddRepositoryModal.vue new file mode 100644 index 0000000..1453a67 --- /dev/null +++ b/orion-ops-vue/src/components/app/AddRepositoryModal.vue @@ -0,0 +1,261 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppAutoComplete.vue b/orion-ops-vue/src/components/app/AppAutoComplete.vue new file mode 100644 index 0000000..c1841d0 --- /dev/null +++ b/orion-ops-vue/src/components/app/AppAutoComplete.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppBuildConfigForm.vue b/orion-ops-vue/src/components/app/AppBuildConfigForm.vue new file mode 100644 index 0000000..2cf1e10 --- /dev/null +++ b/orion-ops-vue/src/components/app/AppBuildConfigForm.vue @@ -0,0 +1,328 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppBuildDetailDrawer.vue b/orion-ops-vue/src/components/app/AppBuildDetailDrawer.vue new file mode 100644 index 0000000..7ac112b --- /dev/null +++ b/orion-ops-vue/src/components/app/AppBuildDetailDrawer.vue @@ -0,0 +1,256 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppBuildModal.vue b/orion-ops-vue/src/components/app/AppBuildModal.vue new file mode 100644 index 0000000..e69ea31 --- /dev/null +++ b/orion-ops-vue/src/components/app/AppBuildModal.vue @@ -0,0 +1,393 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppBuildStatisticsCharts.vue b/orion-ops-vue/src/components/app/AppBuildStatisticsCharts.vue new file mode 100644 index 0000000..1e5b0ba --- /dev/null +++ b/orion-ops-vue/src/components/app/AppBuildStatisticsCharts.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppBuildStatisticsMetrics.vue b/orion-ops-vue/src/components/app/AppBuildStatisticsMetrics.vue new file mode 100644 index 0000000..3e53fec --- /dev/null +++ b/orion-ops-vue/src/components/app/AppBuildStatisticsMetrics.vue @@ -0,0 +1,124 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppBuildStatisticsViews.vue b/orion-ops-vue/src/components/app/AppBuildStatisticsViews.vue new file mode 100644 index 0000000..ada7feb --- /dev/null +++ b/orion-ops-vue/src/components/app/AppBuildStatisticsViews.vue @@ -0,0 +1,338 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppPipelineDetailViewDrawer.vue b/orion-ops-vue/src/components/app/AppPipelineDetailViewDrawer.vue new file mode 100644 index 0000000..7ec2c41 --- /dev/null +++ b/orion-ops-vue/src/components/app/AppPipelineDetailViewDrawer.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppPipelineExecAuditModal.vue b/orion-ops-vue/src/components/app/AppPipelineExecAuditModal.vue new file mode 100644 index 0000000..168b20f --- /dev/null +++ b/orion-ops-vue/src/components/app/AppPipelineExecAuditModal.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppPipelineExecBuildModal.vue b/orion-ops-vue/src/components/app/AppPipelineExecBuildModal.vue new file mode 100644 index 0000000..3045bbb --- /dev/null +++ b/orion-ops-vue/src/components/app/AppPipelineExecBuildModal.vue @@ -0,0 +1,239 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppPipelineExecModal.vue b/orion-ops-vue/src/components/app/AppPipelineExecModal.vue new file mode 100644 index 0000000..4b75c1d --- /dev/null +++ b/orion-ops-vue/src/components/app/AppPipelineExecModal.vue @@ -0,0 +1,415 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppPipelineExecReleaseModal.vue b/orion-ops-vue/src/components/app/AppPipelineExecReleaseModal.vue new file mode 100644 index 0000000..1690d05 --- /dev/null +++ b/orion-ops-vue/src/components/app/AppPipelineExecReleaseModal.vue @@ -0,0 +1,226 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppPipelineExecTimedModal.vue b/orion-ops-vue/src/components/app/AppPipelineExecTimedModal.vue new file mode 100644 index 0000000..fa471e0 --- /dev/null +++ b/orion-ops-vue/src/components/app/AppPipelineExecTimedModal.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppPipelineSelector.vue b/orion-ops-vue/src/components/app/AppPipelineSelector.vue new file mode 100644 index 0000000..50d4345 --- /dev/null +++ b/orion-ops-vue/src/components/app/AppPipelineSelector.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppPipelineStatisticsCharts.vue b/orion-ops-vue/src/components/app/AppPipelineStatisticsCharts.vue new file mode 100644 index 0000000..518d0ac --- /dev/null +++ b/orion-ops-vue/src/components/app/AppPipelineStatisticsCharts.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppPipelineStatisticsMetrics.vue b/orion-ops-vue/src/components/app/AppPipelineStatisticsMetrics.vue new file mode 100644 index 0000000..7e57bca --- /dev/null +++ b/orion-ops-vue/src/components/app/AppPipelineStatisticsMetrics.vue @@ -0,0 +1,123 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppPipelineStatisticsViews.vue b/orion-ops-vue/src/components/app/AppPipelineStatisticsViews.vue new file mode 100644 index 0000000..b817edd --- /dev/null +++ b/orion-ops-vue/src/components/app/AppPipelineStatisticsViews.vue @@ -0,0 +1,347 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppPipelineTaskDetailDrawer.vue b/orion-ops-vue/src/components/app/AppPipelineTaskDetailDrawer.vue new file mode 100644 index 0000000..066267f --- /dev/null +++ b/orion-ops-vue/src/components/app/AppPipelineTaskDetailDrawer.vue @@ -0,0 +1,226 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppProfileChecker.vue b/orion-ops-vue/src/components/app/AppProfileChecker.vue new file mode 100644 index 0000000..aa58fe5 --- /dev/null +++ b/orion-ops-vue/src/components/app/AppProfileChecker.vue @@ -0,0 +1,162 @@ + + + + diff --git a/orion-ops-vue/src/components/app/AppReleaseAuditModal.vue b/orion-ops-vue/src/components/app/AppReleaseAuditModal.vue new file mode 100644 index 0000000..9c6a4c4 --- /dev/null +++ b/orion-ops-vue/src/components/app/AppReleaseAuditModal.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppReleaseConfigForm.vue b/orion-ops-vue/src/components/app/AppReleaseConfigForm.vue new file mode 100644 index 0000000..9b108ae --- /dev/null +++ b/orion-ops-vue/src/components/app/AppReleaseConfigForm.vue @@ -0,0 +1,457 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppReleaseDetailDrawer.vue b/orion-ops-vue/src/components/app/AppReleaseDetailDrawer.vue new file mode 100644 index 0000000..d6c863c --- /dev/null +++ b/orion-ops-vue/src/components/app/AppReleaseDetailDrawer.vue @@ -0,0 +1,253 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppReleaseMachineDetailDrawer.vue b/orion-ops-vue/src/components/app/AppReleaseMachineDetailDrawer.vue new file mode 100644 index 0000000..65a3c77 --- /dev/null +++ b/orion-ops-vue/src/components/app/AppReleaseMachineDetailDrawer.vue @@ -0,0 +1,226 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppReleaseModal.vue b/orion-ops-vue/src/components/app/AppReleaseModal.vue new file mode 100644 index 0000000..5c4db0f --- /dev/null +++ b/orion-ops-vue/src/components/app/AppReleaseModal.vue @@ -0,0 +1,414 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppReleaseStatisticsCharts.vue b/orion-ops-vue/src/components/app/AppReleaseStatisticsCharts.vue new file mode 100644 index 0000000..7b4abfc --- /dev/null +++ b/orion-ops-vue/src/components/app/AppReleaseStatisticsCharts.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppReleaseStatisticsMetrics.vue b/orion-ops-vue/src/components/app/AppReleaseStatisticsMetrics.vue new file mode 100644 index 0000000..16c571a --- /dev/null +++ b/orion-ops-vue/src/components/app/AppReleaseStatisticsMetrics.vue @@ -0,0 +1,124 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppReleaseStatisticsViews.vue b/orion-ops-vue/src/components/app/AppReleaseStatisticsViews.vue new file mode 100644 index 0000000..bb48edd --- /dev/null +++ b/orion-ops-vue/src/components/app/AppReleaseStatisticsViews.vue @@ -0,0 +1,466 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppReleaseTimedModal.vue b/orion-ops-vue/src/components/app/AppReleaseTimedModal.vue new file mode 100644 index 0000000..aa69d40 --- /dev/null +++ b/orion-ops-vue/src/components/app/AppReleaseTimedModal.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/AppSelector.vue b/orion-ops-vue/src/components/app/AppSelector.vue new file mode 100644 index 0000000..2510b3f --- /dev/null +++ b/orion-ops-vue/src/components/app/AppSelector.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/PipelineAutoComplete.vue b/orion-ops-vue/src/components/app/PipelineAutoComplete.vue new file mode 100644 index 0000000..c6cdbaf --- /dev/null +++ b/orion-ops-vue/src/components/app/PipelineAutoComplete.vue @@ -0,0 +1,93 @@ + + + + + diff --git a/orion-ops-vue/src/components/app/ProfileAutoComplete.vue b/orion-ops-vue/src/components/app/ProfileAutoComplete.vue new file mode 100644 index 0000000..10c00c7 --- /dev/null +++ b/orion-ops-vue/src/components/app/ProfileAutoComplete.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/orion-ops-vue/src/components/clear/AppBuildClearModal.vue b/orion-ops-vue/src/components/clear/AppBuildClearModal.vue new file mode 100644 index 0000000..8321adf --- /dev/null +++ b/orion-ops-vue/src/components/clear/AppBuildClearModal.vue @@ -0,0 +1,181 @@ + + + + + diff --git a/orion-ops-vue/src/components/clear/AppPipelineClearModal.vue b/orion-ops-vue/src/components/clear/AppPipelineClearModal.vue new file mode 100644 index 0000000..8318504 --- /dev/null +++ b/orion-ops-vue/src/components/clear/AppPipelineClearModal.vue @@ -0,0 +1,197 @@ + + + + + diff --git a/orion-ops-vue/src/components/clear/AppReleaseClearModal.vue b/orion-ops-vue/src/components/clear/AppReleaseClearModal.vue new file mode 100644 index 0000000..a7d5716 --- /dev/null +++ b/orion-ops-vue/src/components/clear/AppReleaseClearModal.vue @@ -0,0 +1,197 @@ + + + + + diff --git a/orion-ops-vue/src/components/clear/BatchExecClearModal.vue b/orion-ops-vue/src/components/clear/BatchExecClearModal.vue new file mode 100644 index 0000000..82f35f7 --- /dev/null +++ b/orion-ops-vue/src/components/clear/BatchExecClearModal.vue @@ -0,0 +1,173 @@ + + + + + diff --git a/orion-ops-vue/src/components/clear/EventLogClearModal.vue b/orion-ops-vue/src/components/clear/EventLogClearModal.vue new file mode 100644 index 0000000..3c96468 --- /dev/null +++ b/orion-ops-vue/src/components/clear/EventLogClearModal.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/orion-ops-vue/src/components/clear/MachineAlarmHistoryClearModal.vue b/orion-ops-vue/src/components/clear/MachineAlarmHistoryClearModal.vue new file mode 100644 index 0000000..1da1be8 --- /dev/null +++ b/orion-ops-vue/src/components/clear/MachineAlarmHistoryClearModal.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/orion-ops-vue/src/components/clear/SchedulerRecordClearModal.vue b/orion-ops-vue/src/components/clear/SchedulerRecordClearModal.vue new file mode 100644 index 0000000..9a1f121 --- /dev/null +++ b/orion-ops-vue/src/components/clear/SchedulerRecordClearModal.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/orion-ops-vue/src/components/clear/TerminalLogClearModal.vue b/orion-ops-vue/src/components/clear/TerminalLogClearModal.vue new file mode 100644 index 0000000..fea8a59 --- /dev/null +++ b/orion-ops-vue/src/components/clear/TerminalLogClearModal.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/orion-ops-vue/src/components/common/RightClickMenu.vue b/orion-ops-vue/src/components/common/RightClickMenu.vue new file mode 100644 index 0000000..e358568 --- /dev/null +++ b/orion-ops-vue/src/components/common/RightClickMenu.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/orion-ops-vue/src/components/content/AddTemplateModal.vue b/orion-ops-vue/src/components/content/AddTemplateModal.vue new file mode 100644 index 0000000..26469d1 --- /dev/null +++ b/orion-ops-vue/src/components/content/AddTemplateModal.vue @@ -0,0 +1,153 @@ + + + + + diff --git a/orion-ops-vue/src/components/content/AddWebhookModal.vue b/orion-ops-vue/src/components/content/AddWebhookModal.vue new file mode 100644 index 0000000..46fd2ea --- /dev/null +++ b/orion-ops-vue/src/components/content/AddWebhookModal.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/orion-ops-vue/src/components/content/EnvHistoryModal.vue b/orion-ops-vue/src/components/content/EnvHistoryModal.vue new file mode 100644 index 0000000..50d0d14 --- /dev/null +++ b/orion-ops-vue/src/components/content/EnvHistoryModal.vue @@ -0,0 +1,233 @@ + + + + + diff --git a/orion-ops-vue/src/components/content/TemplateSelector.vue b/orion-ops-vue/src/components/content/TemplateSelector.vue new file mode 100644 index 0000000..cebc0bd --- /dev/null +++ b/orion-ops-vue/src/components/content/TemplateSelector.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/orion-ops-vue/src/components/editor/Editor.vue b/orion-ops-vue/src/components/editor/Editor.vue new file mode 100644 index 0000000..d56f9c3 --- /dev/null +++ b/orion-ops-vue/src/components/editor/Editor.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/orion-ops-vue/src/components/exec/ExecTaskDetailModal.vue b/orion-ops-vue/src/components/exec/ExecTaskDetailModal.vue new file mode 100644 index 0000000..d4ddd5a --- /dev/null +++ b/orion-ops-vue/src/components/exec/ExecTaskDetailModal.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/orion-ops-vue/src/components/export/AppProfileExportModal.vue b/orion-ops-vue/src/components/export/AppProfileExportModal.vue new file mode 100644 index 0000000..c2edd68 --- /dev/null +++ b/orion-ops-vue/src/components/export/AppProfileExportModal.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/orion-ops-vue/src/components/export/AppRepositoryExportModal.vue b/orion-ops-vue/src/components/export/AppRepositoryExportModal.vue new file mode 100644 index 0000000..e8bfaa0 --- /dev/null +++ b/orion-ops-vue/src/components/export/AppRepositoryExportModal.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/orion-ops-vue/src/components/export/ApplicationExportModal.vue b/orion-ops-vue/src/components/export/ApplicationExportModal.vue new file mode 100644 index 0000000..4400461 --- /dev/null +++ b/orion-ops-vue/src/components/export/ApplicationExportModal.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/orion-ops-vue/src/components/export/CommandTemplateExportModal.vue b/orion-ops-vue/src/components/export/CommandTemplateExportModal.vue new file mode 100644 index 0000000..16353b5 --- /dev/null +++ b/orion-ops-vue/src/components/export/CommandTemplateExportModal.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/orion-ops-vue/src/components/export/EventLogExportExportModal.vue b/orion-ops-vue/src/components/export/EventLogExportExportModal.vue new file mode 100644 index 0000000..ebb8b48 --- /dev/null +++ b/orion-ops-vue/src/components/export/EventLogExportExportModal.vue @@ -0,0 +1,131 @@ + + + + + diff --git a/orion-ops-vue/src/components/export/MachineAlarmHistoryExportModal.vue b/orion-ops-vue/src/components/export/MachineAlarmHistoryExportModal.vue new file mode 100644 index 0000000..d5b2837 --- /dev/null +++ b/orion-ops-vue/src/components/export/MachineAlarmHistoryExportModal.vue @@ -0,0 +1,104 @@ + + + + + diff --git a/orion-ops-vue/src/components/export/MachineExportModal.vue b/orion-ops-vue/src/components/export/MachineExportModal.vue new file mode 100644 index 0000000..da0b5b4 --- /dev/null +++ b/orion-ops-vue/src/components/export/MachineExportModal.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/orion-ops-vue/src/components/export/MachineProxyExportModal.vue b/orion-ops-vue/src/components/export/MachineProxyExportModal.vue new file mode 100644 index 0000000..c3012eb --- /dev/null +++ b/orion-ops-vue/src/components/export/MachineProxyExportModal.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/orion-ops-vue/src/components/export/TailFileExportModal.vue b/orion-ops-vue/src/components/export/TailFileExportModal.vue new file mode 100644 index 0000000..4fbd85c --- /dev/null +++ b/orion-ops-vue/src/components/export/TailFileExportModal.vue @@ -0,0 +1,104 @@ + + + + + diff --git a/orion-ops-vue/src/components/export/TerminalLogExportModal.vue b/orion-ops-vue/src/components/export/TerminalLogExportModal.vue new file mode 100644 index 0000000..80c5a7c --- /dev/null +++ b/orion-ops-vue/src/components/export/TerminalLogExportModal.vue @@ -0,0 +1,104 @@ + + + + + diff --git a/orion-ops-vue/src/components/export/WebhookExportModal.vue b/orion-ops-vue/src/components/export/WebhookExportModal.vue new file mode 100644 index 0000000..8a244df --- /dev/null +++ b/orion-ops-vue/src/components/export/WebhookExportModal.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/orion-ops-vue/src/components/import/DataImportModal.vue b/orion-ops-vue/src/components/import/DataImportModal.vue new file mode 100644 index 0000000..025f40b --- /dev/null +++ b/orion-ops-vue/src/components/import/DataImportModal.vue @@ -0,0 +1,241 @@ + + + + + diff --git a/orion-ops-vue/src/components/layout/Header.vue b/orion-ops-vue/src/components/layout/Header.vue new file mode 100644 index 0000000..87ef679 --- /dev/null +++ b/orion-ops-vue/src/components/layout/Header.vue @@ -0,0 +1,158 @@ + + + + + diff --git a/orion-ops-vue/src/components/layout/HeaderProfileSelect.vue b/orion-ops-vue/src/components/layout/HeaderProfileSelect.vue new file mode 100644 index 0000000..25443c7 --- /dev/null +++ b/orion-ops-vue/src/components/layout/HeaderProfileSelect.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/orion-ops-vue/src/components/layout/HeaderUser.vue b/orion-ops-vue/src/components/layout/HeaderUser.vue new file mode 100644 index 0000000..d2c9f67 --- /dev/null +++ b/orion-ops-vue/src/components/layout/HeaderUser.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/orion-ops-vue/src/components/layout/Layout.vue b/orion-ops-vue/src/components/layout/Layout.vue new file mode 100644 index 0000000..cd8214a --- /dev/null +++ b/orion-ops-vue/src/components/layout/Layout.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/orion-ops-vue/src/components/layout/Menu.vue b/orion-ops-vue/src/components/layout/Menu.vue new file mode 100644 index 0000000..abd61d5 --- /dev/null +++ b/orion-ops-vue/src/components/layout/Menu.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/orion-ops-vue/src/components/layout/WebSideMessageDrawer.vue b/orion-ops-vue/src/components/layout/WebSideMessageDrawer.vue new file mode 100644 index 0000000..5f59125 --- /dev/null +++ b/orion-ops-vue/src/components/layout/WebSideMessageDrawer.vue @@ -0,0 +1,530 @@ + + + + + diff --git a/orion-ops-vue/src/components/log/AddLogFileModal.vue b/orion-ops-vue/src/components/log/AddLogFileModal.vue new file mode 100644 index 0000000..c9781c4 --- /dev/null +++ b/orion-ops-vue/src/components/log/AddLogFileModal.vue @@ -0,0 +1,263 @@ + + + + + diff --git a/orion-ops-vue/src/components/log/AppActionLogAppender.vue b/orion-ops-vue/src/components/log/AppActionLogAppender.vue new file mode 100644 index 0000000..0028257 --- /dev/null +++ b/orion-ops-vue/src/components/log/AppActionLogAppender.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/orion-ops-vue/src/components/log/AppActionLogAppenderModal.vue b/orion-ops-vue/src/components/log/AppActionLogAppenderModal.vue new file mode 100644 index 0000000..f810e8f --- /dev/null +++ b/orion-ops-vue/src/components/log/AppActionLogAppenderModal.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/orion-ops-vue/src/components/log/AppBuildLogAppender.vue b/orion-ops-vue/src/components/log/AppBuildLogAppender.vue new file mode 100644 index 0000000..f5968f4 --- /dev/null +++ b/orion-ops-vue/src/components/log/AppBuildLogAppender.vue @@ -0,0 +1,238 @@ + + + + + diff --git a/orion-ops-vue/src/components/log/AppBuildLogAppenderModal.vue b/orion-ops-vue/src/components/log/AppBuildLogAppenderModal.vue new file mode 100644 index 0000000..b612a12 --- /dev/null +++ b/orion-ops-vue/src/components/log/AppBuildLogAppenderModal.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/orion-ops-vue/src/components/log/AppReleaseLogAppender.vue b/orion-ops-vue/src/components/log/AppReleaseLogAppender.vue new file mode 100644 index 0000000..9a5c3ec --- /dev/null +++ b/orion-ops-vue/src/components/log/AppReleaseLogAppender.vue @@ -0,0 +1,335 @@ + + + + + diff --git a/orion-ops-vue/src/components/log/AppReleaseLogAppenderModal.vue b/orion-ops-vue/src/components/log/AppReleaseLogAppenderModal.vue new file mode 100644 index 0000000..9a6ad51 --- /dev/null +++ b/orion-ops-vue/src/components/log/AppReleaseLogAppenderModal.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/orion-ops-vue/src/components/log/AppReleaseMachineLogAppender.vue b/orion-ops-vue/src/components/log/AppReleaseMachineLogAppender.vue new file mode 100644 index 0000000..409e3c0 --- /dev/null +++ b/orion-ops-vue/src/components/log/AppReleaseMachineLogAppender.vue @@ -0,0 +1,205 @@ + + + + + diff --git a/orion-ops-vue/src/components/log/AppReleaseMachineLogAppenderModal.vue b/orion-ops-vue/src/components/log/AppReleaseMachineLogAppenderModal.vue new file mode 100644 index 0000000..87519c9 --- /dev/null +++ b/orion-ops-vue/src/components/log/AppReleaseMachineLogAppenderModal.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/orion-ops-vue/src/components/log/ExecLoggerAppender.vue b/orion-ops-vue/src/components/log/ExecLoggerAppender.vue new file mode 100644 index 0000000..b7a6b04 --- /dev/null +++ b/orion-ops-vue/src/components/log/ExecLoggerAppender.vue @@ -0,0 +1,181 @@ + + + + + diff --git a/orion-ops-vue/src/components/log/ExecLoggerAppenderModal.vue b/orion-ops-vue/src/components/log/ExecLoggerAppenderModal.vue new file mode 100644 index 0000000..855e998 --- /dev/null +++ b/orion-ops-vue/src/components/log/ExecLoggerAppenderModal.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/orion-ops-vue/src/components/log/FileAnsiCleanModal.vue b/orion-ops-vue/src/components/log/FileAnsiCleanModal.vue new file mode 100644 index 0000000..dab6939 --- /dev/null +++ b/orion-ops-vue/src/components/log/FileAnsiCleanModal.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/orion-ops-vue/src/components/log/LogAppender.vue b/orion-ops-vue/src/components/log/LogAppender.vue new file mode 100644 index 0000000..007e507 --- /dev/null +++ b/orion-ops-vue/src/components/log/LogAppender.vue @@ -0,0 +1,389 @@ + + + + + diff --git a/orion-ops-vue/src/components/log/LoggerViewModal.vue b/orion-ops-vue/src/components/log/LoggerViewModal.vue new file mode 100644 index 0000000..6f3372c --- /dev/null +++ b/orion-ops-vue/src/components/log/LoggerViewModal.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/orion-ops-vue/src/components/log/SchedulerTaskLogAppender.vue b/orion-ops-vue/src/components/log/SchedulerTaskLogAppender.vue new file mode 100644 index 0000000..48269fb --- /dev/null +++ b/orion-ops-vue/src/components/log/SchedulerTaskLogAppender.vue @@ -0,0 +1,301 @@ + + + + + diff --git a/orion-ops-vue/src/components/log/SchedulerTaskLogAppenderModal.vue b/orion-ops-vue/src/components/log/SchedulerTaskLogAppenderModal.vue new file mode 100644 index 0000000..b11a7df --- /dev/null +++ b/orion-ops-vue/src/components/log/SchedulerTaskLogAppenderModal.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/orion-ops-vue/src/components/log/SchedulerTaskMachineLogAppender.vue b/orion-ops-vue/src/components/log/SchedulerTaskMachineLogAppender.vue new file mode 100644 index 0000000..26ec748 --- /dev/null +++ b/orion-ops-vue/src/components/log/SchedulerTaskMachineLogAppender.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/orion-ops-vue/src/components/log/SchedulerTaskMachineLogAppenderModal.vue b/orion-ops-vue/src/components/log/SchedulerTaskMachineLogAppenderModal.vue new file mode 100644 index 0000000..1749b3e --- /dev/null +++ b/orion-ops-vue/src/components/log/SchedulerTaskMachineLogAppenderModal.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/orion-ops-vue/src/components/log/UploadLogFileModal.vue b/orion-ops-vue/src/components/log/UploadLogFileModal.vue new file mode 100644 index 0000000..6672a89 --- /dev/null +++ b/orion-ops-vue/src/components/log/UploadLogFileModal.vue @@ -0,0 +1,102 @@ + + + + + diff --git a/orion-ops-vue/src/components/machine/AddMachineEnvModal.vue b/orion-ops-vue/src/components/machine/AddMachineEnvModal.vue new file mode 100644 index 0000000..93e711f --- /dev/null +++ b/orion-ops-vue/src/components/machine/AddMachineEnvModal.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/orion-ops-vue/src/components/machine/AddMachineKeyModal.vue b/orion-ops-vue/src/components/machine/AddMachineKeyModal.vue new file mode 100644 index 0000000..f6e41e0 --- /dev/null +++ b/orion-ops-vue/src/components/machine/AddMachineKeyModal.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/orion-ops-vue/src/components/machine/AddMachineModal.vue b/orion-ops-vue/src/components/machine/AddMachineModal.vue new file mode 100644 index 0000000..e5cd519 --- /dev/null +++ b/orion-ops-vue/src/components/machine/AddMachineModal.vue @@ -0,0 +1,449 @@ + + + + + diff --git a/orion-ops-vue/src/components/machine/AddMachineProxyModal.vue b/orion-ops-vue/src/components/machine/AddMachineProxyModal.vue new file mode 100644 index 0000000..b7f032c --- /dev/null +++ b/orion-ops-vue/src/components/machine/AddMachineProxyModal.vue @@ -0,0 +1,197 @@ + + + + + diff --git a/orion-ops-vue/src/components/machine/MachineAutoComplete.vue b/orion-ops-vue/src/components/machine/MachineAutoComplete.vue new file mode 100644 index 0000000..89f8b5b --- /dev/null +++ b/orion-ops-vue/src/components/machine/MachineAutoComplete.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/orion-ops-vue/src/components/machine/MachineChecker.vue b/orion-ops-vue/src/components/machine/MachineChecker.vue new file mode 100644 index 0000000..a22db35 --- /dev/null +++ b/orion-ops-vue/src/components/machine/MachineChecker.vue @@ -0,0 +1,295 @@ + + + + diff --git a/orion-ops-vue/src/components/machine/MachineDetailModal.vue b/orion-ops-vue/src/components/machine/MachineDetailModal.vue new file mode 100644 index 0000000..2d90175 --- /dev/null +++ b/orion-ops-vue/src/components/machine/MachineDetailModal.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/orion-ops-vue/src/components/machine/MachineEditableTree.vue b/orion-ops-vue/src/components/machine/MachineEditableTree.vue new file mode 100644 index 0000000..d9e6cd0 --- /dev/null +++ b/orion-ops-vue/src/components/machine/MachineEditableTree.vue @@ -0,0 +1,546 @@ + + + + + diff --git a/orion-ops-vue/src/components/machine/MachineKeyBindModal.vue b/orion-ops-vue/src/components/machine/MachineKeyBindModal.vue new file mode 100644 index 0000000..03e1b6b --- /dev/null +++ b/orion-ops-vue/src/components/machine/MachineKeyBindModal.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/orion-ops-vue/src/components/machine/MachineListMenu.vue b/orion-ops-vue/src/components/machine/MachineListMenu.vue new file mode 100644 index 0000000..302e0f8 --- /dev/null +++ b/orion-ops-vue/src/components/machine/MachineListMenu.vue @@ -0,0 +1,140 @@ + + + + + diff --git a/orion-ops-vue/src/components/machine/MachineMonitorAlarmConfig.vue b/orion-ops-vue/src/components/machine/MachineMonitorAlarmConfig.vue new file mode 100644 index 0000000..2df33f1 --- /dev/null +++ b/orion-ops-vue/src/components/machine/MachineMonitorAlarmConfig.vue @@ -0,0 +1,224 @@ + + + + + diff --git a/orion-ops-vue/src/components/machine/MachineMonitorAlarmHistory.vue b/orion-ops-vue/src/components/machine/MachineMonitorAlarmHistory.vue new file mode 100644 index 0000000..1c8ca61 --- /dev/null +++ b/orion-ops-vue/src/components/machine/MachineMonitorAlarmHistory.vue @@ -0,0 +1,252 @@ + + + + + diff --git a/orion-ops-vue/src/components/machine/MachineMonitorChart.vue b/orion-ops-vue/src/components/machine/MachineMonitorChart.vue new file mode 100644 index 0000000..64f000a --- /dev/null +++ b/orion-ops-vue/src/components/machine/MachineMonitorChart.vue @@ -0,0 +1,1050 @@ + + + + + diff --git a/orion-ops-vue/src/components/machine/MachineMonitorConfigModal.vue b/orion-ops-vue/src/components/machine/MachineMonitorConfigModal.vue new file mode 100644 index 0000000..7854bcd --- /dev/null +++ b/orion-ops-vue/src/components/machine/MachineMonitorConfigModal.vue @@ -0,0 +1,146 @@ + + + + + diff --git a/orion-ops-vue/src/components/machine/MachineMonitorSummary.vue b/orion-ops-vue/src/components/machine/MachineMonitorSummary.vue new file mode 100644 index 0000000..952c450 --- /dev/null +++ b/orion-ops-vue/src/components/machine/MachineMonitorSummary.vue @@ -0,0 +1,697 @@ + + + + + diff --git a/orion-ops-vue/src/components/machine/MachineMultiSelector.vue b/orion-ops-vue/src/components/machine/MachineMultiSelector.vue new file mode 100644 index 0000000..91229be --- /dev/null +++ b/orion-ops-vue/src/components/machine/MachineMultiSelector.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/orion-ops-vue/src/components/machine/MachineMultiTableSelectorModal.vue b/orion-ops-vue/src/components/machine/MachineMultiTableSelectorModal.vue new file mode 100644 index 0000000..9b673c4 --- /dev/null +++ b/orion-ops-vue/src/components/machine/MachineMultiTableSelectorModal.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/orion-ops-vue/src/components/machine/MachineMultiTreeTableSelectorModal.vue b/orion-ops-vue/src/components/machine/MachineMultiTreeTableSelectorModal.vue new file mode 100644 index 0000000..4e7545d --- /dev/null +++ b/orion-ops-vue/src/components/machine/MachineMultiTreeTableSelectorModal.vue @@ -0,0 +1,243 @@ + + + + + diff --git a/orion-ops-vue/src/components/machine/MachineSelector.vue b/orion-ops-vue/src/components/machine/MachineSelector.vue new file mode 100644 index 0000000..61997b2 --- /dev/null +++ b/orion-ops-vue/src/components/machine/MachineSelector.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/orion-ops-vue/src/components/preview/EditorPreview.vue b/orion-ops-vue/src/components/preview/EditorPreview.vue new file mode 100644 index 0000000..ca2313c --- /dev/null +++ b/orion-ops-vue/src/components/preview/EditorPreview.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/orion-ops-vue/src/components/preview/TextPreview.vue b/orion-ops-vue/src/components/preview/TextPreview.vue new file mode 100644 index 0000000..83a3e63 --- /dev/null +++ b/orion-ops-vue/src/components/preview/TextPreview.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/orion-ops-vue/src/components/scheduler/AddSchedulerTask.vue b/orion-ops-vue/src/components/scheduler/AddSchedulerTask.vue new file mode 100644 index 0000000..3fc295c --- /dev/null +++ b/orion-ops-vue/src/components/scheduler/AddSchedulerTask.vue @@ -0,0 +1,330 @@ + + + + + diff --git a/orion-ops-vue/src/components/sftp/FileTransferList.vue b/orion-ops-vue/src/components/sftp/FileTransferList.vue new file mode 100644 index 0000000..a5df8bc --- /dev/null +++ b/orion-ops-vue/src/components/sftp/FileTransferList.vue @@ -0,0 +1,477 @@ + + + + + diff --git a/orion-ops-vue/src/components/sftp/MachineSftpDrawer.vue b/orion-ops-vue/src/components/sftp/MachineSftpDrawer.vue new file mode 100644 index 0000000..8a08f5d --- /dev/null +++ b/orion-ops-vue/src/components/sftp/MachineSftpDrawer.vue @@ -0,0 +1,93 @@ + + + + + diff --git a/orion-ops-vue/src/components/sftp/MachineSftpMain.vue b/orion-ops-vue/src/components/sftp/MachineSftpMain.vue new file mode 100644 index 0000000..8f3baee --- /dev/null +++ b/orion-ops-vue/src/components/sftp/MachineSftpMain.vue @@ -0,0 +1,818 @@ + + + + + diff --git a/orion-ops-vue/src/components/sftp/SftpChmodModal.vue b/orion-ops-vue/src/components/sftp/SftpChmodModal.vue new file mode 100644 index 0000000..62f604a --- /dev/null +++ b/orion-ops-vue/src/components/sftp/SftpChmodModal.vue @@ -0,0 +1,146 @@ + + + + + diff --git a/orion-ops-vue/src/components/sftp/SftpFolderTree.vue b/orion-ops-vue/src/components/sftp/SftpFolderTree.vue new file mode 100644 index 0000000..7ebbeb0 --- /dev/null +++ b/orion-ops-vue/src/components/sftp/SftpFolderTree.vue @@ -0,0 +1,214 @@ + + + + + diff --git a/orion-ops-vue/src/components/sftp/SftpMoveModal.vue b/orion-ops-vue/src/components/sftp/SftpMoveModal.vue new file mode 100644 index 0000000..51f1383 --- /dev/null +++ b/orion-ops-vue/src/components/sftp/SftpMoveModal.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/orion-ops-vue/src/components/sftp/SftpTouchModal.vue b/orion-ops-vue/src/components/sftp/SftpTouchModal.vue new file mode 100644 index 0000000..772c8f5 --- /dev/null +++ b/orion-ops-vue/src/components/sftp/SftpTouchModal.vue @@ -0,0 +1,123 @@ + + + + diff --git a/orion-ops-vue/src/components/sftp/SftpUpload.vue b/orion-ops-vue/src/components/sftp/SftpUpload.vue new file mode 100644 index 0000000..670bf75 --- /dev/null +++ b/orion-ops-vue/src/components/sftp/SftpUpload.vue @@ -0,0 +1,214 @@ + + + + + diff --git a/orion-ops-vue/src/components/system/AddSystemEnvModal.vue b/orion-ops-vue/src/components/system/AddSystemEnvModal.vue new file mode 100644 index 0000000..a05f5a8 --- /dev/null +++ b/orion-ops-vue/src/components/system/AddSystemEnvModal.vue @@ -0,0 +1,147 @@ + + + + + diff --git a/orion-ops-vue/src/components/system/IpConfig.vue b/orion-ops-vue/src/components/system/IpConfig.vue new file mode 100644 index 0000000..47ac052 --- /dev/null +++ b/orion-ops-vue/src/components/system/IpConfig.vue @@ -0,0 +1,174 @@ + + + + + diff --git a/orion-ops-vue/src/components/system/OtherConfig.vue b/orion-ops-vue/src/components/system/OtherConfig.vue new file mode 100644 index 0000000..b118d42 --- /dev/null +++ b/orion-ops-vue/src/components/system/OtherConfig.vue @@ -0,0 +1,146 @@ + + + + + diff --git a/orion-ops-vue/src/components/system/SecurityConfig.vue b/orion-ops-vue/src/components/system/SecurityConfig.vue new file mode 100644 index 0000000..3551a90 --- /dev/null +++ b/orion-ops-vue/src/components/system/SecurityConfig.vue @@ -0,0 +1,197 @@ + + + + + diff --git a/orion-ops-vue/src/components/system/SystemAbout.vue b/orion-ops-vue/src/components/system/SystemAbout.vue new file mode 100644 index 0000000..37bdff4 --- /dev/null +++ b/orion-ops-vue/src/components/system/SystemAbout.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/orion-ops-vue/src/components/system/SystemAnalysis.vue b/orion-ops-vue/src/components/system/SystemAnalysis.vue new file mode 100644 index 0000000..2e7391d --- /dev/null +++ b/orion-ops-vue/src/components/system/SystemAnalysis.vue @@ -0,0 +1,362 @@ + + + + + diff --git a/orion-ops-vue/src/components/system/ThreadMetrics.vue b/orion-ops-vue/src/components/system/ThreadMetrics.vue new file mode 100644 index 0000000..d042368 --- /dev/null +++ b/orion-ops-vue/src/components/system/ThreadMetrics.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/orion-ops-vue/src/components/terminal/TerminalBanner.vue b/orion-ops-vue/src/components/terminal/TerminalBanner.vue new file mode 100644 index 0000000..1161972 --- /dev/null +++ b/orion-ops-vue/src/components/terminal/TerminalBanner.vue @@ -0,0 +1,131 @@ + + + + + diff --git a/orion-ops-vue/src/components/terminal/TerminalBody.vue b/orion-ops-vue/src/components/terminal/TerminalBody.vue new file mode 100644 index 0000000..4497a39 --- /dev/null +++ b/orion-ops-vue/src/components/terminal/TerminalBody.vue @@ -0,0 +1,335 @@ + + + + + diff --git a/orion-ops-vue/src/components/terminal/TerminalHeader.vue b/orion-ops-vue/src/components/terminal/TerminalHeader.vue new file mode 100644 index 0000000..606513c --- /dev/null +++ b/orion-ops-vue/src/components/terminal/TerminalHeader.vue @@ -0,0 +1,188 @@ + + + + + diff --git a/orion-ops-vue/src/components/terminal/TerminalModal.vue b/orion-ops-vue/src/components/terminal/TerminalModal.vue new file mode 100644 index 0000000..f45bd27 --- /dev/null +++ b/orion-ops-vue/src/components/terminal/TerminalModal.vue @@ -0,0 +1,214 @@ + + + + + diff --git a/orion-ops-vue/src/components/terminal/TerminalScreenModal.vue b/orion-ops-vue/src/components/terminal/TerminalScreenModal.vue new file mode 100644 index 0000000..b50a8a6 --- /dev/null +++ b/orion-ops-vue/src/components/terminal/TerminalScreenModal.vue @@ -0,0 +1,185 @@ + + + + + diff --git a/orion-ops-vue/src/components/terminal/TerminalSearch.vue b/orion-ops-vue/src/components/terminal/TerminalSearch.vue new file mode 100644 index 0000000..9dc8d48 --- /dev/null +++ b/orion-ops-vue/src/components/terminal/TerminalSearch.vue @@ -0,0 +1,142 @@ + + + + + diff --git a/orion-ops-vue/src/components/terminal/TerminalSettingModal.vue b/orion-ops-vue/src/components/terminal/TerminalSettingModal.vue new file mode 100644 index 0000000..8cb12db --- /dev/null +++ b/orion-ops-vue/src/components/terminal/TerminalSettingModal.vue @@ -0,0 +1,188 @@ + + + + + diff --git a/orion-ops-vue/src/components/terminal/TerminalView.vue b/orion-ops-vue/src/components/terminal/TerminalView.vue new file mode 100644 index 0000000..db42615 --- /dev/null +++ b/orion-ops-vue/src/components/terminal/TerminalView.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/orion-ops-vue/src/components/terminal/TerminalWatcherModal.vue b/orion-ops-vue/src/components/terminal/TerminalWatcherModal.vue new file mode 100644 index 0000000..65c33b5 --- /dev/null +++ b/orion-ops-vue/src/components/terminal/TerminalWatcherModal.vue @@ -0,0 +1,350 @@ + + + + + diff --git a/orion-ops-vue/src/components/user/AddAlarmGroup.vue b/orion-ops-vue/src/components/user/AddAlarmGroup.vue new file mode 100644 index 0000000..6971fc6 --- /dev/null +++ b/orion-ops-vue/src/components/user/AddAlarmGroup.vue @@ -0,0 +1,192 @@ + + + + + diff --git a/orion-ops-vue/src/components/user/AddUserModal.vue b/orion-ops-vue/src/components/user/AddUserModal.vue new file mode 100644 index 0000000..83d2877 --- /dev/null +++ b/orion-ops-vue/src/components/user/AddUserModal.vue @@ -0,0 +1,190 @@ + + + + + diff --git a/orion-ops-vue/src/components/user/EventLogList.vue b/orion-ops-vue/src/components/user/EventLogList.vue new file mode 100644 index 0000000..c0b383d --- /dev/null +++ b/orion-ops-vue/src/components/user/EventLogList.vue @@ -0,0 +1,287 @@ + + + + + diff --git a/orion-ops-vue/src/components/user/LoginHistory.vue b/orion-ops-vue/src/components/user/LoginHistory.vue new file mode 100644 index 0000000..62a8f7a --- /dev/null +++ b/orion-ops-vue/src/components/user/LoginHistory.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/orion-ops-vue/src/components/user/ResetPassword.vue b/orion-ops-vue/src/components/user/ResetPassword.vue new file mode 100644 index 0000000..65237a0 --- /dev/null +++ b/orion-ops-vue/src/components/user/ResetPassword.vue @@ -0,0 +1,152 @@ + + diff --git a/orion-ops-vue/src/components/user/UserAutoComplete.vue b/orion-ops-vue/src/components/user/UserAutoComplete.vue new file mode 100644 index 0000000..400ef92 --- /dev/null +++ b/orion-ops-vue/src/components/user/UserAutoComplete.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/orion-ops-vue/src/components/user/UserBasicForm.vue b/orion-ops-vue/src/components/user/UserBasicForm.vue new file mode 100644 index 0000000..a87bf08 --- /dev/null +++ b/orion-ops-vue/src/components/user/UserBasicForm.vue @@ -0,0 +1,206 @@ + + + + + diff --git a/orion-ops-vue/src/components/user/UserSelector.vue b/orion-ops-vue/src/components/user/UserSelector.vue new file mode 100644 index 0000000..c207a43 --- /dev/null +++ b/orion-ops-vue/src/components/user/UserSelector.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/orion-ops-vue/src/css/common.less b/orion-ops-vue/src/css/common.less new file mode 100644 index 0000000..599f734 --- /dev/null +++ b/orion-ops-vue/src/css/common.less @@ -0,0 +1,218 @@ +#app { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +::-webkit-scrollbar-track { + //background: rgba(0, 0, 0, .1); + border-radius: 8px; +} + +::-webkit-scrollbar { + -webkit-appearance: none; + width: 5px; + height: 5px; +} + +::-webkit-scrollbar-thumb { + cursor: pointer; + border-radius: 8px; + background: #C8D5E3; + transition: color .2s ease; +} + +.copy-icon-left { + margin-right: 8px; +} + +.copy-icon-right { + margin-left: 8px; +} + +.span-blue { + color: #1890FF !important; +} + +.span-red { + color: #F5222D !important; +} + +.span-light-red { + color: #FF7676 !important; +} + +.pointer { + cursor: pointer !important; +} + +.radius-0 { + border-radius: 0 !important; +} + +.radius-4 { + border-radius: 4px !important; +} + +.radius-8 { + border-radius: 8px !important; +} + +.none { + display: none !important; +} + +.auto-ellipsis { + display: flex; + align-items: center; + align-content: center; +} + +.auto-ellipsis-item { + display: block; + overflow-x: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.normal-label { + display: inline-block; + text-align: right; + color: rgba(0, 0, 0, .85); + font-weight: 400; + font-size: 14px; + line-height: 1.5; +} + +.normal-label::after { + display: inline-block; + content: ':'; + margin-left: 4px; + font-size: 14px; +} + +.required-label::before { + display: inline-block; + content: '*'; + color: #F5222D; + margin-right: 4px; + font-size: 14px; +} + +.normal-description { + color: rgba(0, 0, 0, .45); + font-size: 14px; + line-height: 1.5; +} + +.normal-title { + color: rgba(0, 0, 0, .85); + font-weight: 500; + font-size: 20px; + line-height: 28px; +} + +.flex { + display: flex; +} + +.flex-1 { + flex: 1; +} + +.flex-center { + align-items: center; +} + +.help-text { + font-size: 13px; + display: inline-block; + white-space: nowrap; +} + +.right-menu { + position: absolute; + z-index: 10; + color: #D0EBFF; + + .right-menu-item { + padding: 0 14px; + } +} + +.usn { + user-select: none; +} + +.statistics-description { + margin-top: 4px; + color: rgba(0, 0, 0, .75); + font-size: 18px; + font-weight: 600; + text-align: center; +} + +.send-lf-trigger { + display: block; + margin-right: -8px; + width: 24px; + height: 24px; + padding-top: 5px; + cursor: pointer; + border-radius: 4px; + transition: .2s; +} + +.send-lf-trigger:hover { + background: #E9ECEF; +} + +.send-lf-trigger-enable { + background: #DEE2E6 !important; +} + +.send-lf-trigger-enable:hover { + background: #CED4DA !important; +} + +.command-write-input { + margin-right: 8px; + width: 310px !important; +} + +.text-center { + text-align: center; +} + +.between-input-center { + width: 30px !important; + border-left: 0 !important; + pointer-events: none !important; + background: #FFF !important; + user-select: none !important; +} + +.gray-box-shadow { + box-shadow: 0 1px 4px 0 #D9D9D9; +} + +.line-input { + width: 100%; + height: 100%; + color: #495057; + transition: border-color .15s ease-in-out; + border: none; + border-bottom: 2px solid #CED4DA; + border-radius: 0; + background: transparent; + box-shadow: none; +} + +.line-input:focus { + border-bottom-color: #1890FF; + color: #000; + outline: 0; +} + +.line-input::-webkit-input-placeholder { + color: #999; +} diff --git a/orion-ops-vue/src/css/component.less b/orion-ops-vue/src/css/component.less new file mode 100644 index 0000000..a2312a4 --- /dev/null +++ b/orion-ops-vue/src/css/component.less @@ -0,0 +1,49 @@ +.sftp-transfer-list-popover .ant-popover-inner-content { + padding: 8px 2px 8px 8px; +} + +.sftp-upload-list-popover .ant-popover-inner-content { + padding: 8px 2px 8px 8px; +} + +.profile-content-list-popover .ant-popover-inner-content { + padding: 0; +} + +.machine-content-list-popover .ant-popover-inner-content { + padding: 0; +} + +.ant-modal-draggable { + cursor: grab !important; +} + +.ant-modal-draggable-icon { + font-size: 18px; + margin-right: 8px; + color: #748FFC; +} + +.machine-info-wrapper { + display: flex; + flex-direction: column; + + .machine-info-label { + user-select: none; + display: inline-block; + color: rgba(0, 0, 0.9); + margin-right: 4px; + } + + .machine-info-name-wrapper { + margin-bottom: 2px; + } + + .machine-info-tag-wrapper { + margin-top: 2px; + } + + .machine-info-name-value, .machine-info-tag-value { + color: rgba(0, 0, 0, .7); + } +} diff --git a/orion-ops-vue/src/css/layout.less b/orion-ops-vue/src/css/layout.less new file mode 100644 index 0000000..54ec6c3 --- /dev/null +++ b/orion-ops-vue/src/css/layout.less @@ -0,0 +1,145 @@ +.m0 { + margin: 0 !important; +} + +.mx0 { + margin-left: 0 !important; + margin-right: 0 !important; +} + +.my0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.ml4 { + margin-left: 4px !important; +} + +.mr4 { + margin-right: 4px !important; +} + +.mx4 { + margin: 0 4px !important; +} + +.mx2 { + margin: 0 2px !important; +} + +.my4 { + margin-top: 4px !important; + margin-bottom: 4px !important; +} + +.ml8 { + margin-left: 8px !important; +} + +.mr8 { + margin-right: 8px !important; +} + +.mt8 { + margin-top: 8px !important; +} + +.mt8 { + margin-top: 8px !important; +} + +.mb8 { + margin-bottom: 8px !important; +} + +.mx8 { + margin: 0 8px !important; +} + +.my8 { + margin-top: 8px !important; + margin-bottom: 8px !important; +} + +.ml16 { + margin-left: 16px !important; +} + +.mr16 { + margin-right: 16px !important; +} + +.mx16 { + margin: 0 16px !important; +} + +.my16 { + margin: 16px 0 !important; +} + +.mt16 { + margin-top: 16px !important; +} + +.mb16 { + margin-bottom: 16px !important; +} + +.p0 { + padding: 0 !important; +} + +.px0 { + padding-left: 0 !important; + padding-right: 0 !important; +} + +.py0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.pl4 { + padding-left: 4px !important; +} + +.pr4 { + padding-right: 4px !important; +} + +.px4 { + padding: 0 4px !important; +} + +.pl8 { + padding-left: 8px !important; +} + +.pr8 { + padding-right: 8px !important; +} + +.pt8 { + padding-top: 8px !important; +} + +.px8 { + padding: 0 8px !important; +} + +.pl16 { + padding-left: 16px !important; +} + +.pr16 { + padding-right: 16px !important; +} + +.px16 { + padding: 0 16px !important; +} + +.nowrap { + white-space: nowrap; +} diff --git a/orion-ops-vue/src/css/table.less b/orion-ops-vue/src/css/table.less new file mode 100644 index 0000000..f597f5f --- /dev/null +++ b/orion-ops-vue/src/css/table.less @@ -0,0 +1,92 @@ +.table-search-columns { + padding: 18px; + margin-bottom: 18px; + background-color: #FFF; + box-shadow: 0 1px 4px 0 #D9D9D9; + border-radius: 2px; + + .ant-form-item { + margin: 0; + display: flex; + } + + .ant-form-item-control-wrapper { + flex: 0.8; + } + + .ant-select-selection-selected-value { + word-break: break-all; + white-space: pre-line; + height: 30px; + } + +} + +.table-wrapper { + box-shadow: 0 1px 4px 0 #D9D9D9; + border-radius: 2px; +} + +.table-tools-bar { + background-color: #FFF; + padding: 8px 16px; + height: 56px; + border-radius: 2px 2px 0 0; + display: flex; + align-items: center; + justify-content: space-between; + + .tools-fixed-left { + display: flex; + align-items: center; + } + + .tools-fixed-right { + display: flex; + align-items: center; + } + + .table-title { + font-size: 16px; + opacity: 0.8; + padding-right: 8px; + flex: 1; + white-space: nowrap; + color: rgba(0, 0, 0, 0.85); + } + + .tools-icon { + font-size: 18px; + cursor: pointer; + margin: 0 8px; + transition: .2s; + } + + .tools-icon:hover { + color: #1890FF; + } +} + +.table-main-container { + background-color: #FFF; + padding: 0 16px; + border-radius: 0 0 2px 2px; +} + +.table-main-container.table-scroll-x-auto { + .ant-table-body-inner, .ant-table-body, .ant-table-header { + overflow-x: auto !important; + } +} + +.table-main-container.table-scroll-y-auto { + .ant-table-body-inner, .ant-table-body, .ant-table-header { + overflow-y: auto !important; + } +} + +.table-main-container.table-scroll-auto { + .ant-table-body-inner, .ant-table-body, .ant-table-header { + overflow: auto !important; + } +} diff --git a/orion-ops-vue/src/lib/api.js b/orion-ops-vue/src/lib/api.js new file mode 100644 index 0000000..e37b8f8 --- /dev/null +++ b/orion-ops-vue/src/lib/api.js @@ -0,0 +1,2493 @@ +import $http from './http' + +/** + * web socket + */ +const $ws = { + + /** + * 机器终端 + */ + terminal: param => { + return `${window.location.protocol === 'https:' ? 'wss' : 'ws'}://${window.location.host}/orion/keep-alive/machine/terminal/${param.token}` + }, + + /** + * 机器终端监视 + */ + terminalWatcher: param => { + return `${window.location.protocol === 'https:' ? 'wss' : 'ws'}://${window.location.host}/orion/keep-alive/watcher/terminal/${param.token}` + }, + + /** + * sftp传输列表 + */ + sftpNotify: param => { + return `${window.location.protocol === 'https:' ? 'wss' : 'ws'}://${window.location.host}/orion/keep-alive/sftp/notify/${param.token}` + }, + + /** + * 文件tail + */ + fileTail: param => { + return `${window.location.protocol === 'https:' ? 'wss' : 'ws'}://${window.location.host}/orion/keep-alive/tail/${param.token}` + } + +} + +/** + * url + */ +const $url = { + + /** + * 执行下载文件请求 + */ + fileDownloadExec: param => { + return `/orion/api/file-download/${param.token}/exec` + } + +} + +const $api = { + + /** + * webSocketUrl + */ + ...$ws, + + /** + * url + */ + ...$url, + + /** + * 登录 + */ + login: param => { + return $http.$post('/auth/login', param, { auth: false }) + }, + + /** + * 登出 + */ + logout: () => { + return $http.$get('/auth/logout', null, { auth: false }) + }, + + /** + * 修改密码 + */ + resetPassword: param => { + return $http.$post('/auth/reset', param) + }, + + /** + * 检查token是否有效 + */ + validToken: () => { + return $http.$get('/auth/valid') + }, + + /** + * 获取菜单 + */ + getMenu: () => { + return $http.$get('/common/menu') + }, + + /** + * 获取用户列表 + */ + getUserList: param => { + return $http.$post('/user/list', param) + }, + + /** + * 获取用户详情 + */ + getUserDetail: param => { + return $http.$post('/user/detail', param) + }, + + /** + * 新增用户 + */ + addUser: param => { + return $http.$post('/user/add', param, { + loading: '正在添加...' + }) + }, + + /** + * 更新用户 + */ + updateUser: param => { + return $http.$post('/user/update', param, { + loading: '正在修改...' + }) + }, + + /** + * 更新用户 + */ + updateAvatar: param => { + return $http.$post('/user/update-avatar', param, { + timeout: 600000 + }) + }, + + /** + * 删除用户 + */ + deleteUser: param => { + return $http.$post('/user/delete', param, { + loading: '正在删除...' + }) + }, + + /** + * 更新用户 + */ + updateUserStatus: param => { + return $http.$post('/user/update-status', param) + }, + + /** + * 解锁用户 + */ + unlockUser: param => { + return $http.$post('/user/unlock', param, { + loading: '正在解锁...' + }) + }, + + /** + * 添加机器 + */ + addMachine: param => { + return $http.$post('/machine/add', param, { + loading: '正在添加...' + }) + }, + + /** + * 修改机器 + */ + updateMachine: param => { + return $http.$post('/machine/update', param, { + loading: '正在修改...' + }) + }, + + /** + * 删除机器 + */ + deleteMachine: param => { + return $http.$post('/machine/delete', param, { + loading: '正在删除...' + }) + }, + + /** + * 修改机器状态 + */ + updateMachineStatus: param => { + return $http.$post('/machine/update-status', param) + }, + + /** + * 机器列表 + */ + getMachineList: param => { + return $http.$post('/machine/list', param) + }, + + /** + * 机器详情 + */ + getMachineDetail: param => { + return $http.$post('/machine/detail', param) + }, + + /** + * 复制机器 + */ + copyMachine: param => { + return $http.$post('/machine/copy', param, { + timeout: 600000, + loading: '正在复制...' + }) + }, + + /** + * 测试机器ping + */ + machineTestPing: param => { + return $http.$post('/machine/test-ping', param) + }, + + /** + * 测试机器连接 + */ + machineTestConnect: param => { + return $http.$post('/machine/test-connect', param) + }, + /** + * 直接测试机器ping + */ + machineDirectTestPing: param => { + return $http.$post('/machine/direct-test-ping', param) + }, + + /** + * 直接测试机器连接 + */ + machineDirectConnect: param => { + return $http.$post('/machine/direct-test-connect', param) + }, + + /** + * 添加机器分组 + */ + addMachineGroup: param => { + return $http.$post('/machine-group/add', param) + }, + + /** + * 删除机器分组 + */ + deleteMachineGroup: param => { + return $http.$post('/machine-group/delete', param) + }, + + /** + * 移动机器分组 + */ + moveMachineGroup: param => { + return $http.$post('/machine-group/move', param) + }, + + /** + * 修改机器分组名称 + */ + renameMachineGroup: param => { + return $http.$post('/machine-group/rename', param) + }, + + /** + * 获取机器分组树 + */ + getMachineGroupTree: () => { + return $http.$get('/machine-group/tree') + }, + + /** + * 添加机器分组机器 + */ + addMachineGroupMachine: param => { + return $http.$post('/machine-group/add-machine', param) + }, + + /** + * 删除机器分组机器 + */ + deleteMachineGroupMachine: param => { + return $http.$post('/machine-group/delete-machine', param) + }, + + /** + * 获取终端访问信息 + */ + accessTerminal: param => { + return $http.$post('/terminal/access', param, { + skipErrorMessage: true + }) + }, + + /** + * 获取支持的终端类型 + */ + getTerminalSupportPyt: () => { + return $http.$get('/terminal/support/pty') + }, + + /** + * 获取机器终端配置 + */ + getTerminalSetting: param => { + return $http.$get(`/terminal/get/${param.machineId}`) + }, + + /** + * 修改机器终端配置 + */ + updateTerminalSetting: param => { + return $http.$post('/terminal/update', param, { + skipErrorMessage: true, + loading: '正在修改...' + }) + }, + + /** + * 终端日志列表 + */ + terminalLogList: param => { + return $http.$post('/terminal/log/list', param) + }, + + /** + * 删除终端日志 + */ + deleteTerminalLog: param => { + return $http.$post('/terminal/log/delete', param, { + loading: '正在删除...' + }) + }, + + /** + * 获取终端录屏 base64 + */ + getTerminalScreen: param => { + return $http.$post('/terminal/log/screen', param, { + loading: '数据加载中...' + }) + }, + + /** + * 终端会话列表 + */ + terminalSessionList: param => { + return $http.$post('/terminal/manager/session', param) + }, + + /** + * 强制下线终端 + */ + terminalOffline: param => { + return $http.$post('/terminal/manager/offline', param, { + loading: '正在操作...' + }) + }, + + /** + * 获取终端监视token + */ + getTerminalWatcherToken: param => { + return $http.$post('/terminal/manager/watcher', param, { + loading: '正在建立连接...' + }) + }, + + /** + * sftp 打开连接 + */ + sftpOpen: param => { + return $http.$post('/sftp/open', param, { skipErrorMessage: true }) + }, + + /** + * sftp 文件列表 + */ + sftpList: param => { + return $http.$post('/sftp/list', param) + }, + + /** + * sftp 文件夹列表 + */ + sftpListDir: param => { + return $http.$post('/sftp/list-dir', param) + }, + + /** + * sftp 创建目录 + */ + sftpMkdir: param => { + return $http.$post('/sftp/mkdir', param, { + skipErrorMessage: true, + loading: '正在创建...' + }) + }, + + /** + * sftp 创建文件 + */ + sftpTouch: param => { + return $http.$post('/sftp/touch', param, { + skipErrorMessage: true, + loading: '正在创建...' + }) + }, + + /** + * sftp 移动文件 + */ + sftpMove: param => { + return $http.$post('/sftp/move', param, { + skipErrorMessage: true, + loading: '正在移动...' + }) + }, + + /** + * sftp 删除文件 + */ + sftpRemove: param => { + return $http.$post('/sftp/remove', param, { + loading: '正在删除...' + }) + }, + + /** + * sftp 截断文件 + */ + sftpTruncate: param => { + return $http.$post('/sftp/truncate', param) + }, + + /** + * sftp 修改权限 + */ + sftpChmod: param => { + return $http.$post('/sftp/chmod', param, { + skipErrorMessage: true, + loading: '正在修改...' + }) + }, + + /** + * sftp 修改所有者 + */ + sftpChown: param => { + return $http.$post('/sftp/chown', param) + }, + + /** + * sftp 修改组 + */ + sftpChgrp: param => { + return $http.$post('/sftp/chgrp', param) + }, + + /** + * sftp 检查文件是否存在 + */ + sftpCheckFilePresent: param => { + return $http.$post('/sftp/check-present', param, { + timeout: 18000000 + }) + }, + + /** + * sftp 获取上传文件 accessToken + */ + getSftpUploadToken: param => { + return $http.$post('/sftp/upload/token', param) + }, + + /** + * sftp 上传文件 + */ + sftpUploadExec: param => { + return $http.$post('/sftp/upload/exec', param, { + timeout: 18000000, + loading: '正在上传文件...', + headers: { + 'Content-Type': 'multipart/form-data' + } + }) + }, + + /** + * sftp 下载文件 + */ + sftpDownloadExec: param => { + return $http.$post('/sftp/download/exec', param, { + timeout: 180000, + loading: '正在请求下载文件...' + }) + }, + + /** + * sftp 压缩下载文件 + */ + sftpPackageDownloadExec: param => { + return $http.$post('/sftp/package-download/exec', param, { + timeout: 180000, + loading: '正在执行压缩命令, 执行完成后自动下载' + }) + }, + + /** + * sftp 传输列表 + */ + sftpTransferList: param => { + return $http.$get(`/sftp/transfer/${param.sessionToken}/list`) + }, + + /** + * sftp 传输暂停 + */ + sftpTransferPause: param => { + return $http.$get(`/sftp/transfer/${param.fileToken}/pause`) + }, + + /** + * sftp 传输恢复 + */ + sftpTransferResume: param => { + return $http.$get(`/sftp/transfer/${param.fileToken}/resume`) + }, + + /** + * sftp 传输失败重试 + */ + sftpTransferRetry: param => { + return $http.$get(`/sftp/transfer/${param.fileToken}/retry`) + }, + + /** + * sftp 重新上传 + */ + sftpTransferReUpload: param => { + return $http.$get(`/sftp/transfer/${param.fileToken}/re-upload`) + }, + + /** + * sftp 重新下载 + */ + sftpTransferReDownload: param => { + return $http.$get(`/sftp/transfer/${param.fileToken}/re-download`) + }, + + /** + * sftp 传输暂停全部 + */ + sftpTransferPauseAll: param => { + return $http.$get(`/sftp/transfer/${param.sessionToken}/pause-all`, null, { + timeout: 180000 + }) + }, + + /** + * sftp 传输恢复全部 + */ + sftpTransferResumeAll: param => { + return $http.$get(`/sftp/transfer/${param.sessionToken}/resume-all`, null, { + timeout: 180000 + }) + }, + + /** + * sftp 传输失败重试全部 + */ + sftpTransferRetryAll: param => { + return $http.$get(`/sftp/transfer/${param.sessionToken}/retry-all`, null, { + timeout: 180000 + }) + }, + + /** + * sftp 传输删除(单个) + */ + sftpTransferRemove: param => { + return $http.$get(`/sftp/transfer/${param.fileToken}/remove`) + }, + + /** + * sftp 传输清空(全部) + */ + sftpTransferClear: param => { + return $http.$get(`/sftp/transfer/${param.sessionToken}/clear`) + }, + + /** + * sftp 传输打包 + */ + sftpTransferPackage: param => { + return $http.$get(`/sftp/transfer/${param.sessionToken}/${param.packageType}/package`) + }, + + /** + * 获取文件下载token + */ + getFileDownloadToken: param => { + return $http.$post('/file-download/token', param) + }, + + /** + * 添加机器代理 + */ + addMachineProxy: param => { + return $http.$post('/machine-proxy/add', param, { + loading: '正在添加...' + }) + }, + + /** + * 更新机器代理 + */ + updateMachineProxy: param => { + return $http.$post('/machine-proxy/update', param, { + loading: '正在修改...' + }) + }, + + /** + * 机器代理列表 + */ + getMachineProxyList: param => { + return $http.$post('/machine-proxy/list', param) + }, + + /** + * 机器代理详情 + */ + getMachineProxyDetail: param => { + return $http.$post('/machine-proxy/detail', param) + }, + + /** + * 删除机器代理 + */ + deleteMachineProxy: param => { + return $http.$post('/machine-proxy/delete', param, { + loading: '正在删除...' + }) + }, + + /** + * 添加密钥 + */ + addMachineKey: param => { + return $http.$post('/machine-key/add', param, { + loading: '正在添加...' + }) + }, + + /** + * 更新密钥 + */ + updateMachineKey: param => { + return $http.$post('/machine-key/update', param, { + loading: '正在修改...' + }) + }, + + /** + * 删除密钥 + */ + removeMachineKey: param => { + return $http.$post('/machine-key/remove', param, { + loading: '正在删除...' + }) + }, + + /** + * 查询密钥列表 + */ + getMachineKeyList: param => { + return $http.$post('/machine-key/list', param) + }, + + /** + * 查询密钥详情 + */ + getMachineKeyDetail: param => { + return $http.$post('/machine-key/detail', param) + }, + + /** + * 绑定机器密钥 + */ + bindMachineKey: param => { + return $http.$post('/machine-key/bind', param, { + loading: '正在绑定...' + }) + }, + + /** + * 添加机器环境变量 + */ + addMachineEnv: param => { + return $http.$post('/machine-env/add', param, { + loading: '正在添加...' + }) + }, + + /** + * 更新机器环境变量 + */ + updateMachineEnv: param => { + return $http.$post('/machine-env/update', param, { + timeout: 600000, + loading: '正在修改...' + }) + }, + + /** + * 删除机器环境变量 + */ + deleteMachineEnv: param => { + return $http.$post('/machine-env/delete', param, { + loading: '正在删除...' + }) + }, + + /** + * 获取机器环境变量列表 + */ + getMachineEnvList: param => { + return $http.$post('/machine-env/list', param) + }, + + /** + * 获取机器环境变量详情 + */ + getMachineEnvDetail: param => { + return $http.$post('/machine-env/detail', param) + }, + + /** + * 获取机器环境变量视图 + */ + getMachineEnvView: param => { + return $http.$post('/machine-env/view', param) + }, + + /** + * 保存机器环境变量视图 + */ + saveMachineEnvView: param => { + return $http.$post('/machine-env/view-save', param, { + skipErrorMessage: true, + timeout: 600000, + loading: '正在保存...' + }) + }, + + /** + * 同步机器环境变量 + */ + syncMachineEnv: param => { + return $http.$post('/machine-env/sync', param, { + timeout: 600000, + loading: '正在同步...' + }) + }, + + /** + * 获取历史值列表 + */ + getHistoryValueList: param => { + return $http.$post('/history-value/list', param) + }, + + /** + * 回滚历史值 + */ + rollbackHistoryValue: param => { + return $http.$post('/history-value/rollback', param, { + loading: '正在回滚...' + }) + }, + + /** + * 执行提交 + */ + submitExecTask: param => { + return $http.$post('/batch-exec/submit', param, { + timeout: 600000, + loading: '正在提交...' + }) + }, + + /** + * 执行列表 + */ + getExecList: param => { + return $http.$post('/batch-exec/list', param) + }, + + /** + * 执行详情 + */ + getExecDetail: param => { + return $http.$post('/batch-exec/detail', param) + }, + + /** + * 执行输入 + */ + writeExecTask: param => { + return $http.$post('/batch-exec/write', param) + }, + + /** + * 执行停止 + */ + terminateExecTask: param => { + return $http.$post('/batch-exec/terminate', param, { + loading: '正在停止...' + }) + }, + + /** + * 删除执行任务 + */ + deleteExecTask: param => { + return $http.$post('/batch-exec/delete', param, { + loading: '正在删除...' + }) + }, + + /** + * 获取执行状态 + */ + getExecTaskStatus: param => { + return $http.$post('/batch-exec/list-status', param, { + skipErrorMessage: true + }) + }, + + /** + * 批量上传检查机器以及文件 + */ + checkBatchUploadFiles: param => { + return $http.$post('/batch-upload/check', param, { + timeout: 18000000 + }) + }, + + /** + * 获取批量上传 token + */ + getBatchUploadToken: param => { + return $http.$post('/batch-upload/token', param, { + timeout: 18000000 + }) + }, + + /** + * 执行批量上传 + */ + execBatchUpload: param => { + return $http.$post('/batch-upload/exec', param, { + timeout: 18000000, + headers: { + 'Content-Type': 'multipart/form-data' + } + }) + }, + + /** + * 新增模板 + */ + addTemplate: param => { + return $http.$post('/template/add', param, { + loading: '正在添加...' + }) + }, + + /** + * 修改模板 + */ + updateTemplate: param => { + return $http.$post('/template/update', param, { + loading: '正在修改...' + }) + }, + + /** + * 模板列表 + */ + getTemplateList: param => { + return $http.$post('/template/list', param) + }, + + /** + * 模板详情 + */ + getTemplateDetail: param => { + return $http.$post('/template/detail', param) + }, + + /** + * 删除模板 + */ + deleteTemplate: param => { + return $http.$post('/template/delete', param, { + loading: '正在删除...' + }) + }, + + /** + * 获取 tail token + */ + getTailToken: param => { + return $http.$post('/file-tail/token', param) + }, + + /** + * 添加 tail 文件 + */ + addTailFile: param => { + return $http.$post('/file-tail/add', param, { + loading: '正在添加...' + }) + }, + + /** + * 修改 tail 文件 + */ + updateTailFile: param => { + return $http.$post('/file-tail/update', param, { + loading: '正在修改...' + }) + }, + + /** + * 上传 tail 文件 + */ + uploadTailFile: param => { + return $http.$post('/file-tail/upload', param, { + loading: '正在上传...', + timeout: 18000000, + headers: { + 'Content-Type': 'multipart/form-data' + } + }) + }, + + /** + * 清理文件 ANSI 码 + */ + cleanFileAnsiCode: param => { + return $http.$post('/file-tail/clean-ansi', param, { + skipRespInterceptor: true, + responseType: 'blob', + timeout: 18000000, + headers: { + 'Content-Type': 'multipart/form-data' + } + }) + }, + + /** + * 删除 tail 文件 + */ + deleteTailFile: param => { + return $http.$post('/file-tail/delete', param, { + loading: '正在删除...' + }) + }, + + /** + * 获取 tail 文件列表 + */ + getTailList: param => { + return $http.$post('/file-tail/list', param) + }, + + /** + * 获取 tail 详情 + */ + getTailDetail: param => { + return $http.$post('/file-tail/detail', param) + }, + + /** + * 获取 tail 机器默认配置 + */ + getTailConfig: param => { + return $http.$post('/file-tail/config', param, { skipErrorMessage: true }) + }, + + /** + * tail 输入命令 + */ + writeTailCommand: param => { + return $http.$post('/file-tail/write', param) + }, + + /** + * 应用环境列表 + */ + getProfileList: param => { + return $http.$post('/app-profile/list', param) + }, + + /** + * 应用环境列表 (快速) + */ + fastGetProfileList: param => { + return $http.$get('/app-profile/fast-list', param) + }, + + /** + * 应用环境详情 + */ + getProfileDetail: param => { + return $http.$post('/app-profile/detail', param) + }, + + /** + * 添加应用环境 + */ + addProfile: param => { + return $http.$post('/app-profile/add', param, { + loading: '正在添加...' + }) + }, + + /** + * 修改应用环境 + */ + updateProfile: param => { + return $http.$post('/app-profile/update', param, { + loading: '正在修改...' + }) + }, + + /** + * 删除应用环境 + */ + deleteProfile: param => { + return $http.$post('/app-profile/delete', param, { + loading: '正在删除...' + }) + }, + + /** + * 添加应用变量 + */ + addAppEnv: param => { + return $http.$post('/app-env/add', param, { + loading: '正在添加...' + }) + }, + + /** + * 删除应用变量 + */ + deleteAppEnv: param => { + return $http.$post('/app-env/delete', param, { + loading: '正在删除...' + }) + }, + + /** + * 修改应用变量 + */ + updateAppEnv: param => { + return $http.$post('/app-env/update', param, { + loading: '正在修改...' + }) + }, + + /** + * 应用环境变量列表 + */ + getAppEnvList: param => { + return $http.$post('/app-env/list', param) + }, + + /** + * 应用环境变量详情 + */ + getAppEnvDetail: param => { + return $http.$post('/app-env/detail', param) + }, + + /** + * 同步应用环境变量 + */ + syncAppEnv: param => { + return $http.$post('/app-env/sync', param, { + timeout: 600000, + loading: '正在同步...' + }) + }, + + /** + * 应用环境变量视图 + */ + getAppEnvView: param => { + return $http.$post('/app-env/view', param) + }, + + /** + * 应用环境变量视图保存 + */ + saveAppEnvView: param => { + return $http.$post('/app-env/view-save', param, { + skipErrorMessage: true, + timeout: 600000, + loading: '正在保存...' + }) + }, + + /** + * 添加应用版本仓库 + */ + addRepository: param => { + return $http.$post('/app-repo/add', param, { + loading: '正在添加...' + }) + }, + + /** + * 修改应用版本仓库 + */ + updateRepository: param => { + return $http.$post('/app-repo/update', param, { + timeout: 600000, + loading: '正在修改...' + }) + }, + + /** + * 删除版本仓库 + */ + deleteRepository: param => { + return $http.$post('/app-repo/delete', param, { + timeout: 600000, + loading: '正在删除...' + }) + }, + + /** + * 获取版本仓库列表 + */ + getRepositoryList: param => { + return $http.$post('/app-repo/list', param) + }, + + /** + * 获取版本仓库详情 + */ + getRepositoryDetail: param => { + return $http.$post('/app-repo/detail', param) + }, + + /** + * 初始化版本仓库 + */ + initRepository: param => { + return $http.$post('/app-repo/init', param, { + timeout: 600000, + loading: '正在初始化...' + }) + }, + + /** + * 重新初始化版本仓库 + */ + reInitRepository: param => { + return $http.$post('/app-repo/re-init', param, { + timeout: 600000, + loading: '正在初始化...' + }) + }, + + /** + * 清空仓库 + */ + cleanRepository: param => { + return $http.$post('/app-repo/clean', param, { + timeout: 600000, + loading: '正在清空...' + }) + }, + + /** + * 获取版本仓库分支和提交记录信息 + */ + getRepositoryInfo: param => { + return $http.$post('/app-repo/info', param) + }, + + /** + * 获取版本仓库分支列表 + */ + getRepositoryBranchList: param => { + return $http.$post('/app-repo/branch', param) + }, + + /** + * 获取版本仓库提交列表 + */ + getRepositoryCommitList: param => { + return $http.$post('/app-repo/commit', param) + }, + + /** + * 添加应用 + */ + addApp: param => { + return $http.$post('/app-info/add', param, { + loading: '正在添加...' + }) + }, + + /** + * 更新应用 + */ + updateApp: param => { + return $http.$post('/app-info/update', param, { + loading: '正在修改...' + }) + }, + + /** + * 更新应用排序 + */ + adjustAppSort: param => { + return $http.$post('/app-info/sort', param) + }, + + /** + * 删除应用 + */ + deleteApp: param => { + return $http.$post('/app-info/delete', param, { + loading: '正在删除...' + }) + }, + + /** + * 应用列表 + */ + getAppList: param => { + return $http.$post('/app-info/list', param) + }, + + /** + * 应用机器列表 + */ + getAppMachineList: param => { + return $http.$post('/app-info/list-machine', param) + }, + + /** + * 获取应用 + */ + getAppDetail: param => { + return $http.$post('/app-info/detail', param) + }, + + /** + * 配置应用 + */ + configApp: param => { + return $http.$post('/app-info/config', param, { + timeout: 600000, + loading: '正在保存...' + }) + }, + + /** + * 同步应用 + */ + syncApp: param => { + return $http.$post('/app-info/sync', param, { + timeout: 600000, + loading: '正在同步...' + }) + }, + + /** + * 复制应用 + */ + copyApp: param => { + return $http.$post('/app-info/copy', param, { + timeout: 600000, + loading: '正在复制...' + }) + }, + + /** + * 删除应用机器 + */ + deleteAppMachine: param => { + return $http.$post('/app-info/delete-machine', param, { + loading: '正在删除...' + }) + }, + + /** + * 获取应用机器id + */ + getAppMachineId: param => { + return $http.$post('/app-info/get-machine-id', param) + }, + + /** + * 提交应用构建 + */ + submitAppBuild: param => { + return $http.$post('/app-build/submit', param, { + timeout: 600000, + loading: '正在提交...' + }) + }, + + /** + * 应用操作详情 + */ + getAppActionDetail: param => { + return $http.$post('/app-action-log/detail', param) + }, + + /** + * 应用操作状态 + */ + getAppActionStatus: param => { + return $http.$post('/app-action-log/status', param, { + skipErrorMessage: true + }) + }, + + /** + * 应用构建列表 + */ + getAppBuildList: param => { + return $http.$post('/app-build/list', param) + }, + + /** + * 应用构建详情 + */ + getAppBuildDetail: param => { + return $http.$post('/app-build/detail', param) + }, + + /** + * 获取应用构建状态 + */ + getAppBuildStatus: param => { + return $http.$post('/app-build/status', param, { + skipErrorMessage: true + }) + }, + + /** + * 停止应用构建 + */ + terminateAppBuild: param => { + return $http.$post('/app-build/terminate', param, { + loading: '正在停止...' + }) + }, + + /** + * 应用构建输入命令 + */ + writeAppBuild: param => { + return $http.$post('/app-build/write', param) + }, + + /** + * 删除应用构建 + */ + deleteAppBuild: param => { + return $http.$post('/app-build/delete', param, { + loading: '正在删除...' + }) + }, + + /** + * 重新构建应用 + */ + rebuildApp: param => { + return $http.$post('/app-build/rebuild', param, { + timeout: 600000, + loading: '正在重新构建...' + }) + }, + + /** + * 获取发布构建列表 + */ + getBuildReleaseList: param => { + return $http.$post('/app-build/release-list', param) + }, + + /** + * 应用构建状态列表 + */ + getAppBuildStatusList: param => { + return $http.$post('/app-build/list-status', param, { + skipErrorMessage: true + }) + }, + + /** + * 应用发布列表 + */ + getAppReleaseList: param => { + return $http.$post('/app-release/list', param) + }, + + /** + * 应用发布机器列表 + */ + getAppReleaseMachineList: param => { + return $http.$post('/app-release/list-machine', param) + }, + + /** + * 应用发布详情 + */ + getAppReleaseDetail: param => { + return $http.$post('/app-release/detail', param) + }, + + /** + * 应用发布机器详情 + */ + getAppReleaseMachineDetail: param => { + return $http.$post('/app-release/machine-detail', param) + }, + + /** + * 提交应用发布 + */ + submitAppRelease: param => { + return $http.$post('/app-release/submit', param, { + timeout: 600000, + loading: '正在提交...' + }) + }, + + /** + * 复制应用发布 + */ + copyAppRelease: param => { + return $http.$post('/app-release/copy', param, { + timeout: 600000, + loading: '正在复制...' + }) + }, + + /** + * 审核应用发布 + */ + auditAppRelease: param => { + return $http.$post('/app-release/audit', param, { + loading: '正在操作...' + }) + }, + + /** + * 执行应用发布 + */ + runnableAppRelease: param => { + return $http.$post('/app-release/runnable', param, { + loading: '正在执行...' + }) + }, + + /** + * 应用取消定时发布 + */ + cancelAppTimedRelease: param => { + return $http.$post('/app-release/cancel-timed', param, { + loading: '正在取消...' + }) + }, + + /** + * 设置定时发布时间 + */ + setAppTimedRelease: param => { + return $http.$post('/app-release/set-timed', param, { + loading: '正在设置...' + }) + }, + + /** + * 应用回滚发布 + */ + rollbackAppRelease: param => { + return $http.$post('/app-release/rollback', param, { + timeout: 600000, + loading: '正在提交...' + }) + }, + + /** + * 删除应用发布 + */ + deleteAppRelease: param => { + return $http.$post('/app-release/delete', param, { + loading: '正在删除...' + }) + }, + + /** + * 应用发布停止 + */ + terminateAppRelease: param => { + return $http.$post('/app-release/terminate', param, { + loading: '正在停止...' + }) + }, + + /** + * 应用发布机器停止 + */ + terminateAppReleaseMachine: param => { + return $http.$post('/app-release/terminate-machine', param, { + loading: '正在停止...' + }) + }, + + /** + * 应用发布机器跳过 + */ + skipAppReleaseMachine: param => { + return $http.$post('/app-release/skip-machine', param, { + loading: '正在跳过...' + }) + }, + + /** + * 应用发布机器输入命令 + */ + writeAppReleaseMachine: param => { + return $http.$post('/app-release/write-machine', param) + }, + + /** + * 应用发布列表状态 + */ + getAppReleaseListStatus: param => { + return $http.$post('/app-release/list-status', param, { + skipErrorMessage: true + }) + }, + + /** + * 应用发布状态 + */ + getAppReleaseStatus: param => { + return $http.$post('/app-release/status', param, { + skipErrorMessage: true + }) + }, + + /** + * 应用发布机器列表状态 + */ + getAppReleaseMachineListStatus: param => { + return $http.$post('/app-release/list-machine-status', param, { + skipErrorMessage: true + }) + }, + + /** + * 应用发布机器状态 + */ + getAppReleaseMachineStatus: param => { + return $http.$post('/app-release/machine-status', param, { + skipErrorMessage: true + }) + }, + + /** + * 首页统计信息 + */ + getHomeStatistics: param => { + return $http.$post('/statistics/home', param, { + skipErrorMessage: true + }) + }, + + /** + * 调度任务统计信息 + */ + getSchedulerTaskStatistics: param => { + return $http.$post('/statistics/scheduler-task', param) + }, + + /** + * 应用构建统计信息 指标 + */ + getAppBuildStatisticsMetrics: param => { + return $http.$post('/statistics/app-build/metrics', param) + }, + + /** + * 应用构建统计信息 视图 + */ + getAppBuildStatisticsView: param => { + return $http.$post('/statistics/app-build/view', param) + }, + + /** + * 应用构建统计信息 折线图 + */ + getAppBuildStatisticsChart: param => { + return $http.$post('/statistics/app-build/chart', param) + }, + + /** + * 应用发布统计信息 指标 + */ + getAppReleaseStatisticsMetrics: param => { + return $http.$post('/statistics/app-release/metrics', param) + }, + + /** + * 应用发布统计信息 视图 + */ + getAppReleaseStatisticsView: param => { + return $http.$post('/statistics/app-release/view', param) + }, + + /** + * 应用发布统计信息 折线图 + */ + getAppReleaseStatisticsChart: param => { + return $http.$post('/statistics/app-release/chart', param) + }, + + /** + * 应用流水线统计信息 指标 + */ + getAppPipelineTaskStatisticsMetrics: param => { + return $http.$post('/statistics/app-pipeline/metrics', param) + }, + + /** + * 应用流水线统计信息 视图 + */ + getAppPipelineTaskStatisticsView: param => { + return $http.$post('/statistics/app-pipeline/view', param) + }, + + /** + * 应用流水线统计信息 折线图 + */ + getAppPipelineTaskStatisticsChart: param => { + return $http.$post('/statistics/app-pipeline/chart', param) + }, + + /** + * 获取操作日志列表 + */ + getEventLogList: param => { + return $http.$post('/event-log/list', param) + }, + + /** + * 添加系统环境变量 + */ + addSystemEnv: param => { + return $http.$post('/system-env/add', param, { + loading: '正在添加...' + }) + }, + + /** + * 更新系统环境变量 + */ + updateSystemEnv: param => { + return $http.$post('/system-env/update', param, { + timeout: 600000, + loading: '正在修改...' + }) + }, + + /** + * 删除系统环境变量 + */ + deleteSystemEnv: param => { + return $http.$post('/system-env/delete', param, { + loading: '正在删除...' + }) + }, + + /** + * 获取系统环境变量列表 + */ + getSystemEnvList: param => { + return $http.$post('/system-env/list', param) + }, + + /** + * 获取系统环境变量详情 + */ + getSystemEnvDetail: param => { + return $http.$post('/system-env/detail', param) + }, + + /** + * 获取系统环境变量视图 + */ + getSystemEnvView: param => { + return $http.$post('/system-env/view', param) + }, + + /** + * 保存系统环境变量视图 + */ + saveSystemEnvView: param => { + return $http.$post('/system-env/view-save', param, { + skipErrorMessage: true, + timeout: 600000, + loading: '正在保存...' + }) + }, + + /** + * 获取 ip 配置 + */ + getIpInfo: () => { + return $http.$get('/system/ip-info') + }, + + /** + * 配置 ip 列表 + */ + configIpList: param => { + return $http.$post('/system/config-ip', param, { + loading: '正在保存...' + }) + }, + + /** + * 获取系统分析信息 + */ + getSystemAnalysis: () => { + return $http.$get('/system/get-system-analysis') + }, + + /** + * 重新进行系统统计分析 + */ + reAnalysisSystem: () => { + return $http.$get('/system/re-analysis', null, { + timeout: 600000 + }) + }, + + /** + * 清理系统文件 + */ + cleanSystemFile: param => { + return $http.$post('/system/clean-system-file', param) + }, + + /** + * 修改系统配置项 + */ + updateSystemOption: param => { + return $http.$post('/system/update-system-option', param) + }, + + /** + * 获取系统配置项 + */ + getSystemOptions: () => { + return $http.$get('/system/get-system-options') + }, + + /** + * 获取系统线程池指标 + */ + getSystemThreadMetrics: () => { + return $http.$get('/system/get-thread-metrics') + }, + + /** + * 获取系统信息 + */ + getSystemAbout: () => { + return $http.$get('/system/about') + }, + + /** + * 获取 cron 下几次执行时间 + */ + getCronNextTime: param => { + return $http.$post('/scheduler/cron-next', param) + }, + + /** + * 添加调度任务 + */ + addSchedulerTask: param => { + return $http.$post('/scheduler/add', param, { + loading: '正在保存...' + }) + }, + + /** + * 修改调度任务 + */ + updateSchedulerTask: param => { + return $http.$post('/scheduler/update', param, { + loading: '正在修改...' + }) + }, + + /** + * 获取调度任务详情 + */ + getSchedulerTask: param => { + return $http.$post('/scheduler/get', param) + }, + + /** + * 获取调度任务列表 + */ + getSchedulerTaskList: param => { + return $http.$post('/scheduler/list', param) + }, + + /** + * 更新调度任务状态 + */ + updateSchedulerTaskStatus: param => { + return $http.$post('/scheduler/update-status', param, { + loading: '正在更新...' + }) + }, + + /** + * 删除调度任务 + */ + deleteSchedulerTask: param => { + return $http.$post('/scheduler/delete', param, { + loading: '正在删除...' + }) + }, + + /** + * 手动触发调度任务 + */ + manualTriggerSchedulerTask: param => { + return $http.$post('/scheduler/manual-trigger', param, { + loading: '正在触发...' + }) + }, + + /** + * 查询调度任务执行列表 + */ + getSchedulerTaskRecordList: param => { + return $http.$post('/scheduler-record/list', param) + }, + + /** + * 查询调度任务执行详情 + */ + getSchedulerTaskRecordDetail: param => { + return $http.$post('/scheduler-record/detail', param) + }, + + /** + * 查询调度任务机器列表 + */ + getSchedulerTaskMachinesRecordList: param => { + return $http.$post('/scheduler-record/machines', param) + }, + + /** + * 查询调度任务状态 + */ + getSchedulerTaskRecordStatus: param => { + return $http.$post('/scheduler-record/list-status', param, { + skipErrorMessage: true + }) + }, + + /** + * 查询调度任务机器明细状态 + */ + getSchedulerTaskMachinesRecordStatus: param => { + return $http.$post('/scheduler-record/machines-status', param, { + skipErrorMessage: true + }) + }, + + /** + * 删除调度任务明细 + */ + deleteSchedulerTaskRecord: param => { + return $http.$post('/scheduler-record/delete', param, { + loading: '正在删除...' + }) + }, + + /** + * 停止所有调度任务机器 + */ + terminateAllSchedulerTaskRecord: param => { + return $http.$post('/scheduler-record/terminate-all', param, { + loading: '正在停止...' + }) + }, + + /** + * 停止单个调度任务机器 + */ + terminateMachineSchedulerTaskRecord: param => { + return $http.$post('/scheduler-record/terminate-machine', param, { + loading: '正在停止...' + }) + }, + + /** + * 跳过单个调度任务机器 + */ + skipMachineSchedulerTaskRecord: param => { + return $http.$post('/scheduler-record/skip-machine', param, { + loading: '正在跳过...' + }) + }, + + /** + * 发送调度任务机器命令 + */ + writeMachineSchedulerTaskRecord: param => { + return $http.$post('/scheduler-record/write-machine', param) + }, + + /** + * 获取站内信未读数量 + */ + getWebSideMessageUnreadCount: () => { + return $http.$get('/message/unread-count', null, { + skipErrorMessage: true + }) + }, + + /** + * 设置站内信全部已读 + */ + setWebSideMessageAllRead: () => { + return $http.$get('/message/set-all-read') + }, + + /** + * 设置已读站内信 + */ + setMessageRead: params => { + return $http.$post('/message/read', params, { + skipErrorMessage: true + }) + }, + + /** + * 删除全部已读站内信 + */ + deleteAllReadMessage: () => { + return $http.$get('/message/delete-all-read') + }, + + /** + * 删除站内信 + */ + deleteWebSideMessage: param => { + return $http.$post('/message/delete', param) + }, + + /** + * 获取站内信详情 + */ + getWebSideMessageDetail: param => { + return $http.$post('/message/detail', param) + }, + + /** + * 获取站内信列表 + */ + getWebSideMessageList: param => { + return $http.$post('/message/list', param) + }, + + /** + * 获取最新站内信 + */ + getNewMessage: param => { + return $http.$post('/message/get-new-message', param) + }, + + /** + * 获取更多站内信 + */ + getMoreMessage: param => { + return $http.$post('/message/get-more-message', param) + }, + + /** + * 轮询获取站内信 + */ + pollWebSideMessage: param => { + return $http.$post('/message/poll-new-message', param, { + skipErrorMessage: true + }) + }, + + /** + * 新增应用流水线 + */ + addAppPipeline: param => { + return $http.$post('/app-pipeline/add', param, { + loading: '正在保存...' + }) + }, + + /** + * 修改应用流水线 + */ + updateAppPipeline: param => { + return $http.$post('/app-pipeline/update', param, { + loading: '正在保存...' + }) + }, + + /** + * 获取应用流水线列表 + */ + getAppPipelineList: param => { + return $http.$post('/app-pipeline/list', param) + }, + + /** + * 获取应用流水线详情 + */ + getAppPipelineDetail: param => { + return $http.$post('/app-pipeline/get', param) + }, + + /** + * 删除应用流水线 + */ + deleteAppPipeline: param => { + return $http.$post('/app-pipeline/delete', param, { + loading: '正在删除...' + }) + }, + + /** + * 获取应用流水线任务列表 + */ + getAppPipelineTaskList: param => { + return $http.$post('/app-pipeline-task/list', param) + }, + + /** + * 获取应用流水线任务详情 + */ + getAppPipelineTaskDetail: param => { + return $http.$post('/app-pipeline-task/detail', param) + }, + + /** + * 获取应用流水线任务详情 + */ + getAppPipelineTaskDetails: param => { + return $http.$post('/app-pipeline-task/task-details', param) + }, + + /** + * 提交执行应用流水线任务 + */ + submitAppPipelineTask: param => { + return $http.$post('/app-pipeline-task/submit', param, { + timeout: 600000, + loading: '正在提交...' + }) + }, + + /** + * 审核应用流水线任务 + */ + auditAppPipelineTask: param => { + return $http.$post('/app-pipeline-task/audit', param, { + loading: '正在操作...' + }) + }, + + /** + * 复制应用流水线任务 + */ + copyAppPipelineTask: param => { + return $http.$post('/app-pipeline-task/copy', param, { + timeout: 600000, + loading: '正在复制...' + }) + }, + + /** + * 执行应用流水线任务 + */ + execAppPipelineTask: param => { + return $http.$post('/app-pipeline-task/exec', param, { + loading: '正在执行...' + }) + }, + + /** + * 删除应用流水线任务 + */ + deleteAppPipelineTask: param => { + return $http.$post('/app-pipeline-task/delete', param, { + loading: '正在删除...' + }) + }, + + /** + * 设置应用流水线定时任务 + */ + setAppPipelineTaskTimedExec: param => { + return $http.$post('/app-pipeline-task/set-timed', param, { + loading: '正在设置...' + }) + }, + + /** + * 取消应用流水线定时任务 + */ + cancelAppPipelineTaskTimedExec: param => { + return $http.$post('/app-pipeline-task/cancel-timed', param, { + loading: '正在取消...' + }) + }, + + /** + * 停止执行应用流水线任务 + */ + terminateAppPipelineTask: param => { + return $http.$post('/app-pipeline-task/terminate', param, { + loading: '正在停止...' + }) + }, + + /** + * 停止执行应用流水线任务部分操作 + */ + terminateAppPipelineTaskDetail: param => { + return $http.$post('/app-pipeline-task/terminate-detail', param, { + loading: '正在停止...' + }) + }, + + /** + * 停止执行应用流水线任务部分操作 + */ + skipAppPipelineTaskDetail: param => { + return $http.$post('/app-pipeline-task/skip-detail', param, { + loading: '正在跳过...' + }) + }, + + /** + * 应用流水线任务状态 + */ + geAppPipelineTaskStatus: param => { + return $http.$post('/app-pipeline-task/status', param, { + skipErrorMessage: true + }) + }, + + /** + * 应用流水线任务状态列表 + */ + getAppPipelineTaskListStatus: param => { + return $http.$post('/app-pipeline-task/list-status', param, { + skipErrorMessage: true + }) + }, + + /** + * 应用流水线任务日志 + */ + getAppPipelineTaskLog: param => { + return $http.$post('/app-pipeline-task/log', param) + }, + + /** + * 清理数据 + */ + clearData: param => { + return $http.$post('/data-clear/clear', param, { + loading: '正在清理...' + }) + }, + + /** + * 导出数据 + */ + exportData: param => { + return $http.$export('/data-export/export', param) + }, + + /** + * 获取导入模板 + */ + getImportTemplate: param => { + return $http.$get('/data-import/get-template', param, { + skipRespInterceptor: true, + timeout: 600000, + responseType: 'blob' + }) + }, + + /** + * 检查导入数据 + */ + checkImportData: param => { + return $http.$post('/data-import/check-data', param, { + timeout: 18000000, + headers: { + 'Content-Type': 'multipart/form-data' + } + }) + }, + + /** + * 导入数据 + */ + importData: param => { + return $http.$post('/data-import/import', param) + }, + + /** + * 取消导入数据 + */ + cancelImportData: param => { + return $http.$post('/data-import/cancel-import', param) + }, + + /** + * 获取机器监控列表 + */ + getMachineMonitorList: param => { + return $http.$post('/monitor/list', param) + }, + + /** + * 获取机器监控配置 + */ + getMachineMonitorConfig: param => { + return $http.$get('/monitor/get-config', param) + }, + + /** + * 设置机器监控配置 + */ + setMachineMonitorConfig: param => { + return $http.$post('/monitor/set-config', param) + }, + + /** + * 测试连接监控 + */ + testPingMachineMonitor: param => { + return $http.$post('/monitor/test', param, { + skipErrorMessage: true + }) + }, + + /** + * 安装机器监控插件 + */ + installMachineMonitorAgent: param => { + return $http.$post('/monitor/install', param) + }, + + /** + * 检测机器监控插件状态 + */ + checkMachineMonitorAgentStatus: param => { + return $http.$post('/monitor/check', param) + }, + + /** + * 查询机器监控指标 + */ + getMachineMonitorMetrics: param => { + return $http.$get('/monitor-endpoint/metrics', param) + }, + + /** + * 查询机器 负载 + */ + getMachineMonitorLoad: param => { + return $http.$get('/monitor-endpoint/load', param) + }, + + /** + * 查询机器 top 进程 + */ + getMachineMonitorTop: param => { + return $http.$get('/monitor-endpoint/top', param) + }, + + /** + * 查询机器硬盘名称 + */ + getMachineDiskName: param => { + return $http.$get('/monitor-endpoint/disk-name', param) + }, + + /** + * 查询机器cpu图表 + */ + getMachineMonitorCpuChart: param => { + return $http.$post('/monitor-endpoint/chart-cpu', param) + }, + + /** + * 查询机器内存图表 + */ + getMachineMonitorMemoryChart: param => { + return $http.$post('/monitor-endpoint/chart-memory', param) + }, + + /** + * 查询机器网络图表 + */ + getMachineMonitorNetChart: param => { + return $http.$post('/monitor-endpoint/chart-net', param) + }, + + /** + * 查询机器硬盘图表 + */ + getMachineMonitorDiskChart: param => { + return $http.$post('/monitor-endpoint/chart-disk', param) + }, + + /** + * 添加 webhook 配置 + */ + addWebhookConfig: param => { + return $http.$post('/webhook-config/add', param, { + loading: '正在保存...' + }) + }, + + /** + * 修改 webhook 配置 + */ + updateWebhookConfig: param => { + return $http.$post('/webhook-config/update', param, { + loading: '正在修改...' + }) + }, + + /** + * 删除 webhook 配置 + */ + deleteWebhookConfig: param => { + return $http.$post('/webhook-config/delete', param, { + loading: '正在删除...' + }) + }, + + /** + * 获取 webhook 详情 + */ + getWebhookConfigDetail: param => { + return $http.$post('/webhook-config/get', param) + }, + + /** + * 获取 webhook 列表 + */ + getWebhookConfigList: param => { + return $http.$post('/webhook-config/list', param) + }, + + /** + * 添加报警组配置 + */ + addAlarmGroup: param => { + return $http.$post('/alarm-group/add', param, { + loading: '正在保存...' + }) + }, + + /** + * 修改报警组配置 + */ + updateAlarmGroup: param => { + return $http.$post('/alarm-group/update', param, { + loading: '正在修改...' + }) + }, + + /** + * 删除报警组配置 + */ + deleteAlarmGroup: param => { + return $http.$post('/alarm-group/delete', param, { + loading: '正在删除...' + }) + }, + + /** + * 获取报警组详情 + */ + getAlarmGroupDetail: param => { + return $http.$post('/alarm-group/get', param) + }, + + /** + * 获取报警组列表 + */ + getAlarmGroupList: param => { + return $http.$post('/alarm-group/list', param) + }, + + /** + * 获取机器报警配置 + */ + getMachineAlarmConfig: param => { + return $http.$get('/machine-alarm/get-config', param) + }, + + /** + * 设置机器报警配置 + */ + setMachineAlarmConfig: param => { + return $http.$post('/machine-alarm/set-alarm-config', param, { + loading: '正在修改...' + }) + }, + + /** + * 设置机器报警联系组 + */ + setMachineAlarmGroup: param => { + return $http.$post('/machine-alarm/set-group-config', param, { + loading: '正在修改...' + }) + }, + + /** + * 获取机器报警记录 + */ + getMachineAlarmHistory: param => { + return $http.$post('/machine-alarm/history', param) + }, + + /** + * 触发机器报警通知 + */ + triggerMachineAlarmNotify: param => { + return $http.$post('/machine-alarm/trigger-alarm-notify', param, { + loading: '正在通知...' + }) + } + +} + +export default $api diff --git a/orion-ops-vue/src/lib/chart.js b/orion-ops-vue/src/lib/chart.js new file mode 100644 index 0000000..2bc4c9e --- /dev/null +++ b/orion-ops-vue/src/lib/chart.js @@ -0,0 +1,56 @@ +import { Chart } from '@antv/g2' +import { formatSecond } from '@/lib/utils' + +/** + * 渲染时间戳对象折现图 + */ +export function timestampRender(id, chatObject, chartField, timeFormatter, valueFormatter, tooltipFormatter, renderData) { + let chart = chatObject[chartField] + const needInit = !chart + if (needInit) { + chart = chatObject[chartField] = new Chart({ + container: id, + autoFit: true + }) + chart.animate(false) + chart.scale({ + time: { + tickCount: 6 + }, + value: { + nice: true + } + }) + if (timeFormatter) { + chart.axis('time', { + label: { + formatter: timeFormatter + } + }) + } else { + chart.axis('time', false) + } + if (valueFormatter) { + chart.axis('value', { + label: { + formatter: valueFormatter + } + }) + } else { + chart.axis('value', false) + } + chart.tooltip({ + title: (title, datum) => formatSecond(datum.time, 'yyyy-MM-dd HH:mm:ss'), + customItems: (items) => { + tooltipFormatter(items[0]) + return items + } + }) + chart.line().position('time*value') + chart.data(renderData) + chart.render() + } else { + chart.changeData(renderData) + chart.render() + } +} diff --git a/orion-ops-vue/src/lib/directive.js b/orion-ops-vue/src/lib/directive.js new file mode 100644 index 0000000..93a3aa3 --- /dev/null +++ b/orion-ops-vue/src/lib/directive.js @@ -0,0 +1,122 @@ +import Vue from 'vue' + +/** + * 设置title data-title v-title + */ +Vue.directive('title', { + inserted: function(el, binding) { + document.title = el.dataset.title + } +}) + +/** + * 限制input只能输入正则匹配的 + */ +Vue.directive('limit-pattern', limitPattern()) + +/** + * 限制input只能输入正整数 + */ +Vue.directive('limit-integer', limitPattern(/^(0+)|[^\d]+/g)) + +/** + * 限制input输入n位小数 + */ +Vue.directive('limit-decimal', { + inserted: function(el, binding, vnode) { + // input外层的div + const input = el.tagName === 'INPUT' ? el : el.querySelector('input') + input.addEventListener('keyup', function() { + const reg = new RegExp('\\d+(\\.\\d{0,' + binding.value + '})?') + input.value = input.value.match(reg) ? input.value.match(reg)[0] : '' + // 手动触发数据的双向绑定 + if (vnode.componentInstance) { + vnode.componentInstance.stateValue = input.value + } else { + vnode.elm.dispatchEvent(new CustomEvent('input', input.value)) + } + }) + + input.addEventListener('afterpaste', function() { + const reg = new RegExp('\\d+(\\.\\d{0,' + binding.value + '})?') + input.value = input.value.match(reg) ? input.value.match(reg)[0] : '' + // 手动触发数据的双向绑定 + if (vnode.componentInstance) { + vnode.componentInstance.stateValue = input.value + } else { + vnode.elm.dispatchEvent(new CustomEvent('input', input.value)) + } + }) + } +}) + +/** + * 可拖拽模态框 + */ +Vue.directive('drag-modal', (el, bindings, vnode) => { + Vue.nextTick(() => { + const { + visible, + destroyOnClose + } = vnode.componentInstance + // 防止未定义 destroyOnClose 关闭弹窗时dom未被销毁, 指令被重复调用 + if (!visible) return + const modal = el.getElementsByClassName('ant-modal')[0] + const draggable = el.getElementsByClassName('ant-modal-draggable')[0] + + let left = 0 + let top = 0 + // 未定义 destroyOnClose 时, dom未被销毁, 关闭弹窗再次打开, 弹窗会停留在上一次拖动的位置 + if (!destroyOnClose) { + left = modal.left || 0 + top = modal.top || 0 + } + // top 初始值为 offsetTop + top = top || modal.offsetTop + // 点击title部分拖动 + draggable.onmousedown = e => { + const startX = e.clientX + const startY = e.clientY + // draggable.left = draggable.offsetLeft + // draggable.top = draggable.offsetTop + el.onmousemove = event => { + const endX = event.clientX + const endY = event.clientY + // modal.left = draggable.left + (endX - startX) + left + // modal.top = draggable.top + (endY - startY) + top + modal.left = (endX - startX) + left + modal.top = (endY - startY) + top + modal.style.left = modal.left + 'px' + modal.style.top = modal.top + 'px' + } + el.onmouseup = event => { + left = modal.left + top = modal.top + el.onmousemove = null + el.onmouseup = null + draggable.releaseCapture && draggable.releaseCapture() + } + draggable.setCapture && draggable.setCapture() + } + }) +}) + +function limitPattern(pattern) { + return { + inserted: function(el, binding, vnode) { + // input外层的div + const input = el.tagName === 'INPUT' ? el : el.querySelector('input') + input.addEventListener('keyup', function() { + input.value = input.value.replace(pattern || binding.value, '') + // 手动触发数据的双向绑定 + vnode.context.$nextTick(() => { + if (vnode.componentInstance) { + vnode.componentInstance.stateValue = input.value + } else { + vnode.elm.dispatchEvent(new CustomEvent('input', input.value)) + } + }) + }) + } + } +} diff --git a/orion-ops-vue/src/lib/enum.js b/orion-ops-vue/src/lib/enum.js new file mode 100644 index 0000000..d64c6bf --- /dev/null +++ b/orion-ops-vue/src/lib/enum.js @@ -0,0 +1,2562 @@ +/** + * 用 value 获取枚举值 + */ +export function enumValueOf(e, value) { + for (const key in e) { + const val = e[key] + if (val && val.value === value) { + return val + } + } + return {} +} + +/** + * 终端操作 client 端 + */ +export const TERMINAL_CLIENT_OPERATOR = { + KEY: { + value: '0' + }, + CONNECT: { + value: '1' + }, + PING: { + value: '2' + }, + PONG: { + value: '3' + }, + RESIZE: { + value: '4' + }, + COMMAND: { + value: '5' + }, + CLEAR: { + value: '6' + } +} + +/** + * 终端状态 + */ +export const TERMINAL_STATUS = { + NOT_CONNECT: { + value: 0, + label: '未连接', + color: '#FFD43B' + }, + CONNECTED: { + value: 20, + label: '已连接', + color: '#4DABF7' + }, + DISCONNECTED: { + value: 30, + label: '已断开', + color: '#ADB5BD' + }, + ERROR: { + value: 40, + label: '错误', + color: '#E03131' + } +} + +/** + * WS protocol + */ +export const WS_PROTOCOL = { + OK: { + value: '0' + }, + CONNECTED: { + value: '1' + }, + PING: { + value: '2' + }, + PONG: { + value: '3' + }, + ERROR: { + value: '4' + } +} + +/** + * 文件类型 + */ +export const FILE_TYPE = { + NORMAL_FILE: { + value: '-', + label: '普通文件', + icon: 'file' + }, + DIRECTORY: { + value: 'd', + label: '目录', + icon: 'folder' + }, + LINK_FILE: { + value: 'l', + label: '链接文件', + icon: 'link' + }, + MANAGE_FILE: { + value: 'p', + label: '管理文件', + icon: 'dhh' + }, + BLOCK_DEVICE_FILE: { + value: 'b', + label: '块设备文件', + icon: 'dhh' + }, + CHARACTER_DEVICE_FILE: { + value: 'c', + label: '字符设备文件', + icon: 'dhh' + }, + SOCKET_FILE: { + value: 's', + label: '套接字文件', + icon: 'dhh' + } +} + +/** + * 启用状态 + */ +export const ENABLE_STATUS = { + ENABLE: { + value: 1, + label: '启用', + status: 'processing' + }, + DISABLE: { + value: 2, + label: '停用', + status: 'default' + } +} + +/** + * 启用状态 + */ +export const AUDIT_STATUS = { + RESOLVE: { + value: 10, + label: '通过' + }, + REJECT: { + value: 20, + label: '驳回' + } +} + +/** + * 应用环境审核状态 + */ +export const PROFILE_AUDIT_STATUS = { + ENABLE: { + value: 1, + label: '需要审核' + }, + DISABLE: { + value: 2, + label: '无需审核' + } +} + +/** + * 机器认证类型 + */ +export const MACHINE_AUTH_TYPE = { + PASSWORD: { + value: 1, + label: '密码认证' + }, + SECRET_KEY: { + value: 2, + label: '独立密钥' + } +} + +/** + * 机器代理方式 + */ +export const MACHINE_PROXY_TYPE = { + HTTP: { + value: 1, + label: 'http', + color: '#228BE6' + }, + SOCKS4: { + value: 2, + label: 'socks4', + color: '#1098AD' + }, + SOCKS5: { + value: 3, + label: 'socks5', + color: '#0CA678' + } +} + +/** + * 历史值类型 + */ +export const HISTORY_VALUE_TYPE = { + MACHINE_ENV: { + value: 10, + label: '机器环境变量' + }, + APP_ENV: { + value: 20, + label: '应用环境变量' + }, + SYSTEM_ENV: { + value: 30, + label: '系统环境变量' + } +} + +/** + * 历史值操作类型 + */ +export const HISTORY_VALUE_OPTION_TYPE = { + INSERT: { + value: 1, + label: '新增', + color: '#94D82D' + }, + UPDATE: { + value: 2, + label: '修改', + color: '#4C6EF5' + }, + DELETE: { + value: 3, + label: '删除', + color: '#FF922B' + } +} + +/** + * sftp 传输类型 + */ +export const SFTP_TRANSFER_TYPE = { + UPLOAD: { + value: 10, + label: '上传' + }, + DOWNLOAD: { + value: 20, + label: '下载' + }, + TRANSFER: { + value: 30, + label: '传输' + }, + PACKAGE: { + value: 40, + label: '打包' + } +} + +/** + * sftp 传输状态 + */ +export const SFTP_TRANSFER_STATUS = { + WAIT: { + value: 10, + label: '等待中', + color: '#FF922B' + }, + RUNNABLE: { + value: 20, + label: '进行中', + color: '#5C7CFA' + }, + PAUSE: { + value: 30, + label: '已暂停', + color: '#CED4DA' + }, + FINISH: { + value: 40, + label: '已完成', + color: '#51CF66' + }, + CANCEL: { + value: 50, + label: '已取消', + color: '#868E96' + }, + ERROR: { + value: 60, + label: '失败', + color: '#F03E3E' + } +} + +/** + * 批量执行 + */ +export const BATCH_EXEC_STATUS = { + WAITING: { + value: 10, + label: '未开始', + color: '' + }, + RUNNABLE: { + value: 20, + label: '执行中', + color: 'green' + }, + COMPLETE: { + value: 30, + label: '已完成', + color: 'blue' + }, + EXCEPTION: { + value: 40, + label: '异常', + color: 'red' + }, + TERMINATED: { + value: 50, + label: '已停止', + color: 'orange' + } +} + +/** + * 文件 tail 模式 + */ +export const FILE_TAIL_MODE = { + TRACKER: { + value: 'tracker', + label: 'tracker', + tips: '本地文件推荐选择 (IO)' + }, + TAIL: { + value: 'tail', + label: 'tail', + tips: '远程文件必须选择 (命令)' + } +} + +/** + * 文件 tail 类型 + */ +export const FILE_TAIL_TYPE = { + /** + * 命令执行日志 + */ + EXEC_LOG: { + value: 10 + }, + /** + * tail列表 + */ + TAIL_LIST: { + value: 20 + }, + /** + * 应用构建日志 + */ + APP_BUILD_LOG: { + value: 30 + }, + /** + * 应用发布日志 + */ + APP_RELEASE_LOG: { + value: 40 + }, + /** + * 调度任务机器日志 + */ + SCHEDULER_TASK_MACHINE_LOG: { + value: 50 + }, + /** + * 应用操作日志 + */ + APP_ACTION_LOG: { + value: 60 + } +} + +/** + * 日志 tail 状态 + */ +export const LOG_TAIL_STATUS = { + WAITING: { + value: 10, + label: '等待', + status: 'warning' + }, + RUNNABLE: { + value: 20, + label: '正常', + status: 'processing' + }, + ERROR: { + value: 30, + label: '错误', + status: 'error' + }, + CLOSE: { + value: 40, + label: '关闭', + status: 'default' + } +} + +/** + * 文件下载类型 + */ +export const FILE_DOWNLOAD_TYPE = { + /** + * 密钥 + */ + SECRET_KEY: { + value: 10 + }, + /** + * 终端录屏 + */ + TERMINAL_SCREEN: { + value: 20 + }, + /** + * 命令执行日志 + */ + EXEC_LOG: { + value: 30 + }, + /** + * sftp下载文件 + */ + SFTP_DOWNLOAD: { + value: 40 + }, + /** + * tail列表文件 + */ + TAIL_LIST_FILE: { + value: 50 + }, + /** + * 应用构建日志 + */ + APP_BUILD_LOG: { + value: 60 + }, + /** + * 应用操作日志 + */ + APP_ACTION_LOG: { + value: 70 + }, + /** + * 应用构建产物文件 + */ + APP_BUILD_BUNDLE: { + value: 80 + }, + /** + * 应用发布机器日志 + */ + APP_RELEASE_MACHINE_LOG: { + value: 90 + }, + /** + * 调度任务机器日志 + */ + SCHEDULER_TASK_MACHINE_LOG: { + value: 110 + } +} + +/** + * 角色类型 + */ +export const ROLE_TYPE = { + ADMINISTRATOR: { + value: 10, + label: '管理员' + }, + DEVELOPER: { + value: 20, + label: '开发' + }, + OPERATION: { + value: 30, + label: '运维' + } +} + +/** + * 视图类型 + */ +export const VIEW_TYPE = { + TABLE: { + value: 0, + name: '表格', + lang: null + }, + JSON: { + value: 10, + name: 'json', + lang: 'json' + }, + XML: { + value: 20, + name: 'xml', + lang: 'xml' + }, + YML: { + value: 30, + name: 'yml', + lang: 'yaml' + }, + PROPERTIES: { + value: 40, + name: 'properties', + lang: 'properties' + } +} + +/** + * 仓库状态 + */ +export const REPOSITORY_STATUS = { + UNINITIALIZED: { + value: 10, + label: '未初始化', + color: '' + }, + INITIALIZING: { + value: 20, + label: '未初始中', + color: 'green' + }, + OK: { + value: 30, + label: '正常', + color: 'blue' + }, + ERROR: { + value: 40, + label: '失败', + color: 'red' + } +} + +/** + * 仓库认证方式 + */ +export const REPOSITORY_AUTH_TYPE = { + PASSWORD: { + value: 10, + label: '密码认证' + }, + TOKEN: { + value: 20, + label: '私人令牌' + } +} + +/** + * 仓库令牌类型 + */ +export const REPOSITORY_TOKEN_TYPE = { + GITHUB: { + value: 10, + label: 'github', + description: 'Settings -> Developer settings -> Personal access tokens' + }, + GITEE: { + value: 20, + label: 'gitee', + description: '设置 -> 私人令牌' + }, + GITLAB: { + value: 30, + label: 'gitlab', + description: 'User Settings -> Access Tokens' + } +} + +/** + * 配置类型 + */ +export const CONFIG_STATUS = { + CONFIGURED: { + value: 1, + label: '已配置', + color: 'blue' + }, + NOT_CONFIGURED: { + value: 2, + label: '未配置', + color: 'green' + } +} + +/** + * 构建操作类型 + */ +export const BUILD_ACTION_TYPE = { + CHECKOUT: { + value: 110, + label: '检出' + }, + COMMAND: { + value: 120, + label: '主机命令' + } +} + +/** + * 发布操作类型 + */ +export const RELEASE_ACTION_TYPE = { + TRANSFER: { + value: 210, + label: '传输' + }, + COMMAND: { + value: 220, + label: '目标主机命令' + } +} + +/** + * 序列类型 + */ +export const SERIAL_TYPE = { + SERIAL: { + value: 10, + label: '串行' + }, + PARALLEL: { + value: 20, + label: '并行' + } +} + +/** + * 发布产物传输方式 + */ +export const RELEASE_TRANSFER_MODE = { + SCP: { + value: 'scp', + label: 'SCP' + }, + SFTP: { + value: 'sftp', + label: 'SFTP' + } +} + +/** + * 发布产物传输类型 + */ +export const RELEASE_TRANSFER_FILE_TYPE = { + NORMAL: { + value: 'normal', + label: '文件 / 文件夹' + }, + ZIP: { + value: 'zip', + label: '文件夹zip' + } +} + +/** + * 构建状态 + */ +export const BUILD_STATUS = { + WAIT: { + value: 10, + color: '', + label: '未开始', + stepStatus: 'wait' + }, + RUNNABLE: { + value: 20, + color: 'green', + label: '进行中', + stepStatus: 'process' + }, + FINISH: { + value: 30, + color: 'blue', + label: '已完成', + stepStatus: 'finish' + }, + FAILURE: { + value: 40, + color: 'red', + label: '已失败', + stepStatus: 'error' + }, + TERMINATED: { + value: 50, + color: 'orange', + label: '已停止', + stepStatus: 'finish' + } +} + +/** + * 操作状态 + */ +export const ACTION_STATUS = { + WAIT: { + value: 10, + color: '', + label: '未开始', + stepStatus: 'wait', + log: false, + actionStyle: { + background: '#CED4DA' + }, + actionValue() { + return '未开始' + } + }, + RUNNABLE: { + value: 20, + color: 'green', + label: '进行中', + stepStatus: 'process', + log: true, + actionStyle: { + background: '#94D82D' + }, + actionValue() { + return '进行中' + } + }, + FINISH: { + value: 30, + color: 'blue', + label: '已完成', + stepStatus: 'finish', + log: true, + actionStyle: { + background: '#74C0FC' + }, + actionValue(log) { + return log.usedInterval || '已完成' + } + }, + FAILURE: { + value: 40, + color: 'red', + label: '已失败', + stepStatus: 'error', + log: true, + actionStyle: { + background: '#F03E3E' + }, + actionValue(log) { + return log.usedInterval || '已失败' + } + }, + SKIPPED: { + value: 50, + color: 'orange', + label: '已跳过', + stepStatus: 'wait', + log: false, + actionStyle: { + background: '#FFD43B' + }, + actionValue() { + return '已跳过' + } + }, + TERMINATED: { + value: 60, + color: 'orange', + label: '已停止', + stepStatus: 'wait', + log: true, + actionStyle: { + background: '#FFA94D' + }, + actionValue() { + return '已停止' + } + } +} + +/** + * 发布状态 + */ +export const RELEASE_STATUS = { + WAIT_AUDIT: { + value: 10, + color: '', + label: '待审核' + }, + AUDIT_REJECT: { + value: 20, + color: 'orange', + label: '已驳回' + }, + WAIT_RUNNABLE: { + value: 30, + color: 'cyan', + label: '待发布' + }, + WAIT_SCHEDULE: { + value: 35, + color: 'cyan', + label: '待调度' + }, + RUNNABLE: { + value: 40, + color: 'green', + label: '发布中' + }, + FINISH: { + value: 50, + color: 'blue', + label: '已完成' + }, + TERMINATED: { + value: 60, + color: 'orange', + label: '已停止' + }, + FAILURE: { + value: 70, + color: 'red', + label: '已失败' + } +} + +/** + * 发布类型 + */ +export const RELEASE_TYPE = { + NORMAL: { + value: 10, + label: '正常发布' + }, + ROLLBACK: { + value: 20, + label: '回滚发布' + } +} + +/** + * 发布状态 + */ +export const TIMED_TYPE = { + NORMAL: { + value: 10, + releaseLabel: '普通发布', + execLabel: '普通执行' + }, + TIMED: { + value: 20, + releaseLabel: '定时发布', + execLabel: '定时执行' + } +} + +/** + * 操作阶段类型 + */ +export const STAGE_TYPE = { + BUILD: { + value: 10, + symbol: 'build', + label: '构建' + }, + RELEASE: { + value: 20, + symbol: 'release', + label: '发布' + } +} + +/** + * 操作日志分类 + */ +export const EVENT_CLASSIFY = { + AUTHENTICATION: { + value: 100, + label: '认证操作' + }, + USER: { + value: 110, + label: '用户操作' + }, + ALARM_GROUP: { + value: 120, + label: '报警组操作' + }, + MACHINE: { + value: 200, + label: '机器操作' + }, + MACHINE_ENV: { + value: 210, + label: '机器环境变量操作' + }, + MACHINE_KEY: { + value: 220, + label: '密钥操作' + }, + MACHINE_PROXY: { + value: 230, + label: '代理操作' + }, + MACHINE_MONITOR: { + value: 240, + label: '机器监控' + }, + MACHINE_ALARM: { + value: 250, + label: '机器报警' + }, + TERMINAL: { + value: 260, + label: '终端操作' + }, + SFTP: { + value: 270, + label: 'sftp 操作' + }, + EXEC: { + value: 300, + label: '批量执行操作' + }, + TAIL: { + value: 310, + label: '日志追踪操作' + }, + SCHEDULER: { + value: 320, + label: '调度操作' + }, + APP: { + value: 400, + label: '应用操作' + }, + PROFILE: { + value: 410, + label: '环境操作' + }, + APP_ENV: { + value: 420, + label: '应用环境变量操作' + }, + REPOSITORY: { + value: 430, + label: '应用仓库操作' + }, + BUILD: { + value: 440, + label: '应用构建操作' + }, + RELEASE: { + value: 450, + label: '应用发布操作' + }, + PIPELINE: { + value: 460, + label: '应用流水线' + }, + TEMPLATE: { + value: 500, + label: '模板操作' + }, + WEBHOOK: { + value: 510, + label: 'webhook操作' + }, + SYSTEM: { + value: 600, + label: '系统操作' + }, + SYSTEM_ENV: { + value: 610, + label: '系统环境变量操作' + }, + DATA_CLEAR: { + value: 620, + label: '数据清理' + }, + DATA_IMPORT: { + value: 630, + label: '数据导入' + }, + DATA_EXPORT: { + value: 640, + label: '数据导出' + } +} + +/** + * 操作日志类型 + */ +export const EVENT_TYPE = { + LOGIN: { + value: 100010, + label: '登录系统', + classify: 100 + }, + LOGOUT: { + value: 100020, + label: '退出系统', + classify: 100 + }, + RESET_PASSWORD: { + value: 100030, + label: '重置密码', + classify: 100 + }, + ADD_USER: { + value: 110010, + label: '添加用户', + classify: 110 + }, + UPDATE_USER: { + value: 110020, + label: '修改用户信息', + classify: 110 + }, + DELETE_USER: { + value: 110030, + label: '删除用户', + classify: 110 + }, + CHANGE_USER_STATUS: { + value: 110040, + label: '修改用户状态', + classify: 110 + }, + UNLOCK_USER: { + value: 110050, + label: '解锁用户', + classify: 110 + }, + ADD_ALARM_GROUP: { + value: 120010, + label: '添加报警组', + classify: 120 + }, + UPDATE_ALARM_GROUP: { + value: 120020, + label: '修改报警组', + classify: 120 + }, + DELETE_ALARM_GROUP: { + value: 120030, + label: '删除报警组', + classify: 120 + }, + ADD_MACHINE: { + value: 200010, + label: '添加机器', + classify: 200 + }, + UPDATE_MACHINE: { + value: 200020, + label: '修改机器', + classify: 200 + }, + DELETE_MACHINE: { + value: 200030, + label: '删除机器', + classify: 200 + }, + CHANGE_MACHINE_STATUS: { + value: 200040, + label: '修改机器状态', + classify: 200 + }, + COPY_MACHINE: { + value: 200050, + label: '复制机器', + classify: 200 + }, + DELETE_MACHINE_ENV: { + value: 210010, + label: '删除机器环境变量', + classify: 210 + }, + SYNC_MACHINE_ENV: { + value: 210020, + label: '同步机器环境变量', + classify: 210 + }, + ADD_MACHINE_KEY: { + value: 220010, + label: '新增密钥', + classify: 220 + }, + UPDATE_MACHINE_KEY: { + value: 220020, + label: '修改密钥', + classify: 220 + }, + DELETE_MACHINE_KEY: { + value: 220030, + label: '删除密钥', + classify: 220 + }, + BIND_MACHINE_KEY: { + value: 220040, + label: '绑定密钥', + classify: 220 + }, + ADD_MACHINE_PROXY: { + value: 230010, + label: '新建代理', + classify: 230 + }, + UPDATE_MACHINE_PROXY: { + value: 230020, + label: '修改代理', + classify: 230 + }, + DELETE_MACHINE_PROXY: { + value: 230030, + label: '删除代理', + classify: 230 + }, + UPDATE_MACHINE_MONITOR_CONFIG: { + value: 240010, + label: '修改配置', + classify: 240 + }, + INSTALL_UPGRADE_MACHINE_MONITOR: { + value: 240020, + label: '安装/升级插件', + classify: 240 + }, + SET_MACHINE_ALARM_CONFIG: { + value: 250010, + label: '修改报警配置', + classify: 250 + }, + SET_MACHINE_ALARM_GROUP: { + value: 250020, + label: '修改报警联系组', + classify: 250 + }, + RENOTIFY_MACHINE_ALARM_GROUP: { + value: 250030, + label: '重新发送报警通知', + classify: 250 + }, + OPEN_TERMINAL: { + value: 260010, + label: '打开机器终端', + classify: 260 + }, + FORCE_OFFLINE_TERMINAL: { + value: 260020, + label: '强制下线终端', + classify: 260 + }, + UPDATE_TERMINAL_CONFIG: { + value: 260030, + label: '修改终端配置', + classify: 260 + }, + DELETE_TERMINAL_LOG: { + value: 260040, + label: '删除终端日志', + classify: 260 + }, + OPEN_SFTP: { + value: 270010, + label: '打开机器 SFTP', + classify: 270 + }, + SFTP_MKDIR: { + value: 270020, + label: '创建文件夹', + classify: 270 + }, + SFTP_TOUCH: { + value: 270030, + label: '创建文件', + classify: 270 + }, + SFTP_TRUNCATE: { + value: 270040, + label: '截断文件', + classify: 270 + }, + SFTP_MOVE: { + value: 270050, + label: '移动文件', + classify: 270 + }, + SFTP_REMOVE: { + value: 270060, + label: '删除文件', + classify: 270 + }, + SFTP_CHMOD: { + value: 270070, + label: '修改文件权限', + classify: 270 + }, + SFTP_CHOWN: { + value: 270080, + label: '修改文件所有者', + classify: 270 + }, + SFTP_CHGRP: { + value: 270090, + label: '修改文件所有组', + classify: 270 + }, + SFTP_UPLOAD: { + value: 270100, + label: '上传文件', + classify: 270 + }, + SFTP_DOWNLOAD: { + value: 270110, + label: '下载文件', + classify: 270 + }, + SFTP_PACKAGE: { + value: 270120, + label: '打包文件', + classify: 270 + }, + EXEC_SUBMIT: { + value: 300010, + label: '批量执行', + classify: 300 + }, + EXEC_DELETE: { + value: 300020, + label: '删除执行', + classify: 300 + }, + EXEC_TERMINATE: { + value: 300030, + label: '终止执行', + classify: 300 + }, + ADD_TAIL_FILE: { + value: 310010, + label: '添加日志文件', + classify: 310 + }, + UPDATE_TAIL_FILE: { + value: 310020, + label: '修改日志文件', + classify: 310 + }, + DELETE_TAIL_FILE: { + value: 310030, + label: '删除日志文件', + classify: 310 + }, + UPLOAD_TAIL_FILE: { + value: 310040, + label: '上传日志文件', + classify: 310 + }, + ADD_SCHEDULER_TASK: { + value: 320010, + label: '添加调度任务', + classify: 320 + }, + UPDATE_SCHEDULER_TASK: { + value: 320020, + label: '修改调度任务', + classify: 320 + }, + UPDATE_SCHEDULER_TASK_STATUS: { + value: 320030, + label: '更新任务状态', + classify: 320 + }, + DELETE_SCHEDULER_TASK: { + value: 320040, + label: '删除调度任务', + classify: 320 + }, + MANUAL_TRIGGER_SCHEDULER_TASK: { + value: 320050, + label: '手动触发任务', + classify: 320 + }, + TERMINATE_ALL_SCHEDULER_TASK: { + value: 320060, + label: '停止任务', + classify: 320 + }, + TERMINATE_SCHEDULER_TASK_MACHINE: { + value: 320070, + label: '停止机器操作', + classify: 320 + }, + SKIP_SCHEDULER_TASK_MACHINE: { + value: 320080, + label: '跳过机器操作', + classify: 320 + }, + DELETE_TASK_RECORD: { + value: 320090, + label: '删除调度明细', + classify: 320 + }, + ADD_APP: { + value: 400010, + label: '添加应用', + classify: 400 + }, + UPDATE_APP: { + value: 400020, + label: '修改应用', + classify: 400 + }, + DELETE_APP: { + value: 400030, + label: '删除应用', + classify: 400 + }, + CONFIG_APP: { + value: 400040, + label: '配置应用', + classify: 400 + }, + SYNC_APP: { + value: 400050, + label: '同步应用', + classify: 400 + }, + COPY_APP: { + value: 400060, + label: '复制应用', + classify: 400 + }, + ADD_PROFILE: { + value: 410010, + label: '添加应用环境', + classify: 410 + }, + UPDATE_PROFILE: { + value: 410020, + label: '修改应用环境', + classify: 410 + }, + DELETE_PROFILE: { + value: 410030, + label: '删除应用环境', + classify: 410 + }, + DELETE_APP_ENV: { + value: 420010, + label: '删除应用环境变量', + classify: 420 + }, + SYNC_APP_ENV: { + value: 420020, + label: '同步应用环境变量', + classify: 420 + }, + ADD_REPOSITORY: { + value: 430010, + label: '添加版本仓库', + classify: 430 + }, + INIT_REPOSITORY: { + value: 430020, + label: '初始化版本仓库', + classify: 430 + }, + RE_INIT_REPOSITORY: { + value: 430030, + label: '重新初始化版本仓库', + classify: 430 + }, + UPDATE_REPOSITORY: { + value: 430040, + label: '更新版本仓库', + classify: 430 + }, + DELETE_REPOSITORY: { + value: 430050, + label: '删除版本仓库', + classify: 430 + }, + CLEAN_REPOSITORY: { + value: 430060, + label: '清空版本仓库', + classify: 430 + }, + SUBMIT_BUILD: { + value: 440010, + label: '提交应用构建', + classify: 440 + }, + BUILD_TERMINATE: { + value: 440020, + label: '停止应用构建', + classify: 440 + }, + DELETE_BUILD: { + value: 440030, + label: '删除应用构建', + classify: 440 + }, + SUBMIT_REBUILD: { + value: 440040, + label: '重新构建应用', + classify: 440 + }, + SUBMIT_RELEASE: { + value: 450010, + label: '提交应用发布', + classify: 450 + }, + AUDIT_RELEASE: { + value: 450020, + label: '应用发布审核', + classify: 450 + }, + RUNNABLE_RELEASE: { + value: 450030, + label: '执行应用发布', + classify: 450 + }, + ROLLBACK_RELEASE: { + value: 450040, + label: '应用回滚发布', + classify: 450 + }, + TERMINATE_RELEASE: { + value: 450050, + label: '停止应用发布', + classify: 450 + }, + DELETE_RELEASE: { + value: 450060, + label: '删除应用发布', + classify: 450 + }, + COPY_RELEASE: { + value: 450070, + label: '复制应用发布', + classify: 450 + }, + CANCEL_TIMED_RELEASE: { + value: 450080, + label: '取消定时发布', + classify: 450 + }, + SET_TIMED_RELEASE: { + value: 450090, + label: '设置定时发布', + classify: 450 + }, + TERMINATE_MACHINE_RELEASE: { + value: 450100, + label: '停止机器操作', + classify: 450 + }, + SKIP_MACHINE_RELEASE: { + value: 450110, + label: '跳过机器操作', + classify: 450 + }, + ADD_PIPELINE: { + value: 460010, + label: '添加流水线', + classify: 460 + }, + UPDATE_PIPELINE: { + value: 460020, + label: '修改流水线', + classify: 460 + }, + DELETE_PIPELINE: { + value: 460030, + label: '删除流水线', + classify: 460 + }, + SUBMIT_PIPELINE_TASK: { + value: 460040, + label: '提交执行任务', + classify: 460 + }, + AUDIT_PIPELINE_TASK: { + value: 460050, + label: '审核任务', + classify: 460 + }, + COPY_PIPELINE_TASK: { + value: 460060, + label: '复制任务', + classify: 460 + }, + EXEC_PIPELINE_TASK: { + value: 460070, + label: '执行任务', + classify: 460 + }, + DELETE_PIPELINE_TASK: { + value: 460080, + label: '删除任务', + classify: 460 + }, + SET_PIPELINE_TIMED_TASK: { + value: 460090, + label: '设置定时执行', + classify: 460 + }, + CANCEL_PIPELINE_TIMED_TASK: { + value: 460100, + label: '取消定时执行', + classify: 460 + }, + TERMINATE_PIPELINE_TASK: { + value: 460110, + label: '停止执行任务', + classify: 460 + }, + TERMINATE_PIPELINE_TASK_DETAIL: { + value: 460120, + label: '停止执行操作', + classify: 460 + }, + SKIP_PIPELINE_TASK_DETAIL: { + value: 460130, + label: '跳过执行操作', + classify: 460 + }, + ADD_TEMPLATE: { + value: 500010, + label: '添加模板', + classify: 500 + }, + UPDATE_TEMPLATE: { + value: 500020, + label: '修改模板', + classify: 500 + }, + DELETE_TEMPLATE: { + value: 500030, + label: '删除模板', + classify: 500 + }, + ADD_WEBHOOK: { + value: 510010, + label: '添加配置', + classify: 510 + }, + UPDATE_WEBHOOK: { + value: 510020, + label: '修改配置', + classify: 510 + }, + DELETE_WEBHOOK: { + value: 510030, + label: '删除配置', + classify: 510 + }, + CONFIG_IP_LIST: { + value: 600010, + label: '配置IP过滤器', + classify: 600 + }, + RE_ANALYSIS_SYSTEM: { + value: 600020, + label: '系统统计分析', + classify: 600 + }, + CLEAN_SYSTEM_FILE: { + value: 600030, + label: '清理系统文件', + classify: 600 + }, + UPDATE_SYSTEM_OPTION: { + value: 600040, + label: '修改系统配置', + classify: 600 + }, + ADD_SYSTEM_ENV: { + value: 610010, + label: '添加系统环境变量', + classify: 610 + }, + UPDATE_SYSTEM_ENV: { + value: 610020, + label: '修改系统环境变量', + classify: 610 + }, + DELETE_SYSTEM_ENV: { + value: 610030, + label: '删除系统环境变量', + classify: 610 + }, + SAVE_SYSTEM_ENV: { + value: 610040, + label: '保存系统环境变量', + classify: 610 + }, + DATA_CLEAR: { + value: 620010, + label: '清理数据', + classify: 620 + }, + DATA_IMPORT: { + value: 630010, + label: '导入数据', + classify: 630 + }, + DATA_EXPORT: { + value: 640010, + label: '导出数据', + classify: 640 + } +} + +/** + * 系统清理类型 + */ +export const SYSTEM_CLEAR_TYPE = { + TEMP_FILE: { + key: 'tempFile', + value: 10, + label: '临时文件' + }, + LOG_FILE: { + key: 'logFile', + value: 20, + label: '日志文件' + }, + SWAP_FILE: { + key: 'swapFile', + value: 30, + label: '交换区文件' + }, + DIST_FILE: { + key: 'distFile', + value: 40, + label: '旧版本构建产物' + }, + REPO_FILE: { + key: 'repoFile', + value: 50, + label: '旧版本应用仓库' + }, + SCREEN_FILE: { + key: 'screenFile', + value: 60, + label: '录屏文件' + } +} + +/** + * 系统配置项 + */ +export const SYSTEM_OPTION_KEY = { + FILE_CLEAN_THRESHOLD: { + key: 'fileCleanThreshold', + value: 10 + }, + ENABLE_AUTO_CLEAN_FILE: { + key: 'autoCleanFile', + value: 20 + }, + ALLOW_MULTIPLE_LOGIN: { + key: 'allowMultipleLogin', + value: 30 + }, + LOGIN_FAILURE_LOCK: { + key: 'loginFailureLock', + value: 40 + }, + LOGIN_IP_BIND: { + key: 'loginIpBind', + value: 50 + }, + LOGIN_TOKEN_AUTO_RENEW: { + key: 'loginTokenAutoRenew', + value: 60 + }, + LOGIN_TOKEN_EXPIRE: { + key: 'loginTokenExpire', + value: 70 + }, + LOGIN_FAILURE_LOCK_THRESHOLD: { + key: 'loginFailureLockThreshold', + value: 80 + }, + LOGIN_TOKEN_AUTO_RENEW_THRESHOLD: { + key: 'loginTokenAutoRenewThreshold', + value: 90 + }, + RESUME_ENABLE_SCHEDULER_TASK: { + key: 'resumeEnableSchedulerTask', + value: 100 + }, + SFTP_UPLOAD_THRESHOLD: { + key: 'sftpUploadThreshold', + value: 110 + }, + STATISTICS_CACHE_EXPIRE: { + key: 'statisticsCacheExpire', + value: 120 + }, + TERMINAL_ACTIVE_PUSH_HEARTBEAT: { + key: 'terminalActivePushHeartbeat', + value: 130 + } +} + +/** + * 调度任务执行状态 + */ +export const SCHEDULER_TASK_STATUS = { + WAIT: { + value: 10, + label: '待调度', + color: '' + }, + RUNNABLE: { + value: 20, + label: '执行中', + color: 'green' + }, + SUCCESS: { + value: 30, + label: '成功', + color: 'blue' + }, + FAILURE: { + value: 40, + label: '失败', + color: 'red' + }, + TERMINATED: { + value: 50, + label: '已停止', + color: 'orange' + } +} + +/** + * 调度任务执行机器状态 + */ +export const SCHEDULER_TASK_MACHINE_STATUS = { + WAIT: { + value: 10, + label: '待调度', + color: '' + }, + RUNNABLE: { + value: 20, + label: '执行中', + color: 'green' + }, + SUCCESS: { + value: 30, + label: '成功', + color: 'blue' + }, + FAILURE: { + value: 40, + label: '失败', + color: 'red' + }, + SKIPPED: { + value: 50, + label: '已跳过', + color: 'orange' + }, + TERMINATED: { + value: 60, + label: '已停止', + color: 'orange' + } +} + +/** + * 异常处理类型 + */ +export const EXCEPTION_HANDLER_TYPE = { + SKIP_ALL: { + value: 10, + label: '跳过所有', + title: '跳过所有项, 中断执行' + }, + SKIP_ERROR: { + value: 20, + label: '跳过错误', + title: '跳过错误项, 继续执行' + } +} + +/** + * 线程池指标类型 + */ +export const THREAD_POOL_METRICS_TYPE = { + TERMINAL: { + value: 10, + label: '远程终端线程池' + }, + TERMINAL_WATCHER: { + value: 15, + label: '终端监视线程池' + }, + EXEC: { + value: 20, + label: '批量执行线程池' + }, + TAIL: { + value: 30, + label: '文件追踪线程池' + }, + SFTP_TRANSFER_RATE: { + value: 40, + label: '传输进度线程池' + }, + SFTP_UPLOAD: { + value: 50, + label: '文件上传线程池' + }, + SFTP_DOWNLOAD: { + value: 60, + label: '文件下载线程池' + }, + SFTP_PACKAGE: { + value: 70, + label: '文件打包线程池' + }, + APP_BUILD: { + value: 80, + label: '应用构建线程池' + }, + RELEASE_MAIN: { + value: 90, + label: '应用发布主线程池' + }, + RELEASE_MACHINE: { + value: 100, + label: '应用发布机器线程池' + }, + SCHEDULER_TASK_MAIN: { + value: 110, + label: '调度任务主线程池' + }, + SCHEDULER_TASK_MACHINE: { + value: 120, + label: '调度任务机器线程池' + }, + PIPELINE: { + value: 130, + label: '应用流水线线程池' + } +} + +/** + * 阅读状态 + */ +export const READ_STATUS = { + UNREAD: { + value: 1, + label: '未读' + }, + READ: { + value: 2, + label: '已读' + } +} + +/** + * 消息分类 + */ +export const MESSAGE_CLASSIFY = { + SYSTEM: { + value: 10, + label: '系统消息', + icon: 'setting' + }, + IMPORT: { + value: 20, + label: '数据导入', + icon: 'import' + }, + ALARM: { + value: 30, + label: '系统报警', + icon: 'thunderbolt' + } +} + +/** + * 消息类型 + */ +export const MESSAGE_TYPE = { + EXEC_SUCCESS: { + classify: 10, + value: 1010, + label: '命令执行完成', + notify: 'success', + redirect: row => `/batch/exec/list?id=${row.relId || ''}` + }, + EXEC_FAILURE: { + classify: 10, + value: 1020, + label: '命令执行失败', + notify: 'error', + duration: null, + redirect: row => `/batch/exec/list?id=${row.relId || ''}` + }, + REPOSITORY_INIT_SUCCESS: { + classify: 10, + value: 1030, + label: '版本仓库初始化成功', + notify: 'success', + redirect: row => `/app/repo?id=${row.relId || ''}` + }, + REPOSITORY_INIT_FAILURE: { + classify: 10, + value: 1040, + label: '版本仓库初始化失败', + notify: 'error', + duration: null, + redirect: row => `/app/repo?id=${row.relId || ''}` + }, + BUILD_SUCCESS: { + classify: 10, + value: 1050, + label: '构建执行成功', + notify: 'success', + redirect: row => `/app/build/list?id=${row.relId || ''}` + }, + BUILD_FAILURE: { + classify: 10, + value: 1060, + label: '构建执行失败', + notify: 'error', + duration: null, + redirect: row => `/app/build/list?id=${row.relId || ''}` + }, + RELEASE_AUDIT_RESOLVE: { + classify: 10, + value: 1070, + label: '发布审批通过', + notify: 'success', + redirect: row => `/app/release/list?id=${row.relId || ''}` + }, + RELEASE_AUDIT_REJECT: { + classify: 10, + value: 1080, + label: '发布审批驳回', + notify: 'warning', + redirect: row => `/app/release/list?id=${row.relId || ''}` + }, + RELEASE_SUCCESS: { + classify: 10, + value: 1090, + label: '发布执行成功', + notify: 'success', + redirect: row => `/app/release/list?id=${row.relId || ''}` + }, + RELEASE_FAILURE: { + classify: 10, + value: 1100, + label: '发布执行失败', + notify: 'error', + duration: null, + redirect: row => `/app/release/list?id=${row.relId || ''}` + }, + PIPELINE_AUDIT_RESOLVE: { + classify: 10, + value: 1110, + label: '应用流水线审批通过', + notify: 'success', + redirect: row => `/app/pipeline/task?id=${row.relId || ''}` + }, + PIPELINE_AUDIT_REJECT: { + classify: 10, + value: 1120, + label: '应用流水线审批驳回', + notify: 'warning', + redirect: row => `/app/pipeline/task?id=${row.relId || ''}` + }, + PIPELINE_EXEC_SUCCESS: { + classify: 10, + value: 1130, + label: '流水线执行成功', + notify: 'success', + redirect: row => `/app/pipeline/task?id=${row.relId || ''}` + }, + PIPELINE_EXEC_FAILURE: { + classify: 10, + value: 1140, + label: '流水线执行失败', + notify: 'error', + duration: null, + redirect: row => `/app/pipeline/task?id=${row.relId || ''}` + }, + MACHINE_AGENT_INSTALL_SUCCESS: { + classify: 10, + value: 1150, + label: '机器监控插件安装成功', + notify: 'success', + redirect: row => `/machine/monitor/list?machineId=${row.relId || ''}` + }, + MACHINE_AGENT_INSTALL_FAILURE: { + classify: 10, + value: 1160, + label: '机器监控插件安装失败', + notify: 'error', + duration: null, + redirect: row => `/machine/monitor/list?machineId=${row.relId || ''}` + }, + DATA_IMPORT_SUCCESS: { + classify: 20, + value: 2010, + label: '数据导入成功', + notify: 'success', + redirect: row => { + if (!row.relId) { + return null + } + return enumValueOf(IMPORT_TYPE, row.relId).redirect + } + }, + DATA_IMPORT_FAILURE: { + classify: 20, + value: 2020, + label: '数据导入失败', + notify: 'error', + redirect: row => { + if (!row.relId) { + return null + } + return enumValueOf(IMPORT_TYPE, row.relId).redirect + } + }, + MACHINE_ALARM: { + classify: 30, + value: 3010, + label: '机器发生报警', + notify: 'error', + duration: null, + redirect: row => `/machine/monitor/metrics/${row.relId || ''}` + } +} + +/** + * 流水线状态 + */ +export const PIPELINE_STATUS = { + WAIT_AUDIT: { + value: 10, + color: '', + label: '待审核' + }, + AUDIT_REJECT: { + value: 20, + color: 'orange', + label: '已驳回' + }, + WAIT_RUNNABLE: { + value: 30, + color: 'cyan', + label: '待执行' + }, + WAIT_SCHEDULE: { + value: 35, + color: 'cyan', + label: '待调度' + }, + RUNNABLE: { + value: 40, + color: 'green', + label: '执行中' + }, + FINISH: { + value: 50, + color: 'blue', + label: '已完成' + }, + TERMINATED: { + value: 60, + color: 'orange', + label: '已停止' + }, + FAILURE: { + value: 70, + color: 'red', + label: '已失败' + } +} + +/** + * 流水线操作状态 + */ +export const PIPELINE_DETAIL_STATUS = { + WAIT: { + value: 10, + color: '', + label: '未开始', + log: false, + actionStyle: { + background: '#CED4DA' + }, + actionValue() { + return '未开始' + } + }, + RUNNABLE: { + value: 20, + color: 'green', + label: '进行中', + log: true, + actionStyle: { + background: '#94D82D' + }, + actionValue() { + return '进行中' + } + }, + FINISH: { + value: 30, + color: 'blue', + label: '已完成', + log: true, + actionStyle: { + background: '#74C0FC' + }, + actionValue(log) { + return log.usedInterval || '已完成' + } + }, + FAILURE: { + value: 40, + color: 'red', + label: '已失败', + log: true, + actionStyle: { + background: '#F03E3E' + }, + actionValue(log) { + return log.usedInterval || '已失败' + } + }, + SKIPPED: { + value: 50, + color: 'orange', + label: '已跳过', + log: false, + actionStyle: { + background: '#FFD43B' + }, + actionValue() { + return '已跳过' + } + }, + TERMINATED: { + value: 60, + color: 'orange', + label: '已停止', + log: true, + actionStyle: { + background: '#FFA94D' + }, + actionValue() { + return '已停止' + } + } +} + +/** + * 流水线日志状态 + */ +export const PIPELINE_LOG_STATUS = { + CREATE: { + value: 10, + label: '创建' + }, + EXEC: { + value: 20, + label: '执行' + }, + SUCCESS: { + value: 30, + label: '成功' + }, + FAILURE: { + value: 40, + label: '失败' + }, + TERMINATED: { + value: 50, + label: '停止' + }, + SKIPPED: { + value: 60, + label: '跳过' + } +} + +/** + * 批量上传状态 + */ +export const BATCH_UPLOAD_STATUS = { + WAIT: { + value: 10, + loading: false, + mask: false, + checked: false, + visibleTransfer: false, + message: '点击上传按钮开始上传', + type: 'info' + }, + CHECKING: { + value: 20, + loading: true, + mask: true, + checked: false, + visibleTransfer: false, + message: '正在检查文件...', + type: 'info' + }, + REQUESTING: { + value: 30, + loading: true, + mask: true, + checked: false, + visibleTransfer: false, + message: '正在请求上传...', + type: 'info' + }, + WAIT_UPLOAD: { + value: 40, + loading: true, + mask: false, + checked: true, + visibleTransfer: false, + message: '等待上传中...', + type: 'info' + }, + UPLOADING: { + value: 50, + loading: true, + mask: false, + checked: false, + visibleTransfer: true, + message: '文件上传中... 清空或页面关闭则在后台继续上传', + type: 'info' + }, + ERROR: { + value: 60, + loading: false, + mask: false, + checked: false, + visibleTransfer: false, + message: '文件上传失败, 请重试', + type: 'error' + }, + NO_AVAILABLE: { + value: 70, + loading: false, + mask: false, + checked: false, + visibleTransfer: false, + message: '无可用上传机器, 请重新选择后重试', + type: 'error' + } +} + +/** + * 数据清理区间 + */ +export const DATA_CLEAR_RANGE = { + DAY: { value: 10 }, + TOTAL: { value: 20 }, + REL_ID: { value: 30 } +} + +/** + * 数据导出类型 + */ +export const EXPORT_TYPE = { + MACHINE_INFO: { value: 100 }, + MACHINE_PROXY: { value: 110 }, + TERMINAL_LOG: { value: 120 }, + MACHINE_ALARM_HISTORY: { value: 130 }, + APP_PROFILE: { value: 200 }, + APPLICATION: { value: 210 }, + APP_REPOSITORY: { value: 220 }, + COMMAND_TEMPLATE: { value: 300 }, + USER_EVENT_LOG: { value: 310 }, + TAIL_FILE: { value: 320 }, + WEBHOOK: { value: 330 } +} + +/** + * 数据导入类型 + */ +export const IMPORT_TYPE = { + MACHINE_INFO: { + value: 100, + tips: '使用唯一标识来区分数据, 存在更新不存在新增, 优先使用导入密码', + title: '机器信息 导入', + redirect: '/machine/list' + }, + MACHINE_PROXY: { + value: 110, + tips: '导入时优先使用导入密码', + title: '机器代理 导入', + redirect: '/machine/proxy' + }, + TAIL_FILE: { + value: 120, + tips: '通过机器标识来区分机器, 机器名称无需填写', + title: '日志文件 导入', + redirect: '/log/list' + }, + APP_PROFILE: { + value: 200, + tips: '使用唯一标识来区分数据, 存在更新不存在新增', + title: '应用环境 导入', + redirect: '/app/profile' + }, + APPLICATION: { + value: 210, + tips: '使用唯一标识来区分数据, 存在更新不存在新增', + title: '应用信息 导入', + redirect: '/app/list' + }, + APP_REPOSITORY: { + value: 220, + tips: '使用名称来区分数据, 存在更新不存在新增, 优先使用导入密码', + title: '版本仓库 导入', + redirect: '/app/repo' + }, + COMMAND_TEMPLATE: { + value: 300, + tips: '使用模板名称来区分数据, 存在更新不存在新增', + title: '命令模板 导入', + redirect: '/template/list' + }, + WEBHOOK: { + value: 310, + tips: '使用名称来区分数据, 存在更新不存在新增', + title: 'webhook 导入', + redirect: '/webhook/list' + } +} + +/** + * 数据清理类型 + */ +export const DATA_CLEAR_TYPE = { + BATCH_EXEC: { value: 10 }, + TERMINAL_LOG: { value: 20 }, + SCHEDULER_RECORD: { value: 30 }, + APP_BUILD: { value: 40 }, + APP_RELEASE: { value: 50 }, + APP_PIPELINE_EXEC: { value: 60 }, + USER_EVENT_LOG: { value: 70 }, + MACHINE_ALARM_HISTORY: { value: 80 } +} + +/** + * 监控状态 + */ +export const MONITOR_STATUS = { + NOT_START: { + value: 1, + label: '未启动', + status: 'default' + }, + STARTING: { + value: 2, + label: '启动中', + status: 'success' + }, + RUNNING: { + value: 3, + label: '运行中', + status: 'processing' + } +} + +/** + * 监控数据区间 + */ +export const MONITOR_DATA_RANGE = { + HOUR: { + value: 1, + label: '实时', + rangeGetter: () => { + const end = ~~(Date.now() / 1000) + const start = end - (60 * 60) + return [start, end] + } + }, + DAY: { + value: 2, + label: '近24时', + rangeGetter: () => { + const end = ~~(Date.now() / 1000) + const start = end - (60 * 60 * 24) + return [start, end] + } + }, + WEEK: { + value: 3, + label: '近7天', + rangeGetter: () => { + const end = ~~(Date.now() / 1000) + const start = end - (60 * 60 * 24 * 7) + return [start, end] + } + } +} + +/** + * 监控数据粒度 + */ +export const MONITOR_DATA_GRANULARITY = { + SECOND_30: { + value: 12, + label: '30秒', + check: (start, end) => { + return end - start <= 60 * 60 + } + }, + MINUTE_1: { + value: 20, + label: '1分', + min: 0, + max: 60 * 60 * 24, + default: true, + check: (start, end) => { + return end - start <= 60 * 60 + } + }, + MINUTE_5: { + value: 22, + label: '5分', + default: true, + check: (start, end) => { + return end - start <= 60 * 60 * 24 + } + }, + MINUTE_10: { + value: 24, + label: '10分', + check: (start, end) => { + const e = end - start + return 60 * 60 < e && e <= 60 * 60 * 24 + } + }, + MINUTE_30: { + value: 26, + label: '30分', + check: (start, end) => { + const e = end - start + return 60 * 60 < e && e <= 60 * 60 * 24 + } + }, + HOUR_1: { + value: 30, + label: '1时', + default: true, + check: (start, end) => { + const e = end - start + return 60 * 60 * 24 <= e && e <= 60 * 60 * 24 * 7 + } + }, + HOUR_6: { + value: 32, + label: '6时', + check: (start, end) => { + const e = end - start + return 60 * 60 * 24 < e && e <= 60 * 60 * 24 * 7 * 2 + } + }, + HOUR_12: { + value: 34, + label: '12时', + check: (start, end) => { + const e = end - start + return 60 * 60 * 24 < e && e <= 60 * 60 * 24 * 7 * 2 + } + }, + DAY: { + value: 40, + label: '1天', + default: true, + check: (start, end) => { + const e = end - start + return 60 * 60 * 24 * 7 <= e + } + } +} + +/** + * webhook 类型 + */ +export const WEBHOOK_TYPE = { + DING_ROBOT: { + value: 10, + label: '钉钉机器人' + } +} + +/** + * 机器报警类型 + */ +export const MACHINE_ALARM_TYPE = { + CPU_USAGE: { + value: 10, + label: 'CPU使用率', + alarmProp: 'cpuAlarm' + }, + MEMORY_USAGE: { + value: 20, + label: '内存使用率', + alarmProp: 'memoryAlarm' + } +} + +/** + * 树状结构移动类型 + */ +export const TREE_MOVE_TYPE = { + IN_TOP: { + value: 1 + }, + IN_BOTTOM: { + value: 2 + }, + PREV: { + value: 3 + }, + NEXT: { + value: 4 + } +} diff --git a/orion-ops-vue/src/lib/filters.js b/orion-ops-vue/src/lib/filters.js new file mode 100644 index 0000000..7880303 --- /dev/null +++ b/orion-ops-vue/src/lib/filters.js @@ -0,0 +1,8 @@ +import { dateFormat } from './utils' + +/** + * 格式化时间 + */ +export function formatDate(origin, pattern = 'yyyy-MM-dd HH:mm:ss') { + return dateFormat(new Date(origin), pattern) +} diff --git a/orion-ops-vue/src/lib/http.js b/orion-ops-vue/src/lib/http.js new file mode 100644 index 0000000..905d590 --- /dev/null +++ b/orion-ops-vue/src/lib/http.js @@ -0,0 +1,239 @@ +import axios from 'axios' +import $message from 'ant-design-vue/lib/message' +import $storage from './storage' +import router from '../router/index' + +const $http = axios.create({ + responseType: 'json', + baseURL: process.env.VUE_APP_BASE_API, + timeout: 10000 +}) + +// 默认配置项 +const defaultConfig = { + // 是否需要登录 + auth: true, + // 超时时间 + timeout: 10000, + // 请求头 + contentType: 'application/json', + // 跳过响应拦截器异常处理提示 + skipErrorMessage: false, + // 跳过响应拦截器 + skipRespInterceptor: false +} + +/** + * get请求 + */ +const $get = (url, params = {}, config = {}) => { + config.params = params + return new Promise((resolve, reject) => { + $http.get(url, fillDefaultConfig(config)) + .then(res => resolve(res)) + .catch(err => reject(err)) + }) +} + +/** + * post请求 + */ +const $post = (url, data = {}, config = {}) => { + return new Promise((resolve, reject) => { + $http.post(url, data, fillDefaultConfig(config)) + .then(res => resolve(res)) + .catch(err => reject(err)) + }) +} + +/** + * http请求 + */ +const $fetch = (url, method = 'get', config) => { + return new Promise((resolve, reject) => { + $http.request({ + url: url, + method: method, + ...fillDefaultConfig(config) + }) + .then(res => resolve(res)) + .catch(err => reject(err)) + }) +} + +/** + * 导出请求 + */ +const $export = (url, data, config) => { + return new Promise((resolve, reject) => { + $http.post(url, data, fillDefaultConfig({ + skipRespInterceptor: true, + responseType: 'blob', + timeout: 600000, + loading: '正在导出请耐心等待...', + ...config + })).then(res => resolve(res)) + .catch(err => reject(err)) + }) +} + +/** + * 填充默认配置 + */ +function fillDefaultConfig(config) { + for (const defaultConfigKey in defaultConfig) { + if (!(defaultConfigKey in config)) { + config[defaultConfigKey] = defaultConfig[defaultConfigKey] + } + } + return config +} + +/** + * 请求拦截器 + */ +$http.interceptors.request.use( + config => { + const loginToken = $storage.get($storage.keys.LOGIN_TOKEN) + // 设置 Content-Type + config.headers['Content-Type'] = config.contentType + // 登录判断 + if (config.auth && !loginToken) { + throw new RequestError(700, '会话过期') + } + config.headers[$storage.keys.LOGIN_TOKEN] = loginToken + // 设置加载 + if (config.loading) { + config.loadingKey = $message.loading(config.loading) + } + return config + }, err => { + return Promise.reject(err) + } +) + +/** + * 响应拦截器 + */ +$http.interceptors.response.use( + resp => { + // 加载关闭 + resp.config.loadingKey && resp.config.loadingKey() + // 跳过响应拦截器 + if (resp.config.skipRespInterceptor) { + return resp + } + const skipErrorMessage = resp.config.skipErrorMessage + // 判断data + var respData = resp.data + if (!respData || !respData.code) { + if (!skipErrorMessage) { + $message.warning('请求无效') + } + return Promise.reject(resp) + } + // 判断code + switch (respData.code) { + case 200: + // 正常返回 + return respData + case 700: + case 730: + case 740: + // 未登录/IP封禁/用户禁用 + $message.warning(respData.msg) + $storage.clear() + $storage.clearSession() + router.push({ path: '/login' }) + return Promise.reject(respData) + case 500: + if (!skipErrorMessage) { + $message.error(respData.msg) + } + return Promise.reject(respData) + default: + if (!skipErrorMessage) { + $message.warning(respData.msg) + } + return Promise.reject(respData) + } + }, err => { + // 加载关闭 + err.config.loadingKey && err.config.loadingKey() + // 跳过响应拦截器 + if (err.config.skipRespInterceptor) { + return Promise.reject(err) + } + let rejectWrapper + if (err instanceof RequestError) { + // 自定义error + rejectWrapper = err.toWrapper() + if (err.code === 700) { + rejectWrapper.notifyLevel('warning') + router.push({ path: '/login' }) + } + } else { + // http错误 + if (!err.response || !err.response.status) { + rejectWrapper = new RejectWrapper(0, '网络异常') + } else { + rejectWrapper = new RejectWrapper(err.response.status, '请求失败') + } + } + if (!err.config.skipErrorMessage) { + rejectWrapper.tips() + } + return Promise.reject(rejectWrapper) + } +) + +/** + * 请求异常 + */ +class RequestError extends Error { + code + msg + + constructor(code, msg) { + super() + this.code = code + this.msg = msg + Error.captureStackTrace(this, this.constructor) + } + + toWrapper() { + return new RejectWrapper(this.code, this.msg) + } +} + +/** + * reject包装 + */ +class RejectWrapper { + code + msg + level + + constructor(code, msg, level = 'error') { + this.code = code + this.msg = msg + this.level = level + } + + notifyLevel(_level = 'error') { + this.level = _level + return this + } + + tips() { + $message[this.level].call(this, this.msg) + delete this.level + } +} + +export default { + $get, + $post, + $fetch, + $export +} diff --git a/orion-ops-vue/src/lib/storage.js b/orion-ops-vue/src/lib/storage.js new file mode 100644 index 0000000..26fb50f --- /dev/null +++ b/orion-ops-vue/src/lib/storage.js @@ -0,0 +1,72 @@ +import { isEmptyStr } from './utils' + +const $storage = { + + keys: { + LOGIN_TOKEN: 'O-Login-Token', + CURRENT_USER: 'currentUser', + ACTIVE_PROFILE: 'activeProfile', + MACHINE_VIEW: 'machineView' + }, + + /** + * 获取值 + */ + get(key, def) { + const item = localStorage.getItem(key) + return isEmptyStr(item) ? def : item + }, + + /** + * 设置值 + */ + set(key, val) { + localStorage.setItem(key, val) + }, + + /** + * 删除key + */ + remove(key) { + localStorage.removeItem(key) + }, + + /** + * 清空本地存储 + */ + clear() { + localStorage.clear() + }, + + /** + * 获取值 + */ + getSession(key, def) { + const item = sessionStorage.getItem(key) + return isEmptyStr(item) ? def : item + }, + + /** + * 设置值 + */ + setSession(key, val) { + sessionStorage.setItem(key, val) + }, + + /** + * 删除key + */ + removeSession(key) { + sessionStorage.removeItem(key) + }, + + /** + * 清空本地存储 + */ + clearSession() { + sessionStorage.clear() + } + +} + +export default $storage diff --git a/orion-ops-vue/src/lib/tree.js b/orion-ops-vue/src/lib/tree.js new file mode 100644 index 0000000..9ae6ae0 --- /dev/null +++ b/orion-ops-vue/src/lib/tree.js @@ -0,0 +1,111 @@ +/** + * 查询 tree node + */ +export function findNode(nodes, findKey) { + // 查询当前层 + for (const node of nodes) { + if (node.key === findKey) { + return node + } + } + // 查询子节点 + for (const node of nodes) { + if (node.children && node.children.length) { + const findValue = findNode(node.children, findKey) + if (findValue) { + return findValue + } + } + } +} + +/** + * 查询 tree parent node + */ +export function findParentNode(nodes, findKey) { + // 查询当前层 + for (const node of nodes) { + if (node.children && node.children.length) { + const filterNodes = node.children.filter(childrenNode => childrenNode.key === findKey) + if (filterNodes.length) { + return node + } + } + } + // 查询子节点 + for (const node of nodes) { + if (node.children && node.children.length) { + const findValue = findParentNode(node.children, findKey) + if (findValue) { + return findValue + } + } + } +} + +/** + * 获取子节点的 key + */ +export function getChildNodeKeys(node, keys = []) { + if (node.children && node.children.length) { + // 查询当前层 + for (const child of node.children) { + keys.push(child.key) + } + // 查询子节点 + for (const child of node.children) { + getChildNodeKeys(child, keys) + } + } + return keys +} + +/** + * 填充 tree属性 + */ +export function setTreeDataProps(tree, filler) { + if (tree != null) { + tree.forEach(node => { + filler(node) + setTreeDataProps(node.children, filler) + }) + } + return tree || [] +} + +/** + * 获取深度 key + */ +export function getDepthKeys(tree, depth, keys = [], curr = 1) { + if (curr > depth) { + return keys + } + for (const node of tree) { + keys.push(node.key) + if (node.children && node.children.length) { + getDepthKeys(node.children, depth, keys, curr + 1) + } + } + return keys +} + +/** + * 设置 tree 全路径 + */ +export function setTreePath(tree) { + if (!tree || !tree.length) { + return [] + } + const loop = (node, parents = []) => { + const current = [...parents, node.title] + if (node.children && node.children.length) { + for (const child of node.children) { + loop(child, current) + } + } + node.path = current.join('/') + return current + } + tree.forEach(s => loop(s)) + return tree || [] +} diff --git a/orion-ops-vue/src/lib/utils.js b/orion-ops-vue/src/lib/utils.js new file mode 100644 index 0000000..e1e4f1c --- /dev/null +++ b/orion-ops-vue/src/lib/utils.js @@ -0,0 +1,428 @@ +import * as $md5 from 'js-md5' + +/** + * 判断值是否非空 + */ +export function isEmptyStr(val) { + return typeof (val) === 'undefined' || val == null || val === '' +} + +/** + * string -> boolean + */ +export function strToBoo(str) { + if (!str) { + return false + } + return str === 'true' +} + +/** + * 复制到剪切板 + */ +export function copyToClipboard(content) { + const clipboardData = window.clipboardData + if (clipboardData) { + clipboardData.clearData() + clipboardData.setData('Text', content) + return true + } else if (document.execCommand) { + const el = document.createElement('textarea') + el.value = content + el.setAttribute('readonly', '') + el.style.position = 'absolute' + el.style.left = '-9999px' + document.body.appendChild(el) + el.select() + document.execCommand('copy') + document.body.removeChild(el) + return true + } + return false +} + +/** + * 获取剪切板内容 返回promise + */ +export function getClipboardText() { + return navigator.clipboard.readText() +} + +/** + * md5 + */ +export function md5(val) { + return $md5.hex(val) +} + +/** + * ssh命令 + */ +export function getSshCommand(username, host, port) { + return `ssh -p ${port} ${username}@${host}` +} + +/** + * 全屏 + */ +export function fullScreen() { + const el = document.documentElement + const rfs = el.requestFullScreen || el.webkitRequestFullScreen || el.mozRequestFullScreen || el.msRequestFullScreen + if (typeof rfs !== 'undefined' && rfs) { + rfs.call(el) + } +} + +/** + * 取消全屏 + */ +export function exitFullScreen() { + const el = document + const cfs = el.cancelFullScreen || el.webkitCancelFullScreen || el.mozCancelFullScreen || el.exitFullScreen + if (typeof cfs !== 'undefined' && cfs) { + cfs.call(el) + } +} + +/** + * 格式化时间 + */ +export function dateFormat(date, pattern = 'yyyy-MM-dd HH:mm:ss') { + const o = { + 'M+': date.getMonth() + 1, + 'd+': date.getDate(), + 'H+': date.getHours(), + 'm+': date.getMinutes(), + 's+': date.getSeconds(), + 'q+': Math.floor((date.getMonth() + 3) / 3), + 'S+': date.getMilliseconds() + } + if (/(y+)/.test(pattern)) { + pattern = pattern.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)) + } + for (var k in o) { + if (new RegExp('(' + k + ')').test(pattern)) { + pattern = pattern.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length))) + } + } + return pattern +} + +/** + * 格式化秒 + */ +export function formatSecond(s, p = 'HH:mm') { + return dateFormat(new Date(~~s * 1000), p) +} + +/** + * 10进制权限 转 字符串权限 + */ +export function permission10toString(permission) { + const ps = (permission + '') + let res = '' + for (let i = 0; i < ps.length; i++) { + const per = ps.charAt(i) + if ((per & 4) === 0) { + res += '-' + } else { + res += 'r' + } + if ((per & 2) === 0) { + res += '-' + } else { + res += 'w' + } + if ((per & 1) === 0) { + res += '-' + } else { + res += 'x' + } + } + return res +} + +/** + * 返回base64实际数据 + */ +export function getBase64Data(e) { + return e.substring(e.indexOf(',') + 1) +} + +/** + *读取文件base64 返回promise + */ +export function readFileBase64(e) { + return new Promise((resolve, reject) => { + const reader = new FileReader() + reader.readAsDataURL(e) + reader.onload = res => { + resolve(res.target.result) + } + reader.onerror = err => { + reject(err) + } + }) +} + +/** + * 获取页面路由 + */ +export function getRoute(url = location.href) { + return url.substring(url.lastIndexOf('#') + 1).split('?')[0] +} + +/** + * 格式化数字为 ,分割 + */ +export function formatNumber(value = 0) { + value += '' + const list = value.split('.') + const prefix = list[0].charAt(0) === '-' ? '-' : '' + let num = prefix ? list[0].slice(1) : list[0] + let result = '' + while (num.length > 3) { + result = `,${num.slice(-3)}${result}` + num = num.slice(0, num.length - 3) + } + if (num) { + result = num + result + } + return `${prefix}${result}${list[1] ? `.${list[1]}` : ''}` +} + +/** + * 判断是否为数字 + */ +export function isNumber(value, decimal = true, negative = true) { + let reg + if (decimal && negative) { + reg = /^-?[0-9]*(\.[0-9]*)?$/ + } else if (!decimal && negative) { + reg = /^-?[0-9]*$/ + } else if (decimal && !negative) { + reg = /^[0-9]*(\.[0-9]*)?$/ + } else if (!decimal && !negative) { + reg = /^[0-9]*$/ + } else { + return false + } + return (!isNaN(value) && reg.test(value)) || value === '' +} + +/** + * 替换数字 + */ +export function replaceNumber(value) { + const s = value.charAt(value.length - 1) + if (s === '.' || s === '-') { + return s.substring(0, value.length - 1) + } + return value +} + +/** + * 给array的元素定义key + */ +export function defineArrayKey(array, key, value = null) { + if (!array || !array.length) { + return + } + for (const item of array) { + item[key] = value + } +} + +/** + * 给array的元素定义key + */ +export function defineArrayKeys(array) { + if (!array || !array.length) { + return + } + for (const item of array) { + for (let i = 1; i < arguments.length; i++) { + item[arguments[i]] = null + } + } +} + +/** + * 获取解析路径 + */ +export function getPathAnalysis(analysisPath, paths = []) { + const lastSymbol = analysisPath.lastIndexOf('/') + if (lastSymbol === -1) { + paths.unshift({ + name: '/', + path: '/' + }) + return paths + } + const name = analysisPath.substring(lastSymbol, analysisPath.length) + if (!isEmptyStr(name) && name !== '/') { + paths.unshift({ + name: name.substring(1, name.length), + path: analysisPath + }) + } + return getPathAnalysis(analysisPath.substring(0, lastSymbol), paths) +} + +/** + * 替换路径 + */ +export function getPath(path) { + return path.replace(new RegExp('\\\\+', 'g'), '/') + .replace(new RegExp('/+', 'g'), '/') +} + +/** + * 获取父级路径 + */ +export function getParentPath(path) { + const paths = getPath(path).split('/') + const len = paths.length + if (len <= 2) { + return '/' + } + let parent = '' + for (let i = 0; i < len - 1; i++) { + parent += paths[i] + if (i !== len - 2) { + parent += '/' + } + } + return parent +} + +/** + * 获取当前页面的缩放值 + */ +export function detectZoom() { + let ratio = 0 + const screen = window.screen + const ua = navigator.userAgent.toLowerCase() + if (window.devicePixelRatio !== undefined) { + ratio = window.devicePixelRatio + } else if (~ua.indexOf('msie')) { + if (screen.deviceXDPI && screen.logicalXDPI) { + ratio = screen.deviceXDPI / screen.logicalXDPI + } + } else if (window.outerWidth !== undefined && window.innerWidth !== undefined) { + ratio = window.outerWidth / window.innerWidth + } + if (ratio) { + ratio = Math.round(ratio * 100) + } + return ratio +} + +/** + * 清除xss + */ +export function cleanXss(s) { + s = s.replaceAll('&', '&') + s = s.replaceAll('<', '<') + s = s.replaceAll('>', '>') + s = s.replaceAll('\'', ''') + s = s.replaceAll('"', '"') + s = s.replaceAll('\n', '
') + s = s.replaceAll('\t', '    ') + return s +} + +/** + * 替换高亮关键字 + */ +export function replaceStainKeywords(message) { + return cleanXss(message) + .replaceAll('<sb 0>', '') + .replaceAll('<sb 2>', '') + .replaceAll('<sb>', '') + .replaceAll('</sb>', '') + .replaceAll('<sr 0>', '') + .replaceAll('<sr 2>', '') + .replaceAll('<sr>', '') + .replaceAll('</sr>', '') + .replaceAll('<b>', '') + .replaceAll('</b>', '') +} + +/** + * 清除高亮关键字 + */ +export function clearStainKeywords(message) { + return cleanXss(message) + .replaceAll('<sb 0>', '') + .replaceAll('<sb 2>', '') + .replaceAll('<sb>', '') + .replaceAll('</sb>', '') + .replaceAll('<sr 0>', '') + .replaceAll('<sr 2>', '') + .replaceAll('<sr>', '') + .replaceAll('</sr>', '') + .replaceAll('<b>', '') + .replaceAll('</b>', '') + .replaceAll('
', '\n') +} + +/** + * 获取唯一的 UUID + */ +export function getUUID() { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + const r = Math.random() * 16 | 0 + const v = c === 'x' ? r : (r & 0x3 | 0x8) + return v.toString(16) + }) +} + +/** + * 下载文件 + */ +export function downloadFile(res, fileName) { + const blob = new Blob([res.data]) + const tempLink = document.createElement('a') + const blobURL = window.URL.createObjectURL(blob) + tempLink.style.display = 'none' + tempLink.href = blobURL + if (!fileName) { + fileName = res.headers['content-disposition'] + ? res.headers['content-disposition'].split(';')[1].split('=')[1] + : new Date().getTime() + } + tempLink.download = decodeURIComponent(fileName) + if (typeof tempLink.download === 'undefined') { + tempLink.target = '_blank' + } + document.body.appendChild(tempLink) + tempLink.click() + document.body.removeChild(tempLink) + window.URL.revokeObjectURL(blobURL) +} + +/** + * 将消息转为分段消息 + */ +export function messageToPartialMessages(msg) { + const max = 4096 + const len = msg.length + if (len <= max) { + return [msg] + } + let c = ~~(len / max) + const mod = len % max + if (mod !== 0) { + c++ + } + const arr = [] + for (let i = 0; i < c; i++) { + if (i === c - 1) { + arr.push(msg.substr(i * max, mod === 0 ? max : mod)) + } else { + arr.push(msg.substr(i * max, max)) + } + } + return arr +} diff --git a/orion-ops-vue/src/lib/validate.js b/orion-ops-vue/src/lib/validate.js new file mode 100644 index 0000000..d837428 --- /dev/null +++ b/orion-ops-vue/src/lib/validate.js @@ -0,0 +1,9 @@ +export function validatePort(rule, value, callback) { + if (!value) { + callback(new Error('请输入端口')) + } else if (parseInt(value) < 2 || parseInt(value) > 65534) { + callback(new Error('端口必须在2~65534之间')) + } else { + callback() + } +} diff --git a/orion-ops-vue/src/lib/watermark.js b/orion-ops-vue/src/lib/watermark.js new file mode 100644 index 0000000..3ae1877 --- /dev/null +++ b/orion-ops-vue/src/lib/watermark.js @@ -0,0 +1,80 @@ +const watermark = { + currentId: undefined +} + +/** + * 设置水印 + */ +watermark.set = (str) => { + if (process.env.VUE_APP_WATERMARK !== 'true') { + return undefined + } + let reset = true + if (watermark.currentId) { + // 存在并且文本变化 + const before = document.getElementById(watermark.currentId) + if (before) { + if (before.mv !== str) { + document.body.removeChild(before) + } else { + reset = false + } + } + } + // 重置 + if (reset) { + return watermark.reset(str) + } else { + return watermark.currentId + } +} + +/** + * 重设水印 + */ +watermark.reset = (str) => { + const id = 'water.mask.' + new Date().getTime() + const can = document.createElement('canvas') + can.width = 450 + can.height = 350 + + const cans = can.getContext('2d') + cans.rotate((-15 * Math.PI) / 180) + cans.font = '13px Vedana' + cans.fillStyle = 'rgba(200, 200, 200, 0.60)' + cans.textAlign = 'center' + cans.textBaseline = 'hanging' + cans.fillText(str, can.width / 3, can.height / 2) + + const div = document.createElement('div') + div.id = id + div.mv = str + div.style.pointerEvents = 'none' + div.style.top = '30px' + div.style.left = '0px' + div.style.position = 'fixed' + div.style.zIndex = '100000' + div.style.display = 'block' + div.style.width = '100%' + div.style.height = '100%' + div.style.background = 'url(' + can.toDataURL('image/png') + ') left top repeat' + document.body.appendChild(div) + watermark.currentId = id + return id +} + +/** + * 移除水印 + */ +watermark.remove = () => { + if (!watermark.currentId) { + return + } + const ele = document.getElementById(watermark.currentId) + if (ele !== null) { + document.body.removeChild(ele) + } + watermark.currentId = undefined +} + +export default watermark diff --git a/orion-ops-vue/src/main.js b/orion-ops-vue/src/main.js new file mode 100644 index 0000000..82fe961 --- /dev/null +++ b/orion-ops-vue/src/main.js @@ -0,0 +1,89 @@ +import Vue from 'vue' +import App from './App' +import router from './router' +import $api from './lib/api' +import $storage from './lib/storage' +import { copyToClipboard } from '@/lib/utils' +import './lib/directive' + +import ant from 'ant-design-vue' +import $message from 'ant-design-vue/lib/message' +import 'ant-design-vue/dist/antd.min.css' +import watermark from '@/lib/watermark' + +Vue.use(ant) + +Vue.prototype.$api = $api +Vue.prototype.$storage = $storage + +Vue.config.productionTip = false + +$message.config({ + maxCount: 1 +}) + +router.beforeEach((to, from, next) => { + // 校验登录 + if (to.meta.requireAuth !== false && !$storage.get($storage.keys.LOGIN_TOKEN)) { + router.push({ path: '/login' }) + return + } + // 校验管理员 + if (to.meta.requireAdmin && !Vue.prototype.$isAdmin()) { + router.push({ path: '/404' }) + return + } + // 设置标题 + if (to.meta.title) { + document.title = to.meta.title + } + // 添加水印 + const userInfo = $storage.get($storage.keys.CURRENT_USER) + if (to.meta.mask === false) { + watermark.remove() + } else if (userInfo) { + const user = JSON.parse(userInfo) + watermark.set(`${user.username} (${user.nickname})`) + } + next() +}) + +/** + * 复制 + */ +Vue.prototype.$copy = function(value, tips = '已复制') { + if (copyToClipboard(value) && tips) { + if (tips === true) { + this.$message.success(value + ' 已复制') + } else { + this.$message.success(tips) + } + } +} + +/** + * 是否是管理员 + */ +Vue.prototype.$isAdmin = function() { + try { + return JSON.parse($storage.get($storage.keys.CURRENT_USER)).roleType === 10 + } catch (e) { + return false + } +} + +/** + * 获取当前userId + */ +Vue.prototype.$getUserId = function() { + try { + return JSON.parse($storage.get($storage.keys.CURRENT_USER)).userId + } catch (e) { + return false + } +} + +new Vue({ + router, + render: h => h(App) +}).$mount('#app') diff --git a/orion-ops-vue/src/router/index.js b/orion-ops-vue/src/router/index.js new file mode 100644 index 0000000..ccad998 --- /dev/null +++ b/orion-ops-vue/src/router/index.js @@ -0,0 +1,537 @@ +import Vue from 'vue' +import VueRouter from 'vue-router' +import Login from '../views/Login' +import Layout from '../components/layout/Layout' + +Vue.use(VueRouter) + +// 重复点击路由不抛异常 +const originalPush = VueRouter.prototype.push +VueRouter.prototype.push = function push(location) { + return originalPush.call(this, location).catch(err => err) +} + +const routes = [ + { + path: '/', + redirect: '/console' + }, + { + path: '/login', + name: 'login', + meta: { + requireAuth: false, + title: '登录', + mask: false + }, + component: Login + }, + { + path: '/machine/terminal/:id?', + name: 'terminal', + meta: { + requireAuth: true, + title: '终端' + }, + component: () => import('../views/machine/MachineTerminal') + }, + { + path: '/machine/sftp/:id?', + name: 'sftp', + meta: { + requireAuth: true, + title: '文件管理器' + }, + component: () => import('../views/machine/MachineSftp') + }, + { + path: '/batch/exec/log/view/:id', + name: 'ExecLoggerView', + meta: { + requireAuth: true, + title: '执行日志' + }, + component: () => import('../views/exec/ExecLoggerView') + }, + { + path: '/log/view/:id?', + name: 'loggerView', + meta: { + requireAuth: true, + title: '日志面板' + }, + component: () => import('../views/log/LoggerView') + }, + { + path: '/app/action/log/view/:id', + name: 'AppActionLogView', + meta: { + requireAuth: true, + title: '操作日志' + }, + component: () => import('../views/app/AppActionLogView') + }, + { + path: '/app/build/log/view/:id', + name: 'AppBuildLogView', + meta: { + requireAuth: true, + title: '构建日志' + }, + component: () => import('../views/app/AppBuildLogView') + }, + { + path: '/app/release/log/view/:id', + name: 'AppReleaseLogView', + meta: { + requireAuth: true, + title: '发布日志' + }, + component: () => import('../views/app/AppReleaseLogView') + }, + { + path: '/app/release/machine/log/view/:id', + name: 'AppReleaseMachineLogView', + meta: { + requireAuth: true, + title: '发布日志' + }, + component: () => import('../views/app/AppReleaseMachineLogView') + }, + { + path: '/task/machine/log/view/:id', + name: 'SchedulerMachineLogView', + meta: { + requireAuth: true, + title: '调度日志' + }, + component: () => import('../views/scheduler/SchedulerMachineLogView') + }, + { + path: '/task/log/view/:id', + name: 'SchedulerTaskLogView', + meta: { + requireAuth: true, + title: '调度日志' + }, + component: () => import('../views/scheduler/SchedulerTaskLogView') + }, + { + path: '', + name: 'layout', + component: Layout, + children: [ + { + path: '/console', + name: 'console', + meta: { + requireAuth: true, + title: '控制台', + visibleProfile: true + }, + component: () => import('../views/Console') + }, + { + path: '/machine/list', + name: 'machineList', + meta: { + requireAuth: true, + title: '机器列表' + // GROUP_FLAG + // leftProps: [{ + // icon: 'swap', + // title: '切换视图', + // event: 'changeView' + // }] + }, + component: () => import('../views/machine/MachineList') + }, + { + path: '/machine/add', + name: 'machineAdd', + meta: { + requireAuth: true, + title: '添加机器', + leftProps: [{ + icon: 'arrow-left', + title: '返回', + call: 'back' + }] + }, + component: () => import('../views/machine/AddMachine') + }, + { + path: '/machine/update/:id', + name: 'machineUpdate', + meta: { + requireAuth: true, + title: '修改机器', + leftProps: [{ + icon: 'arrow-left', + title: '返回', + call: 'back' + }] + }, + component: () => import('../views/machine/AddMachine') + }, + { + path: '/machine/monitor/list', + name: 'machineMonitorList', + meta: { + requireAuth: true, + title: '机器监控' + }, + component: () => import('../views/machine/MachineMonitorList') + }, + { + path: '/machine/monitor/metrics/:machineId', + name: 'machineMonitor', + meta: { + requireAuth: true, + title: '机器监控' + }, + component: () => import('../views/machine/MachineMonitorMetrics') + }, + { + path: '/machine/env/:id?', + name: 'machineEnv', + meta: { + requireAuth: true, + title: '环境变量', + leftProps: [{ + icon: 'arrow-left', + title: '返回', + call: 'back' + }] + }, + component: () => import('../views/machine/MachineEnv') + }, + { + path: '/machine/key', + name: 'MachineKey', + meta: { + requireAuth: true, + title: '机器密钥' + }, + component: () => import('../views/machine/MachineKey') + }, + { + path: '/terminal/session', + name: 'terminalSession', + meta: { + requireAuth: true, + requireAdmin: true, + title: '终端会话' + }, + component: () => import('../views/machine/MachineTerminalSession') + }, + { + path: '/terminal/logs', + name: 'terminalLogs', + meta: { + requireAuth: true, + title: '终端日志' + }, + component: () => import('../views/machine/MachineTerminalLogs') + }, + { + path: '/machine/proxy', + name: 'MachineProxy', + meta: { + requireAuth: true, + title: '机器代理' + }, + component: () => import('../views/machine/MachineProxy') + }, + { + path: '/batch/exec/list', + name: 'BatchExecList', + meta: { + requireAuth: true, + title: '执行记录' + }, + component: () => import('../views/exec/BatchExecList') + }, + { + path: '/batch/exec/add', + name: 'BatchExecTask', + meta: { + requireAuth: true, + title: '批量执行' + }, + component: () => import('../views/exec/BatchExecTask') + }, + { + path: '/batch/upload', + name: 'BatchUploadFile', + meta: { + requireAuth: true, + title: '批量上传' + }, + component: () => import('../views/exec/BatchUploadFile') + }, + { + path: '/log/list', + name: 'loggerList', + meta: { + requireAuth: true, + title: '日志列表' + }, + component: () => import('../views/log/LoggerList') + }, + { + path: '/app/list', + name: 'appList', + meta: { + requireAuth: true, + title: '应用列表', + visibleProfile: true + }, + component: () => import('../views/app/AppList') + }, + { + path: '/app/conf/:appId', + name: 'appConfig', + meta: { + requireAuth: true, + title: '应用配置', + visibleProfile: true, + leftProps: [{ + icon: 'arrow-left', + title: '返回', + call: 'back' + }, { + icon: 'unordered-list', + title: '选择模板', + event: 'openTemplate' + }] + }, + component: () => import('../views/app/AppConfig') + }, + { + path: '/app/pipeline/list', + name: 'appPipelineList', + meta: { + requireAuth: true, + title: '流水线配置', + visibleProfile: true + }, + component: () => import('../views/app/AppPipeline') + }, + { + path: '/app/profile', + name: 'appProfile', + meta: { + requireAuth: true, + title: '环境管理' + }, + component: () => import('../views/app/AppProfile') + }, + { + path: '/app/env/:id?', + name: 'appEnv', + meta: { + requireAuth: true, + title: '环境变量', + visibleProfile: true, + leftProps: [{ + icon: 'arrow-left', + title: '返回', + call: 'back' + }] + }, + component: () => import('../views/app/AppEnv') + }, + { + path: '/app/repo', + name: 'appRepository', + meta: { + requireAuth: true, + title: '版本仓库' + }, + component: () => import('../views/app/AppRepository') + }, + { + path: '/app/build/list', + name: 'appBuildList', + meta: { + requireAuth: true, + title: '应用构建', + visibleProfile: true + }, + component: () => import('../views/app/AppBuild') + }, + { + path: '/app/release/list', + name: 'appReleaseList', + meta: { + requireAuth: true, + title: '应用发布', + visibleProfile: true + }, + component: () => import('../views/app/AppRelease') + }, + { + path: '/app/pipeline/task', + name: 'appPipelineTask', + meta: { + requireAuth: true, + title: '流水线任务', + visibleProfile: true + }, + component: () => import('../views/app/AppPipelineTask') + }, + { + path: '/app/build/statistics', + name: 'appBuildStatistics', + meta: { + requireAuth: true, + title: '构建统计', + visibleProfile: true + }, + component: () => import('../views/app/AppBuildStatistics') + }, + { + path: '/app/release/statistics', + name: 'appReleaseStatistics', + meta: { + requireAuth: true, + title: '发布统计', + visibleProfile: true + }, + component: () => import('../views/app/AppReleaseStatistics') + }, + { + path: '/app/pipeline/statistics', + name: 'appPipelineStatistics', + meta: { + requireAuth: true, + title: '流水线统计', + visibleProfile: true + }, + component: () => import('../views/app/AppPipelineStatistics') + }, + { + path: '/user/list', + name: 'userList', + meta: { + requireAuth: true, + title: '用户列表' + }, + component: () => import('../views/user/UserList') + }, + { + path: '/alarm/group/list', + name: 'alarmGroupList', + meta: { + requireAuth: true, + title: '报警组列表' + }, + component: () => import('../views/user/AlarmGroupList') + }, + { + path: '/user/detail', + name: 'userDetail', + meta: { + requireAuth: true, + title: '基本信息' + }, + component: () => import('../views/user/UserDetail') + }, + { + path: '/user/event/logs/:id?', + name: 'userEventLogList', + meta: { + requireAuth: true, + title: '操作日志' + }, + component: () => import('../views/user/UserEventLogList') + }, + { + path: '/template/list', + name: 'templateList', + meta: { + requireAuth: true, + title: '模板配置' + }, + component: () => import('../views/content/TemplateList') + }, + { + path: '/webhook/list', + name: 'webhookList', + meta: { + requireAuth: true, + title: 'webhook 配置' + }, + component: () => import('../views/content/WebhookList') + }, + { + path: '/system/env', + name: 'systemEnv', + meta: { + requireAuth: true, + title: '环境变量' + }, + component: () => import('../views/system/SystemEnv') + }, + { + path: '/system/setting', + name: 'systemSetting', + meta: { + requireAuth: true, + title: '系统设置' + }, + component: () => import('../views/system/SystemSetting') + }, + { + path: '/scheduler/list', + name: 'schedulerList', + meta: { + requireAuth: true, + title: '调度任务' + }, + component: () => import('../views/scheduler/SchedulerList') + }, + { + path: '/scheduler/record/:id?', + name: 'schedulerRecord', + meta: { + requireAuth: true, + title: '调度历史' + }, + component: () => import('../views/scheduler/SchedulerRecord') + }, + { + path: '/scheduler/statistics/:id?', + name: 'schedulerStatistics', + meta: { + requireAuth: true, + title: '调度统计' + }, + component: () => import('../views/scheduler/SchedulerStatistics') + }, + { + path: '*', + name: '404', + meta: { + requireAuth: true, + title: '404', + leftProps: [{ + icon: 'arrow-left', + title: '返回', + call: 'back' + }] + }, + component: () => import('../views/404') + } + ] + } + +] + +const router = new VueRouter({ + mode: 'hash', + routes +}) + +export default router diff --git a/orion-ops-vue/src/views/404.vue b/orion-ops-vue/src/views/404.vue new file mode 100644 index 0000000..447860f --- /dev/null +++ b/orion-ops-vue/src/views/404.vue @@ -0,0 +1,19 @@ + + + + + diff --git a/orion-ops-vue/src/views/Console.vue b/orion-ops-vue/src/views/Console.vue new file mode 100644 index 0000000..7802f7e --- /dev/null +++ b/orion-ops-vue/src/views/Console.vue @@ -0,0 +1,276 @@ + + + + + diff --git a/orion-ops-vue/src/views/Login.vue b/orion-ops-vue/src/views/Login.vue new file mode 100644 index 0000000..a8a6a2d --- /dev/null +++ b/orion-ops-vue/src/views/Login.vue @@ -0,0 +1,225 @@ + + + + + diff --git a/orion-ops-vue/src/views/app/AppActionLogView.vue b/orion-ops-vue/src/views/app/AppActionLogView.vue new file mode 100644 index 0000000..167b43b --- /dev/null +++ b/orion-ops-vue/src/views/app/AppActionLogView.vue @@ -0,0 +1,20 @@ + + + + + diff --git a/orion-ops-vue/src/views/app/AppBuild.vue b/orion-ops-vue/src/views/app/AppBuild.vue new file mode 100644 index 0000000..0273c9d --- /dev/null +++ b/orion-ops-vue/src/views/app/AppBuild.vue @@ -0,0 +1,451 @@ + + + + + diff --git a/orion-ops-vue/src/views/app/AppBuildLogView.vue b/orion-ops-vue/src/views/app/AppBuildLogView.vue new file mode 100644 index 0000000..37ea9a8 --- /dev/null +++ b/orion-ops-vue/src/views/app/AppBuildLogView.vue @@ -0,0 +1,20 @@ + + + + + diff --git a/orion-ops-vue/src/views/app/AppBuildStatistics.vue b/orion-ops-vue/src/views/app/AppBuildStatistics.vue new file mode 100644 index 0000000..cf33de8 --- /dev/null +++ b/orion-ops-vue/src/views/app/AppBuildStatistics.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/orion-ops-vue/src/views/app/AppConfig.vue b/orion-ops-vue/src/views/app/AppConfig.vue new file mode 100644 index 0000000..21d4e42 --- /dev/null +++ b/orion-ops-vue/src/views/app/AppConfig.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/orion-ops-vue/src/views/app/AppEnv.vue b/orion-ops-vue/src/views/app/AppEnv.vue new file mode 100644 index 0000000..b19823a --- /dev/null +++ b/orion-ops-vue/src/views/app/AppEnv.vue @@ -0,0 +1,515 @@ + + + + + diff --git a/orion-ops-vue/src/views/app/AppList.vue b/orion-ops-vue/src/views/app/AppList.vue new file mode 100644 index 0000000..f5709f1 --- /dev/null +++ b/orion-ops-vue/src/views/app/AppList.vue @@ -0,0 +1,502 @@ + + + + + diff --git a/orion-ops-vue/src/views/app/AppPipeline.vue b/orion-ops-vue/src/views/app/AppPipeline.vue new file mode 100644 index 0000000..e9d3905 --- /dev/null +++ b/orion-ops-vue/src/views/app/AppPipeline.vue @@ -0,0 +1,278 @@ + + + + + diff --git a/orion-ops-vue/src/views/app/AppPipelineStatistics.vue b/orion-ops-vue/src/views/app/AppPipelineStatistics.vue new file mode 100644 index 0000000..ab43cd4 --- /dev/null +++ b/orion-ops-vue/src/views/app/AppPipelineStatistics.vue @@ -0,0 +1,176 @@ + + + + + diff --git a/orion-ops-vue/src/views/app/AppPipelineTask.vue b/orion-ops-vue/src/views/app/AppPipelineTask.vue new file mode 100644 index 0000000..71c2a11 --- /dev/null +++ b/orion-ops-vue/src/views/app/AppPipelineTask.vue @@ -0,0 +1,783 @@ + + + + + diff --git a/orion-ops-vue/src/views/app/AppProfile.vue b/orion-ops-vue/src/views/app/AppProfile.vue new file mode 100644 index 0000000..c261122 --- /dev/null +++ b/orion-ops-vue/src/views/app/AppProfile.vue @@ -0,0 +1,255 @@ + + + + + diff --git a/orion-ops-vue/src/views/app/AppRelease.vue b/orion-ops-vue/src/views/app/AppRelease.vue new file mode 100644 index 0000000..44e8458 --- /dev/null +++ b/orion-ops-vue/src/views/app/AppRelease.vue @@ -0,0 +1,794 @@ + + + + + diff --git a/orion-ops-vue/src/views/app/AppReleaseLogView.vue b/orion-ops-vue/src/views/app/AppReleaseLogView.vue new file mode 100644 index 0000000..a19d874 --- /dev/null +++ b/orion-ops-vue/src/views/app/AppReleaseLogView.vue @@ -0,0 +1,21 @@ + + + + + diff --git a/orion-ops-vue/src/views/app/AppReleaseMachineLogView.vue b/orion-ops-vue/src/views/app/AppReleaseMachineLogView.vue new file mode 100644 index 0000000..822357c --- /dev/null +++ b/orion-ops-vue/src/views/app/AppReleaseMachineLogView.vue @@ -0,0 +1,21 @@ + + + + + diff --git a/orion-ops-vue/src/views/app/AppReleaseStatistics.vue b/orion-ops-vue/src/views/app/AppReleaseStatistics.vue new file mode 100644 index 0000000..ddc6f88 --- /dev/null +++ b/orion-ops-vue/src/views/app/AppReleaseStatistics.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/orion-ops-vue/src/views/app/AppRepository.vue b/orion-ops-vue/src/views/app/AppRepository.vue new file mode 100644 index 0000000..56825a6 --- /dev/null +++ b/orion-ops-vue/src/views/app/AppRepository.vue @@ -0,0 +1,333 @@ + + + + + diff --git a/orion-ops-vue/src/views/content/TemplateList.vue b/orion-ops-vue/src/views/content/TemplateList.vue new file mode 100644 index 0000000..46b7db6 --- /dev/null +++ b/orion-ops-vue/src/views/content/TemplateList.vue @@ -0,0 +1,261 @@ + + + + + diff --git a/orion-ops-vue/src/views/content/WebhookList.vue b/orion-ops-vue/src/views/content/WebhookList.vue new file mode 100644 index 0000000..cb0ebb5 --- /dev/null +++ b/orion-ops-vue/src/views/content/WebhookList.vue @@ -0,0 +1,230 @@ + + + + + diff --git a/orion-ops-vue/src/views/exec/BatchExecList.vue b/orion-ops-vue/src/views/exec/BatchExecList.vue new file mode 100644 index 0000000..2702747 --- /dev/null +++ b/orion-ops-vue/src/views/exec/BatchExecList.vue @@ -0,0 +1,559 @@ + + + + + diff --git a/orion-ops-vue/src/views/exec/BatchExecTask.vue b/orion-ops-vue/src/views/exec/BatchExecTask.vue new file mode 100644 index 0000000..551573e --- /dev/null +++ b/orion-ops-vue/src/views/exec/BatchExecTask.vue @@ -0,0 +1,446 @@ + + + + + diff --git a/orion-ops-vue/src/views/exec/BatchUploadFile.vue b/orion-ops-vue/src/views/exec/BatchUploadFile.vue new file mode 100644 index 0000000..5ebbb44 --- /dev/null +++ b/orion-ops-vue/src/views/exec/BatchUploadFile.vue @@ -0,0 +1,591 @@ + + + + + diff --git a/orion-ops-vue/src/views/exec/ExecLoggerView.vue b/orion-ops-vue/src/views/exec/ExecLoggerView.vue new file mode 100644 index 0000000..0203b6a --- /dev/null +++ b/orion-ops-vue/src/views/exec/ExecLoggerView.vue @@ -0,0 +1,21 @@ + + + + + diff --git a/orion-ops-vue/src/views/log/LoggerList.vue b/orion-ops-vue/src/views/log/LoggerList.vue new file mode 100644 index 0000000..465e9d0 --- /dev/null +++ b/orion-ops-vue/src/views/log/LoggerList.vue @@ -0,0 +1,353 @@ + + + + + diff --git a/orion-ops-vue/src/views/log/LoggerView.vue b/orion-ops-vue/src/views/log/LoggerView.vue new file mode 100644 index 0000000..6b007eb --- /dev/null +++ b/orion-ops-vue/src/views/log/LoggerView.vue @@ -0,0 +1,358 @@ + + + + + diff --git a/orion-ops-vue/src/views/machine/AddMachine.vue b/orion-ops-vue/src/views/machine/AddMachine.vue new file mode 100644 index 0000000..a7f82b8 --- /dev/null +++ b/orion-ops-vue/src/views/machine/AddMachine.vue @@ -0,0 +1,452 @@ + + + + + diff --git a/orion-ops-vue/src/views/machine/MachineEnv.vue b/orion-ops-vue/src/views/machine/MachineEnv.vue new file mode 100644 index 0000000..652b957 --- /dev/null +++ b/orion-ops-vue/src/views/machine/MachineEnv.vue @@ -0,0 +1,502 @@ + + + + + diff --git a/orion-ops-vue/src/views/machine/MachineGroupView.vue b/orion-ops-vue/src/views/machine/MachineGroupView.vue new file mode 100644 index 0000000..1c4f3ac --- /dev/null +++ b/orion-ops-vue/src/views/machine/MachineGroupView.vue @@ -0,0 +1,365 @@ + + + + + diff --git a/orion-ops-vue/src/views/machine/MachineKey.vue b/orion-ops-vue/src/views/machine/MachineKey.vue new file mode 100644 index 0000000..fd8e8e8 --- /dev/null +++ b/orion-ops-vue/src/views/machine/MachineKey.vue @@ -0,0 +1,268 @@ + + + + + diff --git a/orion-ops-vue/src/views/machine/MachineList.vue b/orion-ops-vue/src/views/machine/MachineList.vue new file mode 100644 index 0000000..cc9e572 --- /dev/null +++ b/orion-ops-vue/src/views/machine/MachineList.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/orion-ops-vue/src/views/machine/MachineListView.vue b/orion-ops-vue/src/views/machine/MachineListView.vue new file mode 100644 index 0000000..2bc6feb --- /dev/null +++ b/orion-ops-vue/src/views/machine/MachineListView.vue @@ -0,0 +1,500 @@ + + + + + diff --git a/orion-ops-vue/src/views/machine/MachineMonitorList.vue b/orion-ops-vue/src/views/machine/MachineMonitorList.vue new file mode 100644 index 0000000..fc2bcaf --- /dev/null +++ b/orion-ops-vue/src/views/machine/MachineMonitorList.vue @@ -0,0 +1,367 @@ + + + + + diff --git a/orion-ops-vue/src/views/machine/MachineMonitorMetrics.vue b/orion-ops-vue/src/views/machine/MachineMonitorMetrics.vue new file mode 100644 index 0000000..7711260 --- /dev/null +++ b/orion-ops-vue/src/views/machine/MachineMonitorMetrics.vue @@ -0,0 +1,169 @@ + + + + + diff --git a/orion-ops-vue/src/views/machine/MachineProxy.vue b/orion-ops-vue/src/views/machine/MachineProxy.vue new file mode 100644 index 0000000..96b9aab --- /dev/null +++ b/orion-ops-vue/src/views/machine/MachineProxy.vue @@ -0,0 +1,261 @@ + + + + + diff --git a/orion-ops-vue/src/views/machine/MachineSftp.vue b/orion-ops-vue/src/views/machine/MachineSftp.vue new file mode 100644 index 0000000..070daba --- /dev/null +++ b/orion-ops-vue/src/views/machine/MachineSftp.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/orion-ops-vue/src/views/machine/MachineTerminal.vue b/orion-ops-vue/src/views/machine/MachineTerminal.vue new file mode 100644 index 0000000..f9e5f1d --- /dev/null +++ b/orion-ops-vue/src/views/machine/MachineTerminal.vue @@ -0,0 +1,173 @@ + + + + + diff --git a/orion-ops-vue/src/views/machine/MachineTerminalLogs.vue b/orion-ops-vue/src/views/machine/MachineTerminalLogs.vue new file mode 100644 index 0000000..05caf20 --- /dev/null +++ b/orion-ops-vue/src/views/machine/MachineTerminalLogs.vue @@ -0,0 +1,332 @@ + + + + + diff --git a/orion-ops-vue/src/views/machine/MachineTerminalSession.vue b/orion-ops-vue/src/views/machine/MachineTerminalSession.vue new file mode 100644 index 0000000..ba0edbc --- /dev/null +++ b/orion-ops-vue/src/views/machine/MachineTerminalSession.vue @@ -0,0 +1,239 @@ + + + + + diff --git a/orion-ops-vue/src/views/scheduler/SchedulerList.vue b/orion-ops-vue/src/views/scheduler/SchedulerList.vue new file mode 100644 index 0000000..ec6b3b9 --- /dev/null +++ b/orion-ops-vue/src/views/scheduler/SchedulerList.vue @@ -0,0 +1,327 @@ + + + + + diff --git a/orion-ops-vue/src/views/scheduler/SchedulerMachineLogView.vue b/orion-ops-vue/src/views/scheduler/SchedulerMachineLogView.vue new file mode 100644 index 0000000..9127f8c --- /dev/null +++ b/orion-ops-vue/src/views/scheduler/SchedulerMachineLogView.vue @@ -0,0 +1,20 @@ + + + + + diff --git a/orion-ops-vue/src/views/scheduler/SchedulerRecord.vue b/orion-ops-vue/src/views/scheduler/SchedulerRecord.vue new file mode 100644 index 0000000..6c7dbd2 --- /dev/null +++ b/orion-ops-vue/src/views/scheduler/SchedulerRecord.vue @@ -0,0 +1,632 @@ + + + + + diff --git a/orion-ops-vue/src/views/scheduler/SchedulerStatistics.vue b/orion-ops-vue/src/views/scheduler/SchedulerStatistics.vue new file mode 100644 index 0000000..d85cf78 --- /dev/null +++ b/orion-ops-vue/src/views/scheduler/SchedulerStatistics.vue @@ -0,0 +1,224 @@ + + + + + diff --git a/orion-ops-vue/src/views/scheduler/SchedulerTaskLogView.vue b/orion-ops-vue/src/views/scheduler/SchedulerTaskLogView.vue new file mode 100644 index 0000000..1c678b3 --- /dev/null +++ b/orion-ops-vue/src/views/scheduler/SchedulerTaskLogView.vue @@ -0,0 +1,20 @@ + + + + + diff --git a/orion-ops-vue/src/views/system/SystemEnv.vue b/orion-ops-vue/src/views/system/SystemEnv.vue new file mode 100644 index 0000000..4168028 --- /dev/null +++ b/orion-ops-vue/src/views/system/SystemEnv.vue @@ -0,0 +1,362 @@ + + + + + diff --git a/orion-ops-vue/src/views/system/SystemSetting.vue b/orion-ops-vue/src/views/system/SystemSetting.vue new file mode 100644 index 0000000..bf7663c --- /dev/null +++ b/orion-ops-vue/src/views/system/SystemSetting.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/orion-ops-vue/src/views/user/AlarmGroupList.vue b/orion-ops-vue/src/views/user/AlarmGroupList.vue new file mode 100644 index 0000000..460c4f3 --- /dev/null +++ b/orion-ops-vue/src/views/user/AlarmGroupList.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/orion-ops-vue/src/views/user/UserDetail.vue b/orion-ops-vue/src/views/user/UserDetail.vue new file mode 100644 index 0000000..2cab482 --- /dev/null +++ b/orion-ops-vue/src/views/user/UserDetail.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/orion-ops-vue/src/views/user/UserEventLogList.vue b/orion-ops-vue/src/views/user/UserEventLogList.vue new file mode 100644 index 0000000..a25c9a2 --- /dev/null +++ b/orion-ops-vue/src/views/user/UserEventLogList.vue @@ -0,0 +1,374 @@ + + + + + diff --git a/orion-ops-vue/src/views/user/UserList.vue b/orion-ops-vue/src/views/user/UserList.vue new file mode 100644 index 0000000..717b35c --- /dev/null +++ b/orion-ops-vue/src/views/user/UserList.vue @@ -0,0 +1,366 @@ + + + + + diff --git a/orion-ops-vue/vue.config.js b/orion-ops-vue/vue.config.js new file mode 100644 index 0000000..6012fa6 --- /dev/null +++ b/orion-ops-vue/vue.config.js @@ -0,0 +1,42 @@ +// 判断开发环境 +// const isProduction = process.env.NODE_ENV === 'production' + +module.exports = { + publicPath: '/ops/', + // 打包时不生成.map文件 + productionSourceMap: false, + devServer: { + port: 10010, + proxy: { + '/orion': { + target: 'http://localhost:9119', + ws: true, + secure: false, + changeOrigin: true + } + } + }, + transpileDependencies: true + // configureWebpack: config => { + // if (isProduction) { + // // 开启分离js + // config.optimization = { + // runtimeChunk: 'single', + // splitChunks: { + // chunks: 'all', + // maxInitialRequests: Infinity, + // minSize: 20000, + // cacheGroups: { + // vendor: { + // test: /[\\/]node_modules[\\/]/, + // name(module) { + // const packageName = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)[1] + // return `pkg.${packageName.replace('@', '')}` + // } + // } + // } + // } + // } + // } + // } +} diff --git a/orion-ops-vue/yarn.lock b/orion-ops-vue/yarn.lock new file mode 100644 index 0000000..23bc77b --- /dev/null +++ b/orion-ops-vue/yarn.lock @@ -0,0 +1,6896 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@achrinza/node-ipc@^9.2.5": + version "9.2.8" + resolved "https://registry.npmmirror.com/@achrinza/node-ipc/-/node-ipc-9.2.8.tgz#aabfe9fe84406c90bfb7319d5e68b5b517dd8686" + integrity sha512-DSzEEkbMYbAUVlhy7fg+BzccoRuSQzqHbIPGxGv19OJ2WKwS3/9ChAnQcII4g+GujcHhyJ8BUuOVAx/S5uAfQg== + dependencies: + "@node-ipc/js-queue" "2.0.3" + event-pubsub "4.3.0" + js-message "1.0.7" + +"@ampproject/remapping@^2.2.0": + version "2.3.0" + resolved "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" + integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@ant-design/colors@^3.1.0": + version "3.2.2" + resolved "https://registry.npmmirror.com/@ant-design/colors/-/colors-3.2.2.tgz#5ad43d619e911f3488ebac303d606e66a8423903" + integrity sha512-YKgNbG2dlzqMhA9NtI3/pbY16m3Yl/EeWBRa+lB1X1YaYxHrxNexiQYCLTWO/uDvAjLFMEDU+zR901waBtMtjQ== + dependencies: + tinycolor2 "^1.4.1" + +"@ant-design/icons-vue@^2.0.0": + version "2.0.0" + resolved "https://registry.npmmirror.com/@ant-design/icons-vue/-/icons-vue-2.0.0.tgz#0357f5010a404e9f34a87a4b41b2a08df691dbce" + integrity sha512-2c0QQE5hL4N48k5NkPG5sdpMl9YnvyNhf0U7YkdZYDlLnspoRU7vIA0UK9eHBs6OpFLcJB6o8eJrIl2ajBskPg== + dependencies: + "@ant-design/colors" "^3.1.0" + babel-runtime "^6.26.0" + +"@ant-design/icons@^2.1.1": + version "2.1.1" + resolved "https://registry.npmmirror.com/@ant-design/icons/-/icons-2.1.1.tgz#7b9c08dffd4f5d41db667d9dbe5e0107d0bd9a4a" + integrity sha512-jCH+k2Vjlno4YWl6g535nHR09PwCEmTBKAG6VqF+rhkrSPRLfgpU2maagwbZPLjaHuU5Jd1DFQ2KJpQuI6uG8w== + +"@antv/adjust@^0.2.1": + version "0.2.5" + resolved "https://registry.npmmirror.com/@antv/adjust/-/adjust-0.2.5.tgz#bb37bb4a0a87ca3f4b660848bc9ac07f02bcf5db" + integrity sha512-MfWZOkD9CqXRES6MBGRNe27Q577a72EIwyMnE29wIlPliFvJfWwsrONddpGU7lilMpVKecS3WAzOoip3RfPTRQ== + dependencies: + "@antv/util" "~2.0.0" + tslib "^1.10.0" + +"@antv/attr@^0.3.1": + version "0.3.5" + resolved "https://registry.npmmirror.com/@antv/attr/-/attr-0.3.5.tgz#0708c74fed5ad6ee03ad1e2913099ed8248f7ebf" + integrity sha512-wuj2gUo6C8Q2ASSMrVBuTcb5LcV+Tc0Egiy6bC42D0vxcQ+ta13CLxgMmHz8mjD0FxTPJDXSciyszRSC5TdLsg== + dependencies: + "@antv/color-util" "^2.0.1" + "@antv/scale" "^0.3.0" + "@antv/util" "~2.0.0" + tslib "^2.3.1" + +"@antv/color-util@^2.0.1", "@antv/color-util@^2.0.2", "@antv/color-util@^2.0.3": + version "2.0.6" + resolved "https://registry.npmmirror.com/@antv/color-util/-/color-util-2.0.6.tgz#5e129bb9ce3f2b9309b52102b3dc929430ccc016" + integrity sha512-KnPEaAH+XNJMjax9U35W67nzPI+QQ2x27pYlzmSIWrbj4/k8PGrARXfzDTjwoozHJY8qG62Z+Ww6Alhu2FctXQ== + dependencies: + "@antv/util" "^2.0.9" + tslib "^2.0.3" + +"@antv/component@^0.8.27": + version "0.8.35" + resolved "https://registry.npmmirror.com/@antv/component/-/component-0.8.35.tgz#1d5b8e11bd496cb505e646f505f5f58f0c5173e9" + integrity sha512-VnRa5X77nBPI952o2xePEEMSNZ6g2mcUDrQY8mVL2kino/8TFhqDq5fTRmDXZyWyIYd4ulJTz5zgeSwAnX/INQ== + dependencies: + "@antv/color-util" "^2.0.3" + "@antv/dom-util" "~2.0.1" + "@antv/g-base" "^0.5.9" + "@antv/matrix-util" "^3.1.0-beta.1" + "@antv/path-util" "~2.0.7" + "@antv/scale" "~0.3.1" + "@antv/util" "~2.0.0" + fecha "~4.2.0" + tslib "^2.0.3" + +"@antv/coord@^0.3.0": + version "0.3.1" + resolved "https://registry.npmmirror.com/@antv/coord/-/coord-0.3.1.tgz#982e261d8a1e06a198eb518ea7acc20ed875a019" + integrity sha512-rFE94C8Xzbx4xmZnHh2AnlB3Qm1n5x0VT3OROy257IH6Rm4cuzv1+tZaUBATviwZd99S+rOY9telw/+6C9GbRw== + dependencies: + "@antv/matrix-util" "^3.1.0-beta.2" + "@antv/util" "~2.0.12" + tslib "^2.1.0" + +"@antv/dom-util@^2.0.2", "@antv/dom-util@~2.0.1": + version "2.0.4" + resolved "https://registry.npmmirror.com/@antv/dom-util/-/dom-util-2.0.4.tgz#b09b56c56fec42896fc856edad56b595b47ab514" + integrity sha512-2shXUl504fKwt82T3GkuT4Uoc6p9qjCKnJ8gXGLSW4T1W37dqf9AV28aCfoVPHp2BUXpSsB+PAJX2rG/jLHsLQ== + dependencies: + tslib "^2.0.3" + +"@antv/event-emitter@^0.1.1", "@antv/event-emitter@~0.1.0": + version "0.1.3" + resolved "https://registry.npmmirror.com/@antv/event-emitter/-/event-emitter-0.1.3.tgz#3e06323b9dcd55a3241ddc7c5458cfabd2095164" + integrity sha512-4ddpsiHN9Pd4UIlWuKVK1C4IiZIdbwQvy9i7DUSI3xNJ89FPUFt8lxDYj8GzzfdllV0NkJTRxnG+FvLk0llidg== + +"@antv/g-base@^0.5.12", "@antv/g-base@^0.5.9", "@antv/g-base@~0.5.6": + version "0.5.16" + resolved "https://registry.npmmirror.com/@antv/g-base/-/g-base-0.5.16.tgz#22a0cbbfc810e6292e4d25e5708d0abe165912bf" + integrity sha512-jP06wggTubDPHXoKwFg3/f1lyxBX9ywwN3E/HG74Nd7DXqOXQis8tsIWW+O6dS/h9vyuXLd1/wDWkMMm3ZzXdg== + dependencies: + "@antv/event-emitter" "^0.1.1" + "@antv/g-math" "^0.1.9" + "@antv/matrix-util" "^3.1.0-beta.1" + "@antv/path-util" "~2.0.5" + "@antv/util" "~2.0.13" + "@types/d3-timer" "^2.0.0" + d3-ease "^1.0.5" + d3-interpolate "^3.0.1" + d3-timer "^1.0.9" + detect-browser "^5.1.0" + tslib "^2.0.3" + +"@antv/g-canvas@~0.5.10": + version "0.5.17" + resolved "https://registry.npmmirror.com/@antv/g-canvas/-/g-canvas-0.5.17.tgz#2e0d263a355e167b9da5e606fbd1ad1500474fcf" + integrity sha512-sXYJMWTOlb/Ycb6sTKu00LcJqInXJY4t99+kSM40u2OfqrXYmaXDjHR7D2V0roMkbK/QWiWS9UnEidCR1VtMOA== + dependencies: + "@antv/g-base" "^0.5.12" + "@antv/g-math" "^0.1.9" + "@antv/matrix-util" "^3.1.0-beta.1" + "@antv/path-util" "~2.0.5" + "@antv/util" "~2.0.0" + gl-matrix "^3.0.0" + tslib "^2.0.3" + +"@antv/g-math@^0.1.9": + version "0.1.9" + resolved "https://registry.npmmirror.com/@antv/g-math/-/g-math-0.1.9.tgz#1f981b9aebf5c024f284389aa3e5cba8cefa1f28" + integrity sha512-KHMSfPfZ5XHM1PZnG42Q2gxXfOitYveNTA7L61lR6mhZ8Y/aExsYmHqaKBsSarU0z+6WLrl9C07PQJZaw0uljQ== + dependencies: + "@antv/util" "~2.0.0" + gl-matrix "^3.0.0" + +"@antv/g-svg@~0.5.6": + version "0.5.7" + resolved "https://registry.npmmirror.com/@antv/g-svg/-/g-svg-0.5.7.tgz#d63db5f8590a5f3ceab097c183ec80ed143f0a50" + integrity sha512-jUbWoPgr4YNsOat2Y/rGAouNQYGpw4R0cvlN0YafwOyacFFYy2zC8RslNd6KkPhhR3XHNSqJOuCYZj/YmLUwYw== + dependencies: + "@antv/g-base" "^0.5.12" + "@antv/g-math" "^0.1.9" + "@antv/util" "~2.0.0" + detect-browser "^5.0.0" + tslib "^2.0.3" + +"@antv/g2@^4.1.48": + version "4.2.11" + resolved "https://registry.npmmirror.com/@antv/g2/-/g2-4.2.11.tgz#a3b257aca4db6004a0c7fe002dc9272795f9c18b" + integrity sha512-QiqxLLYDWkv9c4oTcXscs6NMxBuWZ1JCarHPZ27J43IN2BV+qUKw8yce0A8CBR8fCILEFqQAfS00Szqpye036Q== + dependencies: + "@antv/adjust" "^0.2.1" + "@antv/attr" "^0.3.1" + "@antv/color-util" "^2.0.2" + "@antv/component" "^0.8.27" + "@antv/coord" "^0.3.0" + "@antv/dom-util" "^2.0.2" + "@antv/event-emitter" "~0.1.0" + "@antv/g-base" "~0.5.6" + "@antv/g-canvas" "~0.5.10" + "@antv/g-svg" "~0.5.6" + "@antv/matrix-util" "^3.1.0-beta.3" + "@antv/path-util" "^2.0.15" + "@antv/scale" "^0.3.14" + "@antv/util" "~2.0.5" + tslib "^2.0.0" + +"@antv/matrix-util@^3.0.4": + version "3.0.4" + resolved "https://registry.npmmirror.com/@antv/matrix-util/-/matrix-util-3.0.4.tgz#ea13f158aa2fb4ba2fb8d6b6b561ec467ea3ac20" + integrity sha512-BAPyu6dUliHcQ7fm9hZSGKqkwcjEDVLVAstlHULLvcMZvANHeLXgHEgV7JqcAV/GIhIz8aZChIlzM1ZboiXpYQ== + dependencies: + "@antv/util" "^2.0.9" + gl-matrix "^3.3.0" + tslib "^2.0.3" + +"@antv/matrix-util@^3.1.0-beta.1", "@antv/matrix-util@^3.1.0-beta.2", "@antv/matrix-util@^3.1.0-beta.3": + version "3.1.0-beta.3" + resolved "https://registry.npmmirror.com/@antv/matrix-util/-/matrix-util-3.1.0-beta.3.tgz#e061de8fa7be04605a155c69cc5ce9082eedddee" + integrity sha512-W2R6Za3A6CmG51Y/4jZUM/tFgYSq7vTqJL1VD9dKrvwxS4sE0ZcXINtkp55CdyBwJ6Cwm8pfoRpnD4FnHahN0A== + dependencies: + "@antv/util" "^2.0.9" + gl-matrix "^3.4.3" + tslib "^2.0.3" + +"@antv/path-util@^2.0.15", "@antv/path-util@~2.0.5", "@antv/path-util@~2.0.7": + version "2.0.15" + resolved "https://registry.npmmirror.com/@antv/path-util/-/path-util-2.0.15.tgz#a6f691dfc8b7bce5be7f0aabb5bd614964325631" + integrity sha512-R2VLZ5C8PLPtr3VciNyxtjKqJ0XlANzpFb5sE9GE61UQqSRuSVSzIakMxjEPrpqbgc+s+y8i+fmc89Snu7qbNw== + dependencies: + "@antv/matrix-util" "^3.0.4" + "@antv/util" "^2.0.9" + tslib "^2.0.3" + +"@antv/scale@^0.3.0", "@antv/scale@^0.3.14", "@antv/scale@~0.3.1": + version "0.3.18" + resolved "https://registry.npmmirror.com/@antv/scale/-/scale-0.3.18.tgz#b911f431b3e0b9547b6a65f66d0d3fa295b5ef32" + integrity sha512-GHwE6Lo7S/Q5fgaLPaCsW+CH+3zl4aXpnN1skOiEY0Ue9/u+s2EySv6aDXYkAqs//i0uilMDD/0/4n8caX9U9w== + dependencies: + "@antv/util" "~2.0.3" + fecha "~4.2.0" + tslib "^2.0.0" + +"@antv/util@^2.0.9", "@antv/util@~2.0.0", "@antv/util@~2.0.12", "@antv/util@~2.0.13", "@antv/util@~2.0.3", "@antv/util@~2.0.5": + version "2.0.17" + resolved "https://registry.npmmirror.com/@antv/util/-/util-2.0.17.tgz#e8ef42aca7892815b229269f3dd10c6b3c7597a9" + integrity sha512-o6I9hi5CIUvLGDhth0RxNSFDRwXeywmt6ExR4+RmVAzIi48ps6HUy+svxOCayvrPBN37uE6TAc2KDofRo0nK9Q== + dependencies: + csstype "^3.0.8" + tslib "^2.0.3" + +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2": + version "7.24.2" + resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" + integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== + dependencies: + "@babel/highlight" "^7.24.2" + picocolors "^1.0.0" + +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.4": + version "7.24.4" + resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" + integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== + +"@babel/core@^7.12.16": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a" + integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.24.2" + "@babel/generator" "^7.24.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.24.5" + "@babel/helpers" "^7.24.5" + "@babel/parser" "^7.24.5" + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.5" + "@babel/types" "^7.24.5" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/eslint-parser@^7.12.16": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/eslint-parser/-/eslint-parser-7.24.5.tgz#3b0f7d383a540329a30a6a9937cfc89461d26217" + integrity sha512-gsUcqS/fPlgAw1kOtpss7uhY6E9SFFANQ6EFX5GTvzUwaV0+sGaZWk6xq22MOdeT9wfxyokW3ceCUvOiRtZciQ== + dependencies: + "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" + eslint-visitor-keys "^2.1.0" + semver "^6.3.1" + +"@babel/generator@^7.24.5": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3" + integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA== + dependencies: + "@babel/types" "^7.24.5" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": + version "7.22.15" + resolved "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" + integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-compilation-targets@^7.12.16", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": + version "7.23.6" + resolved "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.24.1", "@babel/helper-create-class-features-plugin@^7.24.4", "@babel/helper-create-class-features-plugin@^7.24.5": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz#7d19da92c7e0cd8d11c09af2ce1b8e7512a6e723" + integrity sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-member-expression-to-functions" "^7.24.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.24.5" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.6.1", "@babel/helper-define-polyfill-provider@^0.6.2": + version "0.6.2" + resolved "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" + integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-member-expression-to-functions@^7.23.0", "@babel/helper-member-expression-to-functions@^7.24.5": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz#5981e131d5c7003c7d1fa1ad49e86c9b097ec475" + integrity sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA== + dependencies: + "@babel/types" "^7.24.5" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.24.1", "@babel/helper-module-imports@^7.24.3": + version "7.24.3" + resolved "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" + integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== + dependencies: + "@babel/types" "^7.24.0" + +"@babel/helper-module-imports@~7.22.15": + version "7.22.15" + resolved "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-module-transforms@^7.23.3", "@babel/helper-module-transforms@^7.24.5": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz#ea6c5e33f7b262a0ae762fd5986355c45f54a545" + integrity sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.24.3" + "@babel/helper-simple-access" "^7.24.5" + "@babel/helper-split-export-declaration" "^7.24.5" + "@babel/helper-validator-identifier" "^7.24.5" + +"@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.24.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz#a924607dd254a65695e5bd209b98b902b3b2f11a" + integrity sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ== + +"@babel/helper-remap-async-to-generator@^7.22.20": + version "7.22.20" + resolved "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" + integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-wrap-function" "^7.22.20" + +"@babel/helper-replace-supers@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz#7085bd19d4a0b7ed8f405c1ed73ccb70f323abc1" + integrity sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.23.0" + "@babel/helper-optimise-call-expression" "^7.22.5" + +"@babel/helper-simple-access@^7.22.5", "@babel/helper-simple-access@^7.24.5": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz#50da5b72f58c16b07fbd992810be6049478e85ba" + integrity sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ== + dependencies: + "@babel/types" "^7.24.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.24.5": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz#b9a67f06a46b0b339323617c8c6213b9055a78b6" + integrity sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q== + dependencies: + "@babel/types" "^7.24.5" + +"@babel/helper-string-parser@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" + integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== + +"@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.24.5": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62" + integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA== + +"@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + +"@babel/helper-wrap-function@^7.22.20": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.24.5.tgz#335f934c0962e2c1ed1fb9d79e06a56115067c09" + integrity sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw== + dependencies: + "@babel/helper-function-name" "^7.23.0" + "@babel/template" "^7.24.0" + "@babel/types" "^7.24.5" + +"@babel/helpers@^7.24.5": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.24.5.tgz#fedeb87eeafa62b621160402181ad8585a22a40a" + integrity sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q== + dependencies: + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.5" + "@babel/types" "^7.24.5" + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.24.2": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.24.5.tgz#bc0613f98e1dd0720e99b2a9ee3760194a704b6e" + integrity sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw== + dependencies: + "@babel/helper-validator-identifier" "^7.24.5" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + +"@babel/parser@^7.23.5", "@babel/parser@^7.23.9", "@babel/parser@^7.24.0", "@babel/parser@^7.24.4", "@babel/parser@^7.24.5": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790" + integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.5": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz#4c3685eb9cd790bcad2843900fe0250c91ccf895" + integrity sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.5" + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz#b645d9ba8c2bc5b7af50f0fe949f9edbeb07c8cf" + integrity sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz#da8261f2697f0f41b0855b91d3a20a1fbfd271d3" + integrity sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.24.1" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz#1181d9685984c91d657b8ddf14f0487a6bab2988" + integrity sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-proposal-class-properties@^7.12.13": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-decorators@^7.12.13": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.1.tgz#bab2b9e174a2680f0a80f341f3ec70f809f8bb4b" + integrity sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-decorators" "^7.24.1" + +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-decorators@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.1.tgz#71d9ad06063a6ac5430db126b5df48c70ee885fa" + integrity sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-import-assertions@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz#db3aad724153a00eaac115a3fb898de544e34971" + integrity sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-import-attributes@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz#c66b966c63b714c4eec508fcf5763b1f2d381093" + integrity sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.12.13", "@babel/plugin-syntax-jsx@^7.2.0", "@babel/plugin-syntax-jsx@^7.23.3": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" + integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz#2bf263617060c9cc45bcdbf492b8cc805082bf27" + integrity sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-async-generator-functions@^7.24.3": + version "7.24.3" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz#8fa7ae481b100768cc9842c8617808c5352b8b89" + integrity sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-transform-async-to-generator@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz#0e220703b89f2216800ce7b1c53cb0cf521c37f4" + integrity sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw== + dependencies: + "@babel/helper-module-imports" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-remap-async-to-generator" "^7.22.20" + +"@babel/plugin-transform-block-scoped-functions@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz#1c94799e20fcd5c4d4589523bbc57b7692979380" + integrity sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-block-scoping@^7.24.5": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz#89574191397f85661d6f748d4b89ee4d9ee69a2a" + integrity sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.5" + +"@babel/plugin-transform-class-properties@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz#bcbf1aef6ba6085cfddec9fc8d58871cf011fc29" + integrity sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-class-static-block@^7.24.4": + version "7.24.4" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz#1a4653c0cf8ac46441ec406dece6e9bc590356a4" + integrity sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.4" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.24.5": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz#05e04a09df49a46348299a0e24bfd7e901129339" + integrity sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-split-export-declaration" "^7.24.5" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz#bc7e787f8e021eccfb677af5f13c29a9934ed8a7" + integrity sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/template" "^7.24.0" + +"@babel/plugin-transform-destructuring@^7.24.5": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz#80843ee6a520f7362686d1a97a7b53544ede453c" + integrity sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.5" + +"@babel/plugin-transform-dotall-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz#d56913d2f12795cc9930801b84c6f8c47513ac13" + integrity sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-duplicate-keys@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz#5347a797fe82b8d09749d10e9f5b83665adbca88" + integrity sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-dynamic-import@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz#2a5a49959201970dd09a5fca856cb651e44439dd" + integrity sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz#6650ebeb5bd5c012d5f5f90a26613a08162e8ba4" + integrity sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-export-namespace-from@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz#f033541fc036e3efb2dcb58eedafd4f6b8078acd" + integrity sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-transform-for-of@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz#67448446b67ab6c091360ce3717e7d3a59e202fd" + integrity sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-function-name@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz#8cba6f7730626cc4dfe4ca2fa516215a0592b361" + integrity sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA== + dependencies: + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-json-strings@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz#08e6369b62ab3e8a7b61089151b161180c8299f7" + integrity sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-transform-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz#0a1982297af83e6b3c94972686067df588c5c096" + integrity sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-logical-assignment-operators@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz#719d8aded1aa94b8fb34e3a785ae8518e24cfa40" + integrity sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz#896d23601c92f437af8b01371ad34beb75df4489" + integrity sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-modules-amd@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz#b6d829ed15258536977e9c7cc6437814871ffa39" + integrity sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-modules-commonjs@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz#e71ba1d0d69e049a22bf90b3867e263823d3f1b9" + integrity sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-simple-access" "^7.22.5" + +"@babel/plugin-transform-modules-systemjs@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz#2b9625a3d4e445babac9788daec39094e6b11e3e" + integrity sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA== + dependencies: + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/plugin-transform-modules-umd@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz#69220c66653a19cf2c0872b9c762b9a48b8bebef" + integrity sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" + integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-new-target@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz#29c59988fa3d0157de1c871a28cd83096363cc34" + integrity sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz#0cd494bb97cb07d428bd651632cb9d4140513988" + integrity sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-transform-numeric-separator@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz#5bc019ce5b3435c1cadf37215e55e433d674d4e8" + integrity sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-transform-object-rest-spread@^7.24.5": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz#f91bbcb092ff957c54b4091c86bda8372f0b10ef" + integrity sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA== + dependencies: + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.24.5" + +"@babel/plugin-transform-object-super@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz#e71d6ab13483cca89ed95a474f542bbfc20a0520" + integrity sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-replace-supers" "^7.24.1" + +"@babel/plugin-transform-optional-catch-binding@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz#92a3d0efe847ba722f1a4508669b23134669e2da" + integrity sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-transform-optional-chaining@^7.24.1", "@babel/plugin-transform-optional-chaining@^7.24.5": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz#a6334bebd7f9dd3df37447880d0bd64b778e600f" + integrity sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.24.5": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz#5c3b23f3a6b8fed090f9b98f2926896d3153cc62" + integrity sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.5" + +"@babel/plugin-transform-private-methods@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz#a0faa1ae87eff077e1e47a5ec81c3aef383dc15a" + integrity sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-private-property-in-object@^7.24.5": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz#f5d1fcad36e30c960134cb479f1ca98a5b06eda5" + integrity sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-transform-property-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz#d6a9aeab96f03749f4eebeb0b6ea8e90ec958825" + integrity sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-regenerator@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz#625b7545bae52363bdc1fbbdc7252b5046409c8c" + integrity sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + regenerator-transform "^0.15.2" + +"@babel/plugin-transform-reserved-words@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz#8de729f5ecbaaf5cf83b67de13bad38a21be57c1" + integrity sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-runtime@^7.12.15": + version "7.24.3" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz#dc58ad4a31810a890550365cc922e1ff5acb5d7f" + integrity sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ== + dependencies: + "@babel/helper-module-imports" "^7.24.3" + "@babel/helper-plugin-utils" "^7.24.0" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.1" + babel-plugin-polyfill-regenerator "^0.6.1" + semver "^6.3.1" + +"@babel/plugin-transform-shorthand-properties@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz#ba9a09144cf55d35ec6b93a32253becad8ee5b55" + integrity sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-spread@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz#a1acf9152cbf690e4da0ba10790b3ac7d2b2b391" + integrity sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-sticky-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz#f03e672912c6e203ed8d6e0271d9c2113dc031b9" + integrity sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-template-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz#15e2166873a30d8617e3e2ccadb86643d327aab7" + integrity sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-typeof-symbol@^7.24.5": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz#703cace5ef74155fb5eecab63cbfc39bdd25fe12" + integrity sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.5" + +"@babel/plugin-transform-unicode-escapes@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz#fb3fa16676549ac7c7449db9b342614985c2a3a4" + integrity sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-unicode-property-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz#56704fd4d99da81e5e9f0c0c93cabd91dbc4889e" + integrity sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-unicode-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz#57c3c191d68f998ac46b708380c1ce4d13536385" + integrity sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-unicode-sets-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz#c1ea175b02afcffc9cf57a9c4658326625165b7f" + integrity sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/preset-env@^7.12.16": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.24.5.tgz#6a9ac90bd5a5a9dae502af60dfc58c190551bbcd" + integrity sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ== + dependencies: + "@babel/compat-data" "^7.24.4" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.1" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.24.1" + "@babel/plugin-syntax-import-attributes" "^7.24.1" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.24.1" + "@babel/plugin-transform-async-generator-functions" "^7.24.3" + "@babel/plugin-transform-async-to-generator" "^7.24.1" + "@babel/plugin-transform-block-scoped-functions" "^7.24.1" + "@babel/plugin-transform-block-scoping" "^7.24.5" + "@babel/plugin-transform-class-properties" "^7.24.1" + "@babel/plugin-transform-class-static-block" "^7.24.4" + "@babel/plugin-transform-classes" "^7.24.5" + "@babel/plugin-transform-computed-properties" "^7.24.1" + "@babel/plugin-transform-destructuring" "^7.24.5" + "@babel/plugin-transform-dotall-regex" "^7.24.1" + "@babel/plugin-transform-duplicate-keys" "^7.24.1" + "@babel/plugin-transform-dynamic-import" "^7.24.1" + "@babel/plugin-transform-exponentiation-operator" "^7.24.1" + "@babel/plugin-transform-export-namespace-from" "^7.24.1" + "@babel/plugin-transform-for-of" "^7.24.1" + "@babel/plugin-transform-function-name" "^7.24.1" + "@babel/plugin-transform-json-strings" "^7.24.1" + "@babel/plugin-transform-literals" "^7.24.1" + "@babel/plugin-transform-logical-assignment-operators" "^7.24.1" + "@babel/plugin-transform-member-expression-literals" "^7.24.1" + "@babel/plugin-transform-modules-amd" "^7.24.1" + "@babel/plugin-transform-modules-commonjs" "^7.24.1" + "@babel/plugin-transform-modules-systemjs" "^7.24.1" + "@babel/plugin-transform-modules-umd" "^7.24.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.24.1" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.1" + "@babel/plugin-transform-numeric-separator" "^7.24.1" + "@babel/plugin-transform-object-rest-spread" "^7.24.5" + "@babel/plugin-transform-object-super" "^7.24.1" + "@babel/plugin-transform-optional-catch-binding" "^7.24.1" + "@babel/plugin-transform-optional-chaining" "^7.24.5" + "@babel/plugin-transform-parameters" "^7.24.5" + "@babel/plugin-transform-private-methods" "^7.24.1" + "@babel/plugin-transform-private-property-in-object" "^7.24.5" + "@babel/plugin-transform-property-literals" "^7.24.1" + "@babel/plugin-transform-regenerator" "^7.24.1" + "@babel/plugin-transform-reserved-words" "^7.24.1" + "@babel/plugin-transform-shorthand-properties" "^7.24.1" + "@babel/plugin-transform-spread" "^7.24.1" + "@babel/plugin-transform-sticky-regex" "^7.24.1" + "@babel/plugin-transform-template-literals" "^7.24.1" + "@babel/plugin-transform-typeof-symbol" "^7.24.5" + "@babel/plugin-transform-unicode-escapes" "^7.24.1" + "@babel/plugin-transform-unicode-property-regex" "^7.24.1" + "@babel/plugin-transform-unicode-regex" "^7.24.1" + "@babel/plugin-transform-unicode-sets-regex" "^7.24.1" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.4" + babel-plugin-polyfill-regenerator "^0.6.1" + core-js-compat "^3.31.0" + semver "^6.3.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.npmmirror.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + +"@babel/runtime@^7.12.13", "@babel/runtime@^7.21.0", "@babel/runtime@^7.8.4": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.24.5.tgz#230946857c053a36ccc66e1dd03b17dd0c4ed02c" + integrity sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/template@^7.22.15", "@babel/template@^7.23.9", "@babel/template@^7.24.0": + version "7.24.0" + resolved "https://registry.npmmirror.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" + integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.24.0" + "@babel/types" "^7.24.0" + +"@babel/traverse@^7.23.9", "@babel/traverse@^7.24.5": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8" + integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA== + dependencies: + "@babel/code-frame" "^7.24.2" + "@babel/generator" "^7.24.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.24.5" + "@babel/parser" "^7.24.5" + "@babel/types" "^7.24.5" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.9", "@babel/types@^7.24.0", "@babel/types@^7.24.5", "@babel/types@^7.4.4": + version "7.24.5" + resolved "https://registry.npmmirror.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7" + integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ== + dependencies: + "@babel/helper-string-parser" "^7.24.1" + "@babel/helper-validator-identifier" "^7.24.5" + to-fast-properties "^2.0.0" + +"@discoveryjs/json-ext@0.5.7": + version "0.5.7" + resolved "https://registry.npmmirror.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + +"@eslint/eslintrc@^0.4.3": + version "0.4.3" + resolved "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" + integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": + version "9.3.0" + resolved "https://registry.npmmirror.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== + +"@hapi/topo@^5.1.0": + version "5.1.0" + resolved "https://registry.npmmirror.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@humanwhocodes/config-array@^0.5.0": + version "0.5.0" + resolved "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== + dependencies: + "@humanwhocodes/object-schema" "^1.2.0" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.0": + version "1.2.1" + resolved "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/source-map@^0.3.3": + version "0.3.6" + resolved "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" + integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": + version "1.4.15" + resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.5" + resolved "https://registry.npmmirror.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" + integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw== + +"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": + version "5.1.1-v1" + resolved "https://registry.npmmirror.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" + integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== + dependencies: + eslint-scope "5.1.1" + +"@node-ipc/js-queue@2.0.3": + version "2.0.3" + resolved "https://registry.npmmirror.com/@node-ipc/js-queue/-/js-queue-2.0.3.tgz#ac7fe33d766fa53e233ef8fedaf3443a01c5a4cd" + integrity sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw== + dependencies: + easy-stack "1.0.1" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@polka/url@^1.0.0-next.24": + version "1.0.0-next.25" + resolved "https://registry.npmmirror.com/@polka/url/-/url-1.0.0-next.25.tgz#f077fdc0b5d0078d30893396ff4827a13f99e817" + integrity sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ== + +"@sideway/address@^4.1.5": + version "4.1.5" + resolved "https://registry.npmmirror.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" + integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.1": + version "3.0.1" + resolved "https://registry.npmmirror.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" + integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.npmmirror.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + +"@simonwep/pickr@~1.7.0": + version "1.7.4" + resolved "https://registry.npmmirror.com/@simonwep/pickr/-/pickr-1.7.4.tgz#b14fcd945890388b870cd6db4d6c78d531f25141" + integrity sha512-fq7jgKJT21uWGC1mARBHvvd1JYlEf93o7SuVOB4Lr0x/2UPuNC9Oe9n/GzVeg4oVtqMDfh1wIEJpsdOJEZb+3g== + dependencies: + core-js "^3.6.5" + nanopop "^2.1.0" + +"@soda/friendly-errors-webpack-plugin@^1.8.0": + version "1.8.1" + resolved "https://registry.npmmirror.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz#4d4fbb1108993aaa362116247c3d18188a2c6c85" + integrity sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg== + dependencies: + chalk "^3.0.0" + error-stack-parser "^2.0.6" + string-width "^4.2.3" + strip-ansi "^6.0.1" + +"@soda/get-current-script@^1.0.2": + version "1.0.2" + resolved "https://registry.npmmirror.com/@soda/get-current-script/-/get-current-script-1.0.2.tgz#a53515db25d8038374381b73af20bb4f2e508d87" + integrity sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w== + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + +"@types/body-parser@*": + version "1.19.5" + resolved "https://registry.npmmirror.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" + integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bonjour@^3.5.9": + version "3.5.13" + resolved "https://registry.npmmirror.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" + integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== + dependencies: + "@types/node" "*" + +"@types/connect-history-api-fallback@^1.3.5": + version "1.5.4" + resolved "https://registry.npmmirror.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" + integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.38" + resolved "https://registry.npmmirror.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/d3-timer@^2.0.0": + version "2.0.3" + resolved "https://registry.npmmirror.com/@types/d3-timer/-/d3-timer-2.0.3.tgz#d74350a9eb5991f054b2cf8e92efaf22be3e1a25" + integrity sha512-jhAJzaanK5LqyLQ50jJNIrB8fjL9gwWZTgYjevPvkDLMU+kTAZkYsobI59nYoeSrH1PucuyJEi247Pb90t6XUg== + +"@types/eslint-scope@^3.7.3": + version "3.7.7" + resolved "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*", "@types/eslint@^7.29.0 || ^8.4.1": + version "8.56.10" + resolved "https://registry.npmmirror.com/@types/eslint/-/eslint-8.56.10.tgz#eb2370a73bf04a901eeba8f22595c7ee0f7eb58d" + integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^1.0.5": + version "1.0.5" + resolved "https://registry.npmmirror.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": + version "4.19.1" + resolved "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.1.tgz#57d34698bb580720fd6e3c360d4b2fdef579b979" + integrity sha512-ej0phymbFLoCB26dbbq5PGScsf2JAJ4IJHjG10LalgUV36XKTmA4GdA+PVllKvRk0sEKt64X8975qFnkSi0hqA== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@*", "@types/express@^4.17.13": + version "4.17.21" + resolved "https://registry.npmmirror.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" + integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/html-minifier-terser@^6.0.0": + version "6.1.0" + resolved "https://registry.npmmirror.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" + integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== + +"@types/http-errors@*": + version "2.0.4" + resolved "https://registry.npmmirror.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" + integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== + +"@types/http-proxy@^1.17.8": + version "1.17.14" + resolved "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.14.tgz#57f8ccaa1c1c3780644f8a94f9c6b5000b5e2eec" + integrity sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w== + dependencies: + "@types/node" "*" + +"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/mime@^1": + version "1.3.5" + resolved "https://registry.npmmirror.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== + +"@types/minimist@^1.2.0": + version "1.2.5" + resolved "https://registry.npmmirror.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" + integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== + +"@types/node-forge@^1.3.0": + version "1.3.11" + resolved "https://registry.npmmirror.com/@types/node-forge/-/node-forge-1.3.11.tgz#0972ea538ddb0f4d9c2fa0ec5db5724773a604da" + integrity sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ== + dependencies: + "@types/node" "*" + +"@types/node@*": + version "20.12.12" + resolved "https://registry.npmmirror.com/@types/node/-/node-20.12.12.tgz#7cbecdf902085cec634fdb362172dfe12b8f2050" + integrity sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw== + dependencies: + undici-types "~5.26.4" + +"@types/normalize-package-data@^2.4.0": + version "2.4.4" + resolved "https://registry.npmmirror.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" + integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== + +"@types/parse-json@^4.0.0": + version "4.0.2" + resolved "https://registry.npmmirror.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" + integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== + +"@types/qs@*": + version "6.9.15" + resolved "https://registry.npmmirror.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" + integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== + +"@types/range-parser@*": + version "1.2.7" + resolved "https://registry.npmmirror.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== + +"@types/retry@0.12.0": + version "0.12.0" + resolved "https://registry.npmmirror.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== + +"@types/send@*": + version "0.17.4" + resolved "https://registry.npmmirror.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" + integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-index@^1.9.1": + version "1.9.4" + resolved "https://registry.npmmirror.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" + integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== + dependencies: + "@types/express" "*" + +"@types/serve-static@*", "@types/serve-static@^1.13.10": + version "1.15.7" + resolved "https://registry.npmmirror.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" + integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + "@types/send" "*" + +"@types/sockjs@^0.3.33": + version "0.3.36" + resolved "https://registry.npmmirror.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" + integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== + dependencies: + "@types/node" "*" + +"@types/ws@^8.5.5": + version "8.5.10" + resolved "https://registry.npmmirror.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" + integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== + dependencies: + "@types/node" "*" + +"@vue/babel-helper-vue-jsx-merge-props@^1.4.0": + version "1.4.0" + resolved "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz#8d53a1e21347db8edbe54d339902583176de09f2" + integrity sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA== + +"@vue/babel-helper-vue-transform-on@1.2.2": + version "1.2.2" + resolved "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.2.tgz#7f1f817a4f00ad531651a8d1d22e22d9e42807ef" + integrity sha512-nOttamHUR3YzdEqdM/XXDyCSdxMA9VizUKoroLX6yTyRtggzQMHXcmwh8a7ZErcJttIBIc9s68a1B8GZ+Dmvsw== + +"@vue/babel-plugin-jsx@^1.0.3": + version "1.2.2" + resolved "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.2.tgz#eb426fb4660aa510bb8d188ff0ec140405a97d8a" + integrity sha512-nYTkZUVTu4nhP199UoORePsql0l+wj7v/oyQjtThUVhJl1U+6qHuoVhIvR3bf7eVKjbCK+Cs2AWd7mi9Mpz9rA== + dependencies: + "@babel/helper-module-imports" "~7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/template" "^7.23.9" + "@babel/traverse" "^7.23.9" + "@babel/types" "^7.23.9" + "@vue/babel-helper-vue-transform-on" "1.2.2" + "@vue/babel-plugin-resolve-type" "1.2.2" + camelcase "^6.3.0" + html-tags "^3.3.1" + svg-tags "^1.0.0" + +"@vue/babel-plugin-resolve-type@1.2.2": + version "1.2.2" + resolved "https://registry.npmmirror.com/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.2.tgz#66844898561da6449e0f4a261b0c875118e0707b" + integrity sha512-EntyroPwNg5IPVdUJupqs0CFzuf6lUrVvCspmv2J1FITLeGnUCuoGNNk78dgCusxEiYj6RMkTJflGSxk5aIC4A== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/helper-module-imports" "~7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/parser" "^7.23.9" + "@vue/compiler-sfc" "^3.4.15" + +"@vue/babel-plugin-transform-vue-jsx@^1.4.0": + version "1.4.0" + resolved "https://registry.npmmirror.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz#4d4b3d46a39ea62b7467dd6e26ce47f7ceafb2fe" + integrity sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + "@vue/babel-helper-vue-jsx-merge-props" "^1.4.0" + html-tags "^2.0.0" + lodash.kebabcase "^4.1.1" + svg-tags "^1.0.0" + +"@vue/babel-preset-app@^5.0.8": + version "5.0.8" + resolved "https://registry.npmmirror.com/@vue/babel-preset-app/-/babel-preset-app-5.0.8.tgz#ce38f76314f5265d62a89756ef264c21f1d351a1" + integrity sha512-yl+5qhpjd8e1G4cMXfORkkBlvtPCIgmRf3IYCWYDKIQ7m+PPa5iTm4feiNmCMD6yGqQWMhhK/7M3oWGL9boKwg== + dependencies: + "@babel/core" "^7.12.16" + "@babel/helper-compilation-targets" "^7.12.16" + "@babel/helper-module-imports" "^7.12.13" + "@babel/plugin-proposal-class-properties" "^7.12.13" + "@babel/plugin-proposal-decorators" "^7.12.13" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.12.13" + "@babel/plugin-transform-runtime" "^7.12.15" + "@babel/preset-env" "^7.12.16" + "@babel/runtime" "^7.12.13" + "@vue/babel-plugin-jsx" "^1.0.3" + "@vue/babel-preset-jsx" "^1.1.2" + babel-plugin-dynamic-import-node "^2.3.3" + core-js "^3.8.3" + core-js-compat "^3.8.3" + semver "^7.3.4" + +"@vue/babel-preset-jsx@^1.1.2": + version "1.4.0" + resolved "https://registry.npmmirror.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.4.0.tgz#f4914ba314235ab097bc4372ed67473c0780bfcc" + integrity sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA== + dependencies: + "@vue/babel-helper-vue-jsx-merge-props" "^1.4.0" + "@vue/babel-plugin-transform-vue-jsx" "^1.4.0" + "@vue/babel-sugar-composition-api-inject-h" "^1.4.0" + "@vue/babel-sugar-composition-api-render-instance" "^1.4.0" + "@vue/babel-sugar-functional-vue" "^1.4.0" + "@vue/babel-sugar-inject-h" "^1.4.0" + "@vue/babel-sugar-v-model" "^1.4.0" + "@vue/babel-sugar-v-on" "^1.4.0" + +"@vue/babel-sugar-composition-api-inject-h@^1.4.0": + version "1.4.0" + resolved "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.4.0.tgz#187e1389f8871d89ece743bb50aed713be9d6c85" + integrity sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@vue/babel-sugar-composition-api-render-instance@^1.4.0": + version "1.4.0" + resolved "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.4.0.tgz#2c1607ae6dffdab47e785bc01fa45ba756e992c1" + integrity sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@vue/babel-sugar-functional-vue@^1.4.0": + version "1.4.0" + resolved "https://registry.npmmirror.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.4.0.tgz#60da31068567082287c7337c66ef4df04e0a1029" + integrity sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@vue/babel-sugar-inject-h@^1.4.0": + version "1.4.0" + resolved "https://registry.npmmirror.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.4.0.tgz#bf39aa6631fb1d0399b1c49b4c59e1c8899b4363" + integrity sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@vue/babel-sugar-v-model@^1.4.0": + version "1.4.0" + resolved "https://registry.npmmirror.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.4.0.tgz#a51d986609f430c4f70ada3a93cc560a2970f720" + integrity sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + "@vue/babel-helper-vue-jsx-merge-props" "^1.4.0" + "@vue/babel-plugin-transform-vue-jsx" "^1.4.0" + camelcase "^5.0.0" + html-tags "^2.0.0" + svg-tags "^1.0.0" + +"@vue/babel-sugar-v-on@^1.4.0": + version "1.4.0" + resolved "https://registry.npmmirror.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.4.0.tgz#43b7106a9672d8cbeefc0eb8afe1d376edc6166e" + integrity sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + "@vue/babel-plugin-transform-vue-jsx" "^1.4.0" + camelcase "^5.0.0" + +"@vue/cli-overlay@^5.0.8": + version "5.0.8" + resolved "https://registry.npmmirror.com/@vue/cli-overlay/-/cli-overlay-5.0.8.tgz#b61477acdc43bbd42fce6326d228471201ecdcdd" + integrity sha512-KmtievE/B4kcXp6SuM2gzsnSd8WebkQpg3XaB6GmFh1BJGRqa1UiW9up7L/Q67uOdTigHxr5Ar2lZms4RcDjwQ== + +"@vue/cli-plugin-babel@~5.0.0": + version "5.0.8" + resolved "https://registry.npmmirror.com/@vue/cli-plugin-babel/-/cli-plugin-babel-5.0.8.tgz#54f9a07900f29baff54803dcfa916c602894feb7" + integrity sha512-a4qqkml3FAJ3auqB2kN2EMPocb/iu0ykeELwed+9B1c1nQ1HKgslKMHMPavYx3Cd/QAx2mBD4hwKBqZXEI/CsQ== + dependencies: + "@babel/core" "^7.12.16" + "@vue/babel-preset-app" "^5.0.8" + "@vue/cli-shared-utils" "^5.0.8" + babel-loader "^8.2.2" + thread-loader "^3.0.0" + webpack "^5.54.0" + +"@vue/cli-plugin-eslint@~5.0.0": + version "5.0.8" + resolved "https://registry.npmmirror.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-5.0.8.tgz#754939265c2c5b746fa36c7d7705a89138e193bf" + integrity sha512-d11+I5ONYaAPW1KyZj9GlrV/E6HZePq5L5eAF5GgoVdu6sxr6bDgEoxzhcS1Pk2eh8rn1MxG/FyyR+eCBj/CNg== + dependencies: + "@vue/cli-shared-utils" "^5.0.8" + eslint-webpack-plugin "^3.1.0" + globby "^11.0.2" + webpack "^5.54.0" + yorkie "^2.0.0" + +"@vue/cli-plugin-router@^5.0.8", "@vue/cli-plugin-router@~5.0.0": + version "5.0.8" + resolved "https://registry.npmmirror.com/@vue/cli-plugin-router/-/cli-plugin-router-5.0.8.tgz#a113ec626f3d4216d20496c42d35533bce9e889f" + integrity sha512-Gmv4dsGdAsWPqVijz3Ux2OS2HkMrWi1ENj2cYL75nUeL+Xj5HEstSqdtfZ0b1q9NCce+BFB6QnHfTBXc/fCvMg== + dependencies: + "@vue/cli-shared-utils" "^5.0.8" + +"@vue/cli-plugin-vuex@^5.0.8": + version "5.0.8" + resolved "https://registry.npmmirror.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-5.0.8.tgz#0d4cb3020f9102bea9288d750729dde176c66ccd" + integrity sha512-HSYWPqrunRE5ZZs8kVwiY6oWcn95qf/OQabwLfprhdpFWAGtLStShjsGED2aDpSSeGAskQETrtR/5h7VqgIlBA== + +"@vue/cli-service@~5.0.0": + version "5.0.8" + resolved "https://registry.npmmirror.com/@vue/cli-service/-/cli-service-5.0.8.tgz#cf3f6f1b7bf0fba9cdab86b6bec4f9897f982dac" + integrity sha512-nV7tYQLe7YsTtzFrfOMIHc5N2hp5lHG2rpYr0aNja9rNljdgcPZLyQRb2YRivTHqTv7lI962UXFURcpStHgyFw== + dependencies: + "@babel/helper-compilation-targets" "^7.12.16" + "@soda/friendly-errors-webpack-plugin" "^1.8.0" + "@soda/get-current-script" "^1.0.2" + "@types/minimist" "^1.2.0" + "@vue/cli-overlay" "^5.0.8" + "@vue/cli-plugin-router" "^5.0.8" + "@vue/cli-plugin-vuex" "^5.0.8" + "@vue/cli-shared-utils" "^5.0.8" + "@vue/component-compiler-utils" "^3.3.0" + "@vue/vue-loader-v15" "npm:vue-loader@^15.9.7" + "@vue/web-component-wrapper" "^1.3.0" + acorn "^8.0.5" + acorn-walk "^8.0.2" + address "^1.1.2" + autoprefixer "^10.2.4" + browserslist "^4.16.3" + case-sensitive-paths-webpack-plugin "^2.3.0" + cli-highlight "^2.1.10" + clipboardy "^2.3.0" + cliui "^7.0.4" + copy-webpack-plugin "^9.0.1" + css-loader "^6.5.0" + css-minimizer-webpack-plugin "^3.0.2" + cssnano "^5.0.0" + debug "^4.1.1" + default-gateway "^6.0.3" + dotenv "^10.0.0" + dotenv-expand "^5.1.0" + fs-extra "^9.1.0" + globby "^11.0.2" + hash-sum "^2.0.0" + html-webpack-plugin "^5.1.0" + is-file-esm "^1.0.0" + launch-editor-middleware "^2.2.1" + lodash.defaultsdeep "^4.6.1" + lodash.mapvalues "^4.6.0" + mini-css-extract-plugin "^2.5.3" + minimist "^1.2.5" + module-alias "^2.2.2" + portfinder "^1.0.26" + postcss "^8.2.6" + postcss-loader "^6.1.1" + progress-webpack-plugin "^1.0.12" + ssri "^8.0.1" + terser-webpack-plugin "^5.1.1" + thread-loader "^3.0.0" + vue-loader "^17.0.0" + vue-style-loader "^4.1.3" + webpack "^5.54.0" + webpack-bundle-analyzer "^4.4.0" + webpack-chain "^6.5.1" + webpack-dev-server "^4.7.3" + webpack-merge "^5.7.3" + webpack-virtual-modules "^0.4.2" + whatwg-fetch "^3.6.2" + +"@vue/cli-shared-utils@^5.0.8": + version "5.0.8" + resolved "https://registry.npmmirror.com/@vue/cli-shared-utils/-/cli-shared-utils-5.0.8.tgz#75fc96528eba2b1c7e33cb7e989a984ddef99c8a" + integrity sha512-uK2YB7bBVuQhjOJF+O52P9yFMXeJVj7ozqJkwYE9PlMHL1LMHjtCYm4cSdOebuPzyP+/9p0BimM/OqxsevIopQ== + dependencies: + "@achrinza/node-ipc" "^9.2.5" + chalk "^4.1.2" + execa "^1.0.0" + joi "^17.4.0" + launch-editor "^2.2.1" + lru-cache "^6.0.0" + node-fetch "^2.6.7" + open "^8.0.2" + ora "^5.3.0" + read-pkg "^5.1.1" + semver "^7.3.4" + strip-ansi "^6.0.0" + +"@vue/compiler-core@3.4.27": + version "3.4.27" + resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.4.27.tgz#e69060f4b61429fe57976aa5872cfa21389e4d91" + integrity sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg== + dependencies: + "@babel/parser" "^7.24.4" + "@vue/shared" "3.4.27" + entities "^4.5.0" + estree-walker "^2.0.2" + source-map-js "^1.2.0" + +"@vue/compiler-dom@3.4.27": + version "3.4.27" + resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz#d51d35f40d00ce235d7afc6ad8b09dfd92b1cc1c" + integrity sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw== + dependencies: + "@vue/compiler-core" "3.4.27" + "@vue/shared" "3.4.27" + +"@vue/compiler-sfc@2.7.16": + version "2.7.16" + resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz#ff81711a0fac9c68683d8bb00b63f857de77dc83" + integrity sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg== + dependencies: + "@babel/parser" "^7.23.5" + postcss "^8.4.14" + source-map "^0.6.1" + optionalDependencies: + prettier "^1.18.2 || ^2.0.0" + +"@vue/compiler-sfc@^3.4.15": + version "3.4.27" + resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.4.27.tgz#399cac1b75c6737bf5440dc9cf3c385bb2959701" + integrity sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA== + dependencies: + "@babel/parser" "^7.24.4" + "@vue/compiler-core" "3.4.27" + "@vue/compiler-dom" "3.4.27" + "@vue/compiler-ssr" "3.4.27" + "@vue/shared" "3.4.27" + estree-walker "^2.0.2" + magic-string "^0.30.10" + postcss "^8.4.38" + source-map-js "^1.2.0" + +"@vue/compiler-ssr@3.4.27": + version "3.4.27" + resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.4.27.tgz#2a8ecfef1cf448b09be633901a9c020360472e3d" + integrity sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw== + dependencies: + "@vue/compiler-dom" "3.4.27" + "@vue/shared" "3.4.27" + +"@vue/component-compiler-utils@^3.1.0", "@vue/component-compiler-utils@^3.3.0": + version "3.3.0" + resolved "https://registry.npmmirror.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz#f9f5fb53464b0c37b2c8d2f3fbfe44df60f61dc9" + integrity sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ== + dependencies: + consolidate "^0.15.1" + hash-sum "^1.0.2" + lru-cache "^4.1.2" + merge-source-map "^1.1.0" + postcss "^7.0.36" + postcss-selector-parser "^6.0.2" + source-map "~0.6.1" + vue-template-es2015-compiler "^1.9.0" + optionalDependencies: + prettier "^1.18.2 || ^2.0.0" + +"@vue/shared@3.4.27": + version "3.4.27" + resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.27.tgz#f05e3cd107d157354bb4ae7a7b5fc9cf73c63b50" + integrity sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA== + +"@vue/vue-loader-v15@npm:vue-loader@^15.9.7": + version "15.11.1" + resolved "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.11.1.tgz#dee91169211276ed43c5715caef88a56b1f497b0" + integrity sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q== + dependencies: + "@vue/component-compiler-utils" "^3.1.0" + hash-sum "^1.0.2" + loader-utils "^1.1.0" + vue-hot-reload-api "^2.3.0" + vue-style-loader "^4.1.0" + +"@vue/web-component-wrapper@^1.3.0": + version "1.3.0" + resolved "https://registry.npmmirror.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz#b6b40a7625429d2bd7c2281ddba601ed05dc7f1a" + integrity sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA== + +"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": + version "1.12.1" + resolved "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" + integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + +"@webassemblyjs/floating-point-hex-parser@1.11.6": + version "1.11.6" + resolved "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" + integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== + +"@webassemblyjs/helper-api-error@1.11.6": + version "1.11.6" + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" + integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== + +"@webassemblyjs/helper-buffer@1.12.1": + version "1.12.1" + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#6df20d272ea5439bf20ab3492b7fb70e9bfcb3f6" + integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== + +"@webassemblyjs/helper-numbers@1.11.6": + version "1.11.6" + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" + integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.6": + version "1.11.6" + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" + integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== + +"@webassemblyjs/helper-wasm-section@1.12.1": + version "1.12.1" + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#3da623233ae1a60409b509a52ade9bc22a37f7bf" + integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/wasm-gen" "1.12.1" + +"@webassemblyjs/ieee754@1.11.6": + version "1.11.6" + resolved "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" + integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.6": + version "1.11.6" + resolved "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" + integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.6": + version "1.11.6" + resolved "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" + integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== + +"@webassemblyjs/wasm-edit@^1.12.1": + version "1.12.1" + resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#9f9f3ff52a14c980939be0ef9d5df9ebc678ae3b" + integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.12.1" + "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/wasm-opt" "1.12.1" + "@webassemblyjs/wasm-parser" "1.12.1" + "@webassemblyjs/wast-printer" "1.12.1" + +"@webassemblyjs/wasm-gen@1.12.1": + version "1.12.1" + resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#a6520601da1b5700448273666a71ad0a45d78547" + integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wasm-opt@1.12.1": + version "1.12.1" + resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#9e6e81475dfcfb62dab574ac2dda38226c232bc5" + integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/wasm-parser" "1.12.1" + +"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": + version "1.12.1" + resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#c47acb90e6f083391e3fa61d113650eea1e95937" + integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wast-printer@1.12.1": + version "1.12.1" + resolved "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#bcecf661d7d1abdaf989d8341a4833e33e2b31ac" + integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-import-assertions@^1.9.0: + version "1.9.0" + resolved "https://registry.npmmirror.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== + +acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.0.0, acorn-walk@^8.0.2: + version "8.3.2" + resolved "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" + integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== + +acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.0.4, acorn@^8.0.5, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.npmmirror.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + +add-dom-event-listener@^1.0.2: + version "1.1.0" + resolved "https://registry.npmmirror.com/add-dom-event-listener/-/add-dom-event-listener-1.1.0.tgz#6a92db3a0dd0abc254e095c0f1dc14acbbaae310" + integrity sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw== + dependencies: + object-assign "4.x" + +address@^1.1.2: + version "1.2.2" + resolved "https://registry.npmmirror.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@^8.0.1, ajv@^8.9.0: + version "8.13.0" + resolved "https://registry.npmmirror.com/ajv/-/ajv-8.13.0.tgz#a3939eaec9fb80d217ddf0c3376948c023f28c91" + integrity sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA== + dependencies: + fast-deep-equal "^3.1.3" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.4.1" + +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-escapes@^3.0.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.npmmirror.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-regex@^3.0.0: + version "3.0.1" + resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ant-design-vue@^1.7.8: + version "1.7.8" + resolved "https://registry.npmmirror.com/ant-design-vue/-/ant-design-vue-1.7.8.tgz#1abbf86b68a4f5b1000bea0487b8031dc0001661" + integrity sha512-F1hmiS9vwbyfuFvlamdW5l9bHKqRlj9wHaGDIE41NZMWXyWy8qL0UFa/+I0Wl8gQWZCqODW5pN6Yfoyn85At3A== + dependencies: + "@ant-design/icons" "^2.1.1" + "@ant-design/icons-vue" "^2.0.0" + "@simonwep/pickr" "~1.7.0" + add-dom-event-listener "^1.0.2" + array-tree-filter "^2.1.0" + async-validator "^3.0.3" + babel-helper-vue-jsx-merge-props "^2.0.3" + babel-runtime "6.x" + classnames "^2.2.5" + component-classes "^1.2.6" + dom-align "^1.10.4" + dom-closest "^0.2.0" + dom-scroll-into-view "^2.0.0" + enquire.js "^2.1.6" + intersperse "^1.0.0" + is-mobile "^2.2.1" + is-negative-zero "^2.0.0" + ismobilejs "^1.0.0" + json2mq "^0.2.0" + lodash "^4.17.5" + moment "^2.21.0" + mutationobserver-shim "^0.3.2" + node-emoji "^1.10.0" + omit.js "^1.0.0" + raf "^3.4.0" + resize-observer-polyfill "^1.5.1" + shallow-equal "^1.0.0" + shallowequal "^1.0.2" + vue-ref "^2.0.0" + warning "^4.0.0" + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arch@^2.1.1: + version "2.2.0" + resolved "https://registry.npmmirror.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" + integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-tree-filter@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190" + integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +asciinema-player@^3.0.1: + version "3.7.1" + resolved "https://registry.npmmirror.com/asciinema-player/-/asciinema-player-3.7.1.tgz#26284c71d5b89b4594e75847599bcc929f3acc56" + integrity sha512-zDJteGjBzNQhHEnD0aG7GqV3E53sOyKb1WCxKNRm2PquU70Lq3s4xxb91wyDS0hBJ3J/TB8aY3y8gjGPN+T23A== + dependencies: + "@babel/runtime" "^7.21.0" + solid-js "^1.3.0" + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async-validator@^3.0.3: + version "3.5.2" + resolved "https://registry.npmmirror.com/async-validator/-/async-validator-3.5.2.tgz#68e866a96824e8b2694ff7a831c1a25c44d5e500" + integrity sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ== + +async@^2.6.4: + version "2.6.4" + resolved "https://registry.npmmirror.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== + dependencies: + lodash "^4.17.14" + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +autoprefixer@^10.2.4: + version "10.4.19" + resolved "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.19.tgz#ad25a856e82ee9d7898c59583c1afeb3fa65f89f" + integrity sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew== + dependencies: + browserslist "^4.23.0" + caniuse-lite "^1.0.30001599" + fraction.js "^4.3.7" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +axios@^0.23.0: + version "0.23.0" + resolved "https://registry.npmmirror.com/axios/-/axios-0.23.0.tgz#b0fa5d0948a8d1d75e3d5635238b6c4625b05149" + integrity sha512-NmvAE4i0YAv5cKq8zlDoPd1VLKAqX5oLuZKs8xkJa4qi6RGn0uhCYFjWtHHC9EM/MwOwYWOs53W+V0aqEXq1sg== + dependencies: + follow-redirects "^1.14.4" + +babel-helper-vue-jsx-merge-props@^2.0.3: + version "2.0.3" + resolved "https://registry.npmmirror.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz#22aebd3b33902328e513293a8e4992b384f9f1b6" + integrity sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg== + +babel-loader@^8.2.2: + version "8.3.0" + resolved "https://registry.npmmirror.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" + integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== + dependencies: + find-cache-dir "^3.3.1" + loader-utils "^2.0.0" + make-dir "^3.1.0" + schema-utils "^2.6.5" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.npmmirror.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-polyfill-corejs2@^0.4.10: + version "0.4.11" + resolved "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33" + integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.6.2" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: + version "0.10.4" + resolved "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz#789ac82405ad664c20476d0233b485281deb9c77" + integrity sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.1" + core-js-compat "^3.36.1" + +babel-plugin-polyfill-regenerator@^0.6.1: + version "0.6.2" + resolved "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#addc47e240edd1da1058ebda03021f382bba785e" + integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.2" + +babel-runtime@6.x, babel-runtime@^6.23.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.npmmirror.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +bluebird@^3.1.1: + version "3.7.2" + resolved "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +body-parser@1.20.2: + version "1.20.2" + resolved "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" + integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + +bonjour-service@^1.0.11: + version "1.2.1" + resolved "https://registry.npmmirror.com/bonjour-service/-/bonjour-service-1.2.1.tgz#eb41b3085183df3321da1264719fbada12478d02" + integrity sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw== + dependencies: + fast-deep-equal "^3.1.3" + multicast-dns "^7.2.5" + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace@^0.11.0: + version "0.11.1" + resolved "https://registry.npmmirror.com/brace/-/brace-0.11.1.tgz#4896fcc9d544eef45f4bb7660db320d3b379fe58" + integrity sha512-Fc8Ne62jJlKHiG/ajlonC4Sd66Pq68fFwK4ihJGNZpGqboc324SQk+lRvMzpPRuJOmfrJefdG8/7JdWX4bzJ2Q== + +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browserslist@^4.0.0, browserslist@^4.16.3, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.23.0: + version "4.23.0" + resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== + dependencies: + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +call-bind@^1.0.5, call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.npmmirror.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.3.0: + version "6.3.0" + resolved "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001587, caniuse-lite@^1.0.30001599: + version "1.0.30001621" + resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001621.tgz#4adcb443c8b9c8303e04498318f987616b8fea2e" + integrity sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA== + +case-sensitive-paths-webpack-plugin@^2.3.0: + version "2.4.0" + resolved "https://registry.npmmirror.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" + integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== + +chalk@^2.1.0, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +ci-info@^1.5.0: + version "1.6.0" + resolved "https://registry.npmmirror.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" + integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== + +classnames@^2.2.5: + version "2.5.1" + resolved "https://registry.npmmirror.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" + integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== + +clean-css@^5.2.2: + version "5.3.3" + resolved "https://registry.npmmirror.com/clean-css/-/clean-css-5.3.3.tgz#b330653cd3bd6b75009cc25c714cae7b93351ccd" + integrity sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg== + dependencies: + source-map "~0.6.0" + +cli-cursor@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== + dependencies: + restore-cursor "^2.0.0" + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-highlight@^2.1.10: + version "2.1.11" + resolved "https://registry.npmmirror.com/cli-highlight/-/cli-highlight-2.1.11.tgz#49736fa452f0aaf4fae580e30acb26828d2dc1bf" + integrity sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg== + dependencies: + chalk "^4.0.0" + highlight.js "^10.7.1" + mz "^2.4.0" + parse5 "^5.1.1" + parse5-htmlparser2-tree-adapter "^6.0.0" + yargs "^16.0.0" + +cli-spinners@^2.5.0: + version "2.9.2" + resolved "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + +clipboardy@^2.3.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/clipboardy/-/clipboardy-2.3.0.tgz#3c2903650c68e46a91b388985bc2774287dba290" + integrity sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ== + dependencies: + arch "^2.1.1" + execa "^1.0.0" + is-wsl "^2.1.1" + +cliui@^7.0.2, cliui@^7.0.4: + version "7.0.4" + resolved "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colord@^2.9.1: + version "2.9.3" + resolved "https://registry.npmmirror.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" + integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== + +colorette@^2.0.10: + version "2.0.20" + resolved "https://registry.npmmirror.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +component-classes@^1.2.6: + version "1.2.6" + resolved "https://registry.npmmirror.com/component-classes/-/component-classes-1.2.6.tgz#c642394c3618a4d8b0b8919efccbbd930e5cd691" + integrity sha512-hPFGULxdwugu1QWW3SvVOCUHLzO34+a2J6Wqy0c5ASQkfi9/8nZcBB0ZohaEbXOQlCflMAEMmEWk7u7BVs4koA== + dependencies: + component-indexof "0.0.3" + +component-indexof@0.0.3: + version "0.0.3" + resolved "https://registry.npmmirror.com/component-indexof/-/component-indexof-0.0.3.tgz#11d091312239eb8f32c8f25ae9cb002ffe8d3c24" + integrity sha512-puDQKvx/64HZXb4hBwIcvQLaLgux8o1CbWl39s41hrIIZDl1lJiD5jc22gj3RBeGK0ovxALDYpIbyjqDUUl0rw== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +connect-history-api-fallback@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" + integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== + +consolidate@^0.15.1: + version "0.15.1" + resolved "https://registry.npmmirror.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" + integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw== + dependencies: + bluebird "^3.1.1" + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.6.0: + version "0.6.0" + resolved "https://registry.npmmirror.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" + integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== + +copy-anything@^2.0.1: + version "2.0.6" + resolved "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" + integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== + dependencies: + is-what "^3.14.1" + +copy-webpack-plugin@^9.0.1: + version "9.1.0" + resolved "https://registry.npmmirror.com/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz#2d2c460c4c4695ec0a58afb2801a1205256c4e6b" + integrity sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA== + dependencies: + fast-glob "^3.2.7" + glob-parent "^6.0.1" + globby "^11.0.3" + normalize-path "^3.0.0" + schema-utils "^3.1.1" + serialize-javascript "^6.0.0" + +core-js-compat@^3.31.0, core-js-compat@^3.36.1, core-js-compat@^3.8.3: + version "3.37.1" + resolved "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.37.1.tgz#c844310c7852f4bdf49b8d339730b97e17ff09ee" + integrity sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg== + dependencies: + browserslist "^4.23.0" + +core-js@^2.4.0: + version "2.6.12" + resolved "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + +core-js@^3.6.5, core-js@^3.8.3: + version "3.37.1" + resolved "https://registry.npmmirror.com/core-js/-/core-js-3.37.1.tgz#d21751ddb756518ac5a00e4d66499df981a62db9" + integrity sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^7.0.0: + version "7.1.0" + resolved "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A== + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css-declaration-sorter@^6.3.1: + version "6.4.1" + resolved "https://registry.npmmirror.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71" + integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== + +css-loader@^6.5.0: + version "6.11.0" + resolved "https://registry.npmmirror.com/css-loader/-/css-loader-6.11.0.tgz#33bae3bf6363d0a7c2cf9031c96c744ff54d85ba" + integrity sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g== + dependencies: + icss-utils "^5.1.0" + postcss "^8.4.33" + postcss-modules-extract-imports "^3.1.0" + postcss-modules-local-by-default "^4.0.5" + postcss-modules-scope "^3.2.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.2.0" + semver "^7.5.4" + +css-minimizer-webpack-plugin@^3.0.2: + version "3.4.1" + resolved "https://registry.npmmirror.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz#ab78f781ced9181992fe7b6e4f3422e76429878f" + integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== + dependencies: + cssnano "^5.0.6" + jest-worker "^27.0.2" + postcss "^8.3.5" + schema-utils "^4.0.0" + serialize-javascript "^6.0.0" + source-map "^0.6.1" + +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-tree@^1.1.2, css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^5.2.14: + version "5.2.14" + resolved "https://registry.npmmirror.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" + integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== + dependencies: + css-declaration-sorter "^6.3.1" + cssnano-utils "^3.1.0" + postcss-calc "^8.2.3" + postcss-colormin "^5.3.1" + postcss-convert-values "^5.1.3" + postcss-discard-comments "^5.1.2" + postcss-discard-duplicates "^5.1.0" + postcss-discard-empty "^5.1.1" + postcss-discard-overridden "^5.1.0" + postcss-merge-longhand "^5.1.7" + postcss-merge-rules "^5.1.4" + postcss-minify-font-values "^5.1.0" + postcss-minify-gradients "^5.1.1" + postcss-minify-params "^5.1.4" + postcss-minify-selectors "^5.2.1" + postcss-normalize-charset "^5.1.0" + postcss-normalize-display-values "^5.1.0" + postcss-normalize-positions "^5.1.1" + postcss-normalize-repeat-style "^5.1.1" + postcss-normalize-string "^5.1.0" + postcss-normalize-timing-functions "^5.1.0" + postcss-normalize-unicode "^5.1.1" + postcss-normalize-url "^5.1.0" + postcss-normalize-whitespace "^5.1.1" + postcss-ordered-values "^5.1.3" + postcss-reduce-initial "^5.1.2" + postcss-reduce-transforms "^5.1.0" + postcss-svgo "^5.1.0" + postcss-unique-selectors "^5.1.1" + +cssnano-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" + integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== + +cssnano@^5.0.0, cssnano@^5.0.6: + version "5.1.15" + resolved "https://registry.npmmirror.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" + integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== + dependencies: + cssnano-preset-default "^5.2.14" + lilconfig "^2.0.3" + yaml "^1.10.2" + +csso@^4.2.0: + version "4.2.0" + resolved "https://registry.npmmirror.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +csstype@^3.0.8, csstype@^3.1.0: + version "3.1.3" + resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +"d3-color@1 - 3": + version "3.1.0" + resolved "https://registry.npmmirror.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" + integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== + +d3-ease@^1.0.5: + version "1.0.7" + resolved "https://registry.npmmirror.com/d3-ease/-/d3-ease-1.0.7.tgz#9a834890ef8b8ae8c558b2fe55bd57f5993b85e2" + integrity sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ== + +d3-interpolate@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" + integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== + dependencies: + d3-color "1 - 3" + +d3-timer@^1.0.9: + version "1.0.10" + resolved "https://registry.npmmirror.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5" + integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw== + +de-indent@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" + integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg== + +debounce@^1.2.1: + version "1.2.1" + resolved "https://registry.npmmirror.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" + integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: + version "4.3.4" + resolved "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^1.5.2: + version "1.5.2" + resolved "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" + integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ== + +default-gateway@^6.0.3: + version "6.0.3" + resolved "https://registry.npmmirror.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== + dependencies: + execa "^5.0.0" + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.npmmirror.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +define-data-property@^1.0.1, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-browser@^5.0.0, detect-browser@^5.1.0: + version "5.3.0" + resolved "https://registry.npmmirror.com/detect-browser/-/detect-browser-5.3.0.tgz#9705ef2bddf46072d0f7265a1fe300e36fe7ceca" + integrity sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w== + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dns-packet@^5.2.2: + version "5.6.1" + resolved "https://registry.npmmirror.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" + integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-align@^1.10.4: + version "1.12.4" + resolved "https://registry.npmmirror.com/dom-align/-/dom-align-1.12.4.tgz#3503992eb2a7cfcb2ed3b2a6d21e0b9c00d54511" + integrity sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw== + +dom-closest@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/dom-closest/-/dom-closest-0.2.0.tgz#ebd9f91d1bf22e8d6f477876bbcd3ec90216c0cf" + integrity sha512-6neTn1BtJlTSt+XSISXpnOsF1uni1CHsP/tmzZMGWxasYFHsBOqrHPnzmneqEgKhpagnfnfSfbvRRW0xFsBHAA== + dependencies: + dom-matches ">=1.0.1" + +dom-converter@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-matches@>=1.0.1: + version "2.0.0" + resolved "https://registry.npmmirror.com/dom-matches/-/dom-matches-2.0.0.tgz#d2728b416a87533980eb089b848d253cf23a758c" + integrity sha512-2VI856xEDCLXi19W+4BechR5/oIS6bKCKqcf16GR8Pg7dGLJ/eBOWVbCmQx2ISvYH6wTNx5Ef7JTOw1dRGRx6A== + +dom-scroll-into-view@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/dom-scroll-into-view/-/dom-scroll-into-view-2.0.1.tgz#0decc8522801fd8d3f1c6ba355a74d382c5f989b" + integrity sha512-bvVTQe1lfaUr1oFzZX80ce9KLDlZ3iU+XGNE/bz9HnGdklTieqsbmsLHe+rT2XWqopvL0PckkYqN7ksmm5pe3w== + +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmmirror.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@^10.0.0: + version "10.0.0" + resolved "https://registry.npmmirror.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== + +duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +easy-stack@1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/easy-stack/-/easy-stack-1.0.1.tgz#8afe4264626988cabb11f3c704ccd0c835411066" + integrity sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.4.668: + version "1.4.779" + resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.779.tgz#bb6f08b93092a564421adcadcc4b92c5055c7a77" + integrity sha512-oaTiIcszNfySXVJzKcjxd2YjPxziAd+GmXyb2HbidCeFo6Z88ygOT7EimlrEQhM2U08VhSrbKhLOXP0kKUCZ6g== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^5.16.0: + version "5.16.1" + resolved "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz#e8bc63d51b826d6f1cbc0a150ecb5a8b0c62e567" + integrity sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +enquire.js@^2.1.6: + version "2.1.6" + resolved "https://registry.npmmirror.com/enquire.js/-/enquire.js-2.1.6.tgz#3e8780c9b8b835084c3f60e166dbc3c2a3c89814" + integrity sha512-/KujNpO+PT63F7Hlpu4h3pE3TokKRHN26JYmQpPyjkRD/N57R7bPDNojMXdi7uveAKjYB7yQnartCxZnFWr0Xw== + +enquirer@^2.3.5: + version "2.4.1" + resolved "https://registry.npmmirror.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" + integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== + dependencies: + ansi-colors "^4.1.1" + strip-ansi "^6.0.1" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +entities@^4.5.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +errno@^0.1.1: + version "0.1.8" + resolved "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.6: + version "2.1.4" + resolved "https://registry.npmmirror.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" + integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== + dependencies: + stackframe "^1.3.4" + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-module-lexer@^1.2.1: + version "1.5.3" + resolved "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.5.3.tgz#25969419de9c0b1fbe54279789023e8a9a788412" + integrity sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg== + +escalade@^3.1.1, escalade@^3.1.2: + version "3.1.2" + resolved "https://registry.npmmirror.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-plugin-vue@^8.0.3: + version "8.7.1" + resolved "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-8.7.1.tgz#f13c53547a0c9d64588a675cc5ecc6ccaf63703f" + integrity sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg== + dependencies: + eslint-utils "^3.0.0" + natural-compare "^1.4.0" + nth-check "^2.0.1" + postcss-selector-parser "^6.0.9" + semver "^7.3.5" + vue-eslint-parser "^8.0.1" + +eslint-scope@5.1.1, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.0.0: + version "7.2.2" + resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.1.0, eslint-visitor-keys@^3.4.1: + version "3.4.3" + resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint-webpack-plugin@^3.1.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz#1978cdb9edc461e4b0195a20da950cf57988347c" + integrity sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w== + dependencies: + "@types/eslint" "^7.29.0 || ^8.4.1" + jest-worker "^28.0.2" + micromatch "^4.0.5" + normalize-path "^3.0.0" + schema-utils "^4.0.0" + +eslint@^7.32.0: + version "7.32.0" + resolved "https://registry.npmmirror.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" + integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.3" + "@humanwhocodes/config-array" "^0.5.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.1.2" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.npmmirror.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + +espree@^9.0.0: + version "9.6.1" + resolved "https://registry.npmmirror.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0: + version "1.5.0" + resolved "https://registry.npmmirror.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +event-pubsub@4.3.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/event-pubsub/-/event-pubsub-4.3.0.tgz#f68d816bc29f1ec02c539dc58c8dd40ce72cb36e" + integrity sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ== + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.npmmirror.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@^0.8.0: + version "0.8.0" + resolved "https://registry.npmmirror.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" + integrity sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA== + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +express@^4.17.3: + version "4.19.2" + resolved "https://registry.npmmirror.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" + integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.2" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.6.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.7, fast-glob@^3.2.9: + version "3.3.2" + resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.npmmirror.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.npmmirror.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fecha@~4.2.0: + version "4.2.3" + resolved "https://registry.npmmirror.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" + integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-cache-dir@^3.3.1: + version "3.3.2" + resolved "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.npmmirror.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +flatted@^3.2.9: + version "3.3.1" + resolved "https://registry.npmmirror.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== + +follow-redirects@^1.0.0, follow-redirects@^1.14.4: + version "1.15.6" + resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" + integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fraction.js@^4.3.7: + version "4.3.7" + resolved "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-monkey@^1.0.4: + version "1.0.6" + resolved "https://registry.npmmirror.com/fs-monkey/-/fs-monkey-1.0.6.tgz#8ead082953e88d992cf3ff844faa907b26756da2" + integrity sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ== + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +gl-matrix@^3.0.0, gl-matrix@^3.3.0, gl-matrix@^3.4.3: + version "3.4.3" + resolved "https://registry.npmmirror.com/gl-matrix/-/gl-matrix-3.4.3.tgz#fc1191e8320009fd4d20e9339595c6041ddc22c9" + integrity sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA== + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.1: + version "6.0.2" + resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.6.0, globals@^13.9.0: + version "13.24.0" + resolved "https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globby@^11.0.2, globby@^11.0.3: + version "11.1.0" + resolved "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6: + version "4.2.11" + resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1: + version "1.0.3" + resolved "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +hash-sum@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" + integrity sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA== + +hash-sum@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a" + integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg== + +hasown@^2.0.0: + version "2.0.2" + resolved "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +highlight.js@^10.7.1: + version "10.7.3" + resolved "https://registry.npmmirror.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" + integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== + +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.npmmirror.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-entities@^2.3.2: + version "2.5.2" + resolved "https://registry.npmmirror.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f" + integrity sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA== + +html-escaper@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +html-minifier-terser@^6.0.2: + version "6.1.0" + resolved "https://registry.npmmirror.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" + integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== + dependencies: + camel-case "^4.1.2" + clean-css "^5.2.2" + commander "^8.3.0" + he "^1.2.0" + param-case "^3.0.4" + relateurl "^0.2.7" + terser "^5.10.0" + +html-tags@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" + integrity sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g== + +html-tags@^3.3.1: + version "3.3.1" + resolved "https://registry.npmmirror.com/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce" + integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ== + +html-webpack-plugin@^5.1.0: + version "5.6.0" + resolved "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz#50a8fa6709245608cb00e811eacecb8e0d7b7ea0" + integrity sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw== + dependencies: + "@types/html-minifier-terser" "^6.0.0" + html-minifier-terser "^6.0.2" + lodash "^4.17.21" + pretty-error "^4.0.0" + tapable "^2.0.0" + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-parser-js@>=0.5.1: + version "0.5.8" + resolved "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" + integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== + +http-proxy-middleware@^2.0.3: + version "2.0.6" + resolved "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" + integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== + dependencies: + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.2.0: + version "5.3.1" + resolved "https://registry.npmmirror.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + +intersperse@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/intersperse/-/intersperse-1.0.0.tgz#f2561fb1cfef9f5277cc3347a22886b4351a5181" + integrity sha512-LGcfug7OTeWkaQ8PEq8XbTy9Jl6uCNg8DrPnQUmwxSY8UETj1Y+LLmpdD0qHdEj6KVchuH3BE3ZzIXQ1t3oFUw== + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +ipaddr.js@^2.0.1: + version "2.2.0" + resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" + integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-ci@^1.0.10: + version "1.2.1" + resolved "https://registry.npmmirror.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" + integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== + dependencies: + ci-info "^1.5.0" + +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-file-esm@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/is-file-esm/-/is-file-esm-1.0.0.tgz#987086b0f5a5318179e9d30f4f2f8d37321e1b5f" + integrity sha512-rZlaNKb4Mr8WlRu2A9XdeoKgnO5aA53XdPHgCKVyCrQ/rWi89RET1+bq37Ru46obaQXeiX4vmFIm1vks41hoSA== + dependencies: + read-pkg-up "^7.0.1" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-mobile@^2.2.1: + version "2.2.2" + resolved "https://registry.npmmirror.com/is-mobile/-/is-mobile-2.2.2.tgz#f6c9c5d50ee01254ce05e739bdd835f1ed4e9954" + integrity sha512-wW/SXnYJkTjs++tVK5b6kVITZpAZPtUrt9SF80vvxGiF/Oywal+COk1jlRkiVq15RFNEQKQY31TkV24/1T5cVg== + +is-negative-zero@^2.0.0: + version "2.0.3" + resolved "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-what@^3.14.1: + version "3.14.1" + resolved "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== + +is-wsl@^2.1.1, is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +ismobilejs@^1.0.0: + version "1.1.1" + resolved "https://registry.npmmirror.com/ismobilejs/-/ismobilejs-1.1.1.tgz#c56ca0ae8e52b24ca0f22ba5ef3215a2ddbbaa0e" + integrity sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +javascript-stringify@^2.0.1: + version "2.1.0" + resolved "https://registry.npmmirror.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz#27c76539be14d8bd128219a2d731b09337904e79" + integrity sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg== + +jest-worker@^27.0.2, jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest-worker@^28.0.2: + version "28.1.3" + resolved "https://registry.npmmirror.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" + integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +joi@^17.4.0: + version "17.13.1" + resolved "https://registry.npmmirror.com/joi/-/joi-17.13.1.tgz#9c7b53dc3b44dd9ae200255cc3b398874918a6ca" + integrity sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg== + dependencies: + "@hapi/hoek" "^9.3.0" + "@hapi/topo" "^5.1.0" + "@sideway/address" "^4.1.5" + "@sideway/formula" "^3.0.1" + "@sideway/pinpoint" "^2.0.0" + +js-md5@^0.7.3: + version "0.7.3" + resolved "https://registry.npmmirror.com/js-md5/-/js-md5-0.7.3.tgz#b4f2fbb0b327455f598d6727e38ec272cd09c3f2" + integrity sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ== + +js-message@1.0.7: + version "1.0.7" + resolved "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz#fbddd053c7a47021871bb8b2c95397cc17c20e47" + integrity sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json2mq@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/json2mq/-/json2mq-0.2.0.tgz#b637bd3ba9eabe122c83e9720483aeb10d2c904a" + integrity sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA== + dependencies: + string-convert "^0.2.0" + +json5@^1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +klona@^2.0.4, klona@^2.0.5: + version "2.0.6" + resolved "https://registry.npmmirror.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" + integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== + +launch-editor-middleware@^2.2.1: + version "2.6.1" + resolved "https://registry.npmmirror.com/launch-editor-middleware/-/launch-editor-middleware-2.6.1.tgz#7f2f400d8dda2283b69d02e9d83b1d272fef2bfb" + integrity sha512-Fg/xYhf7ARmRp40n18wIfJyuAMEjXo67Yull7uF7d0OJ3qA4EYJISt1XfPPn69IIJ5jKgQwzcg6DqHYo95LL/g== + dependencies: + launch-editor "^2.6.1" + +launch-editor@^2.2.1, launch-editor@^2.6.0, launch-editor@^2.6.1: + version "2.6.1" + resolved "https://registry.npmmirror.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" + integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== + dependencies: + picocolors "^1.0.0" + shell-quote "^1.8.1" + +less-loader@^8.0.0: + version "8.1.1" + resolved "https://registry.npmmirror.com/less-loader/-/less-loader-8.1.1.tgz#ababe912580457ad00a4318146aac5b53e023f42" + integrity sha512-K93jJU7fi3n6rxVvzp8Cb88Uy9tcQKfHlkoezHwKILXhlNYiRQl4yowLIkQqmBXOH/5I8yoKiYeIf781HGkW9g== + dependencies: + klona "^2.0.4" + +less@^4.0.0: + version "4.2.0" + resolved "https://registry.npmmirror.com/less/-/less-4.2.0.tgz#cbefbfaa14a4cd388e2099b2b51f956e1465c450" + integrity sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA== + dependencies: + copy-anything "^2.0.1" + parse-node-version "^1.0.1" + tslib "^2.3.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + needle "^3.1.0" + source-map "~0.6.0" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lilconfig@^2.0.3: + version "2.1.0" + resolved "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +loader-runner@^4.1.0, loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + +loader-utils@^1.0.2, loader-utils@^1.1.0: + version "1.4.2" + resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" + integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +loader-utils@^2.0.0: + version "2.0.4" + resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.defaultsdeep@^4.6.1: + version "4.6.1" + resolved "https://registry.npmmirror.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz#512e9bd721d272d94e3d3a63653fa17516741ca6" + integrity sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA== + +lodash.kebabcase@^4.1.1: + version "4.1.1" + resolved "https://registry.npmmirror.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" + integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== + +lodash.mapvalues@^4.6.0: + version "4.6.0" + resolved "https://registry.npmmirror.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" + integrity sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ== + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.npmmirror.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash@^4.17.14, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5: + version "4.17.21" + resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +log-update@^2.3.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" + integrity sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg== + dependencies: + ansi-escapes "^3.0.0" + cli-cursor "^2.0.0" + wrap-ansi "^3.0.1" + +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lru-cache@^4.0.1, lru-cache@^4.1.2: + version "4.1.5" + resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +magic-string@^0.30.10: + version "0.30.10" + resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.10.tgz#123d9c41a0cb5640c892b041d4cfb3bd0aa4b39e" + integrity sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.2, make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memfs@^3.4.3: + version "3.6.0" + resolved "https://registry.npmmirror.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" + integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== + dependencies: + fs-monkey "^1.0.4" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +merge-source-map@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" + integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== + dependencies: + source-map "^0.6.1" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.7" + resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" + integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0, mime@^1.4.1: + version "1.6.0" + resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mini-css-extract-plugin@^2.5.3: + version "2.9.0" + resolved "https://registry.npmmirror.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz#c73a1327ccf466f69026ac22a8e8fd707b78a235" + integrity sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA== + dependencies: + schema-utils "^4.0.0" + tapable "^2.2.1" + +minimalistic-assert@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimatch@^3.0.4, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minipass@^3.1.1: + version "3.3.6" + resolved "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +mkdirp@^0.5.6: + version "0.5.6" + resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +module-alias@^2.2.2: + version "2.2.3" + resolved "https://registry.npmmirror.com/module-alias/-/module-alias-2.2.3.tgz#ec2e85c68973bda6ab71ce7c93b763ec96053221" + integrity sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q== + +moment@^2.21.0: + version "2.30.1" + resolved "https://registry.npmmirror.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" + integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== + +mrmime@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/mrmime/-/mrmime-2.0.0.tgz#151082a6e06e59a9a39b46b3e14d5cfe92b3abb4" + integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns@^7.2.5: + version "7.2.5" + resolved "https://registry.npmmirror.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== + dependencies: + dns-packet "^5.2.2" + thunky "^1.0.2" + +mutationobserver-shim@^0.3.2: + version "0.3.7" + resolved "https://registry.npmmirror.com/mutationobserver-shim/-/mutationobserver-shim-0.3.7.tgz#8bf633b0c0b0291a1107255ed32c13088a8c5bf3" + integrity sha512-oRIDTyZQU96nAiz2AQyngwx1e89iApl2hN5AOYwyxLUB47UYsU3Wv9lJWqH5y/QdiYkc5HQLi23ZNB3fELdHcQ== + +mz@^2.4.0: + version "2.7.0" + resolved "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +nanopop@^2.1.0: + version "2.4.2" + resolved "https://registry.npmmirror.com/nanopop/-/nanopop-2.4.2.tgz#b55482135be7e64f2d0f5aa8ef51a58104ac7b13" + integrity sha512-NzOgmMQ+elxxHeIha+OG/Pv3Oc3p4RU2aBhwWwAqDpXrdTbtRylbRLQztLy8dMMwfl6pclznBdfUhccEn9ZIzw== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +needle@^3.1.0: + version "3.3.1" + resolved "https://registry.npmmirror.com/needle/-/needle-3.3.1.tgz#63f75aec580c2e77e209f3f324e2cdf3d29bd049" + integrity sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q== + dependencies: + iconv-lite "^0.6.3" + sax "^1.2.4" + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmmirror.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-emoji@^1.10.0: + version "1.11.0" + resolved "https://registry.npmmirror.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" + integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== + dependencies: + lodash "^4.17.21" + +node-fetch@^2.6.7: + version "2.7.0" + resolved "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-forge@^1: + version "1.3.1" + resolved "https://registry.npmmirror.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + +normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379" + integrity sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.npmmirror.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== + dependencies: + path-key "^2.0.0" + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +object-assign@4.x, object-assign@^4.0.1: + version "4.1.1" + resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.13.1: + version "1.13.1" + resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.0: + version "4.1.5" + resolved "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +omit.js@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/omit.js/-/omit.js-1.0.2.tgz#91a14f0eba84066dfa015bf30e474c47f30bc858" + integrity sha512-/QPc6G2NS+8d4L/cQhbk6Yit1WTB6Us2g84A7A/1+w9d/eRGHyEqC5kkQtHVoHZ5NFWGG7tUGgrhVZwgZanKrQ== + dependencies: + babel-runtime "^6.23.0" + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== + dependencies: + mimic-fn "^1.0.0" + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^8.0.2, open@^8.0.9: + version "8.4.2" + resolved "https://registry.npmmirror.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +opener@^1.5.2: + version "1.5.2" + resolved "https://registry.npmmirror.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== + +optionator@^0.9.1: + version "0.9.4" + resolved "https://registry.npmmirror.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.5" + +ora@^5.3.0: + version "5.4.1" + resolved "https://registry.npmmirror.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-retry@^4.5.0: + version "4.6.2" + resolved "https://registry.npmmirror.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== + dependencies: + "@types/retry" "0.12.0" + retry "^0.13.1" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmmirror.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse-node-version@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + +parse5-htmlparser2-tree-adapter@^6.0.0: + version "6.0.1" + resolved "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" + integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== + dependencies: + parse5 "^6.0.1" + +parse5@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== + +parse5@^6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.npmmirror.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + +picocolors@^0.2.1: + version "0.2.1" + resolved "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" + integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== + +picocolors@^1.0.0, picocolors@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" + integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +portfinder@^1.0.26: + version "1.0.32" + resolved "https://registry.npmmirror.com/portfinder/-/portfinder-1.0.32.tgz#2fe1b9e58389712429dc2bea5beb2146146c7f81" + integrity sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg== + dependencies: + async "^2.6.4" + debug "^3.2.7" + mkdirp "^0.5.6" + +postcss-calc@^8.2.3: + version "8.2.4" + resolved "https://registry.npmmirror.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" + integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== + dependencies: + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" + +postcss-colormin@^5.3.1: + version "5.3.1" + resolved "https://registry.npmmirror.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" + integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" + +postcss-convert-values@^5.1.3: + version "5.1.3" + resolved "https://registry.npmmirror.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" + integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-discard-comments@^5.1.2: + version "5.1.2" + resolved "https://registry.npmmirror.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" + integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== + +postcss-discard-duplicates@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" + integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== + +postcss-discard-empty@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" + integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== + +postcss-discard-overridden@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" + integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== + +postcss-loader@^6.1.1: + version "6.2.1" + resolved "https://registry.npmmirror.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" + integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== + dependencies: + cosmiconfig "^7.0.0" + klona "^2.0.5" + semver "^7.3.5" + +postcss-merge-longhand@^5.1.7: + version "5.1.7" + resolved "https://registry.npmmirror.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" + integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== + dependencies: + postcss-value-parser "^4.2.0" + stylehacks "^5.1.1" + +postcss-merge-rules@^5.1.4: + version "5.1.4" + resolved "https://registry.npmmirror.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" + integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + cssnano-utils "^3.1.0" + postcss-selector-parser "^6.0.5" + +postcss-minify-font-values@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" + integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-minify-gradients@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" + integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== + dependencies: + colord "^2.9.1" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-params@^5.1.4: + version "5.1.4" + resolved "https://registry.npmmirror.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" + integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== + dependencies: + browserslist "^4.21.4" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-selectors@^5.2.1: + version "5.2.1" + resolved "https://registry.npmmirror.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" + integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-modules-extract-imports@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" + integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== + +postcss-modules-local-by-default@^4.0.5: + version "4.0.5" + resolved "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz#f1b9bd757a8edf4d8556e8d0f4f894260e3df78f" + integrity sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.2.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz#a43d28289a169ce2c15c00c4e64c0858e43457d5" + integrity sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-normalize-charset@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" + integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== + +postcss-normalize-display-values@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" + integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-positions@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" + integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-repeat-style@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" + integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-string@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" + integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-timing-functions@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" + integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-unicode@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" + integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-normalize-url@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" + integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== + dependencies: + normalize-url "^6.0.1" + postcss-value-parser "^4.2.0" + +postcss-normalize-whitespace@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" + integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-ordered-values@^5.1.3: + version "5.1.3" + resolved "https://registry.npmmirror.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" + integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== + dependencies: + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-reduce-initial@^5.1.2: + version "5.1.2" + resolved "https://registry.npmmirror.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" + integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + +postcss-reduce-transforms@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" + integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: + version "6.0.16" + resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz#3b88b9f5c5abd989ef4e2fc9ec8eedd34b20fb04" + integrity sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-svgo@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" + integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== + dependencies: + postcss-value-parser "^4.2.0" + svgo "^2.7.0" + +postcss-unique-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" + integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^7.0.36: + version "7.0.39" + resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" + integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== + dependencies: + picocolors "^0.2.1" + source-map "^0.6.1" + +postcss@^8.2.6, postcss@^8.3.5, postcss@^8.4.14, postcss@^8.4.33, postcss@^8.4.38: + version "8.4.38" + resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" + integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.2.0" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +"prettier@^1.18.2 || ^2.0.0": + version "2.8.8" + resolved "https://registry.npmmirror.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +pretty-error@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" + integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== + dependencies: + lodash "^4.17.20" + renderkid "^3.0.0" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +progress-webpack-plugin@^1.0.12: + version "1.0.16" + resolved "https://registry.npmmirror.com/progress-webpack-plugin/-/progress-webpack-plugin-1.0.16.tgz#278f5c1afd21af783aad72c5ec95241520230fe5" + integrity sha512-sdiHuuKOzELcBANHfrupYo+r99iPRyOnw15qX+rNlVUqXGfjXdH4IgxriKwG1kNJwVswKQHMdj1hYZMcb9jFaA== + dependencies: + chalk "^2.1.0" + figures "^2.0.0" + log-update "^2.3.0" + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +qs@6.11.0: + version "6.11.0" + resolved "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +raf@^3.4.0: + version "3.4.1" + resolved "https://registry.npmmirror.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^5.1.1, read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +readable-stream@^2.0.1: + version "2.3.8" + resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6, readable-stream@^3.4.0: + version "3.6.2" + resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +regenerate-unicode-properties@^10.1.0: + version "10.1.1" + resolved "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" + integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== + dependencies: + "@babel/runtime" "^7.8.4" + +regexpp@^3.1.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== + +renderkid@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" + integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== + dependencies: + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^6.0.1" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +resize-observer-polyfill@^1.5.1: + version "1.5.1" + resolved "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve@^1.10.0, resolve@^1.14.2: + version "1.22.8" + resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.npmmirror.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@^1.2.4: + version "1.3.0" + resolved "https://registry.npmmirror.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" + integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== + +schema-utils@^2.6.5: + version "2.7.1" + resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: + version "3.3.0" + resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.0.0: + version "4.2.0" + resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" + integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== + +selfsigned@^2.1.1: + version "2.4.1" + resolved "https://registry.npmmirror.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" + integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== + dependencies: + "@types/node-forge" "^1.3.0" + node-forge "^1" + +"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0: + version "5.7.2" + resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.0.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.2.1, semver@^7.3.4, semver@^7.3.5, semver@^7.5.4: + version "7.6.2" + resolved "https://registry.npmmirror.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + +send@0.18.0: + version "0.18.0" + resolved "https://registry.npmmirror.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: + version "6.0.2" + resolved "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + +seroval-plugins@^1.0.3: + version "1.0.7" + resolved "https://registry.npmmirror.com/seroval-plugins/-/seroval-plugins-1.0.7.tgz#c02511a1807e9bc8f68a91fbec13474fa9cea670" + integrity sha512-GO7TkWvodGp6buMEX9p7tNyIkbwlyuAWbI6G9Ec5bhcm7mQdu3JOK1IXbEUwb3FVzSc363GraG/wLW23NSavIw== + +seroval@^1.0.4: + version "1.0.7" + resolved "https://registry.npmmirror.com/seroval/-/seroval-1.0.7.tgz#ee48ad8ba69f1595bdd5c55d1a0d1da29dee7455" + integrity sha512-n6ZMQX5q0Vn19Zq7CIKNIo7E75gPkGCFUEqDpa8jgwpYr/vScjqnQ6H09t1uIiZ0ZSK0ypEGvrYK2bhBGWsGdw== + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.npmmirror.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shallow-equal@^1.0.0: + version "1.2.1" + resolved "https://registry.npmmirror.com/shallow-equal/-/shallow-equal-1.2.1.tgz#4c16abfa56043aa20d050324efa68940b0da79da" + integrity sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA== + +shallowequal@^1.0.2: + version "1.1.0" + resolved "https://registry.npmmirror.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.8.1: + version "1.8.1" + resolved "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + +side-channel@^1.0.4: + version "1.0.6" + resolved "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +sirv@^2.0.3: + version "2.0.4" + resolved "https://registry.npmmirror.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" + integrity sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ== + dependencies: + "@polka/url" "^1.0.0-next.24" + mrmime "^2.0.0" + totalist "^3.0.0" + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +sockjs@^0.3.24: + version "0.3.24" + resolved "https://registry.npmmirror.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + dependencies: + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" + +solid-js@^1.3.0: + version "1.8.17" + resolved "https://registry.npmmirror.com/solid-js/-/solid-js-1.8.17.tgz#780ed6f0fd8633009d1b3c29d56bf6b6bb33bd50" + integrity sha512-E0FkUgv9sG/gEBWkHr/2XkBluHb1fkrHywUgA6o6XolPDCJ4g1HaLmQufcBBhiF36ee40q+HpG/vCZu7fLpI3Q== + dependencies: + csstype "^3.1.0" + seroval "^1.0.4" + seroval-plugins "^1.0.3" + +source-map-js@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" + integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spdx-correct@^3.0.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.5.0" + resolved "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" + integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.17" + resolved "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz#887da8aa73218e51a1d917502d79863161a93f9c" + integrity sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.npmmirror.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +ssri@^8.0.1: + version "8.0.1" + resolved "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== + dependencies: + minipass "^3.1.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.npmmirror.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +string-convert@^0.2.0: + version "0.2.1" + resolved "https://registry.npmmirror.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97" + integrity sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A== + +string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" + integrity sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA== + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +stylehacks@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" + integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== + dependencies: + browserslist "^4.21.4" + postcss-selector-parser "^6.0.4" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svg-tags@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" + integrity sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA== + +svgo@^2.7.0: + version "2.8.0" + resolved "https://registry.npmmirror.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" + stable "^0.1.8" + +table@^6.0.9: + version "6.8.2" + resolved "https://registry.npmmirror.com/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58" + integrity sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: + version "2.2.1" + resolved "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +terser-webpack-plugin@^5.1.1, terser-webpack-plugin@^5.3.10: + version "5.3.10" + resolved "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" + integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== + dependencies: + "@jridgewell/trace-mapping" "^0.3.20" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.1" + terser "^5.26.0" + +terser@^5.10.0, terser@^5.26.0: + version "5.31.0" + resolved "https://registry.npmmirror.com/terser/-/terser-5.31.0.tgz#06eef86f17007dbad4593f11a574c7f5eb02c6a1" + integrity sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +thread-loader@^3.0.0: + version "3.0.4" + resolved "https://registry.npmmirror.com/thread-loader/-/thread-loader-3.0.4.tgz#c392e4c0241fbc80430eb680e4886819b504a31b" + integrity sha512-ByaL2TPb+m6yArpqQUZvP+5S1mZtXsEP7nWKKlAUTm7fCml8kB5s1uI3+eHRP2bk5mVYfRSBI7FFf+tWEyLZwA== + dependencies: + json-parse-better-errors "^1.0.2" + loader-runner "^4.1.0" + loader-utils "^2.0.0" + neo-async "^2.6.2" + schema-utils "^3.0.0" + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +tinycolor2@^1.4.1: + version "1.6.0" + resolved "https://registry.npmmirror.com/tinycolor2/-/tinycolor2-1.6.0.tgz#f98007460169b0263b97072c5ae92484ce02d09e" + integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +totalist@^3.0.0: + version "3.0.1" + resolved "https://registry.npmmirror.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" + integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +tslib@^1.10.0: + version "1.14.1" + resolved "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1: + version "2.6.2" + resolved "https://registry.npmmirror.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +update-browserslist-db@^1.0.13: + version "1.0.16" + resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz#f6d489ed90fb2f07d67784eb3f53d7891f736356" + integrity sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ== + dependencies: + escalade "^3.1.2" + picocolors "^1.0.1" + +uri-js@^4.2.2, uri-js@^4.4.1: + version "4.4.1" + resolved "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utila@~0.4: + version "0.4.0" + resolved "https://registry.npmmirror.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache@^2.0.3: + version "2.4.0" + resolved "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz#cdada8bec61e15865f05d097c5f4fd30e94dc128" + integrity sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +vue-eslint-parser@^8.0.1: + version "8.3.0" + resolved "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz#5d31129a1b3dd89c0069ca0a1c88f970c360bd0d" + integrity sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g== + dependencies: + debug "^4.3.2" + eslint-scope "^7.0.0" + eslint-visitor-keys "^3.1.0" + espree "^9.0.0" + esquery "^1.4.0" + lodash "^4.17.21" + semver "^7.3.5" + +vue-hot-reload-api@^2.3.0: + version "2.3.4" + resolved "https://registry.npmmirror.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2" + integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== + +vue-loader@^17.0.0: + version "17.4.2" + resolved "https://registry.npmmirror.com/vue-loader/-/vue-loader-17.4.2.tgz#f87f0d8adfcbbe8623de9eba1979d41ba223c6da" + integrity sha512-yTKOA4R/VN4jqjw4y5HrynFL8AK0Z3/Jt7eOJXEitsm0GMRHDBjCfCiuTiLP7OESvsZYo2pATCWhDqxC5ZrM6w== + dependencies: + chalk "^4.1.0" + hash-sum "^2.0.0" + watchpack "^2.4.0" + +vue-ref@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/vue-ref/-/vue-ref-2.0.0.tgz#483084d732abed11da796778a8266a3af0ea1a9c" + integrity sha512-uKNKpFOVeWNqS2mrBZqnpLyXJo5Q+vnkex6JvpENvhXHFNBW/SJTP8vJywLuVT3DpxwXcF9N0dyIiZ4/NpTexQ== + +vue-router@^3.5.1: + version "3.6.5" + resolved "https://registry.npmmirror.com/vue-router/-/vue-router-3.6.5.tgz#95847d52b9a7e3f1361cb605c8e6441f202afad8" + integrity sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ== + +vue-style-loader@^4.1.0, vue-style-loader@^4.1.3: + version "4.1.3" + resolved "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz#6d55863a51fa757ab24e89d9371465072aa7bc35" + integrity sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg== + dependencies: + hash-sum "^1.0.2" + loader-utils "^1.0.2" + +vue-template-compiler@^2.6.14: + version "2.7.16" + resolved "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz#c81b2d47753264c77ac03b9966a46637482bb03b" + integrity sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ== + dependencies: + de-indent "^1.0.2" + he "^1.2.0" + +vue-template-es2015-compiler@^1.9.0: + version "1.9.1" + resolved "https://registry.npmmirror.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" + integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== + +vue2-ace-editor@^0.0.15: + version "0.0.15" + resolved "https://registry.npmmirror.com/vue2-ace-editor/-/vue2-ace-editor-0.0.15.tgz#569b208e54ae771ae1edd3b8902ac42f0edc74e3" + integrity sha512-e3TR9OGXc71cGpvYcW068lNpRcFt3+OONCC81oxHL/0vwl/V3OgqnNMw2/RRolgQkO/CA5AjqVHWmANWKOtNnQ== + dependencies: + brace "^0.11.0" + +vue@^2.6.14: + version "2.7.16" + resolved "https://registry.npmmirror.com/vue/-/vue-2.7.16.tgz#98c60de9def99c0e3da8dae59b304ead43b967c9" + integrity sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw== + dependencies: + "@vue/compiler-sfc" "2.7.16" + csstype "^3.1.0" + +warning@^4.0.0: + version "4.0.3" + resolved "https://registry.npmmirror.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + +watchpack@^2.4.0, watchpack@^2.4.1: + version "2.4.1" + resolved "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.1.tgz#29308f2cac150fa8e4c92f90e0ec954a9fed7fff" + integrity sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.npmmirror.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +webpack-bundle-analyzer@^4.4.0: + version "4.10.2" + resolved "https://registry.npmmirror.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz#633af2862c213730be3dbdf40456db171b60d5bd" + integrity sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw== + dependencies: + "@discoveryjs/json-ext" "0.5.7" + acorn "^8.0.4" + acorn-walk "^8.0.0" + commander "^7.2.0" + debounce "^1.2.1" + escape-string-regexp "^4.0.0" + gzip-size "^6.0.0" + html-escaper "^2.0.2" + opener "^1.5.2" + picocolors "^1.0.0" + sirv "^2.0.3" + ws "^7.3.1" + +webpack-chain@^6.5.1: + version "6.5.1" + resolved "https://registry.npmmirror.com/webpack-chain/-/webpack-chain-6.5.1.tgz#4f27284cbbb637e3c8fbdef43eef588d4d861206" + integrity sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA== + dependencies: + deepmerge "^1.5.2" + javascript-stringify "^2.0.1" + +webpack-dev-middleware@^5.3.4: + version "5.3.4" + resolved "https://registry.npmmirror.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz#eb7b39281cbce10e104eb2b8bf2b63fce49a3517" + integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q== + dependencies: + colorette "^2.0.10" + memfs "^3.4.3" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-server@^4.7.3: + version "4.15.2" + resolved "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz#9e0c70a42a012560860adb186986da1248333173" + integrity sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g== + dependencies: + "@types/bonjour" "^3.5.9" + "@types/connect-history-api-fallback" "^1.3.5" + "@types/express" "^4.17.13" + "@types/serve-index" "^1.9.1" + "@types/serve-static" "^1.13.10" + "@types/sockjs" "^0.3.33" + "@types/ws" "^8.5.5" + ansi-html-community "^0.0.8" + bonjour-service "^1.0.11" + chokidar "^3.5.3" + colorette "^2.0.10" + compression "^1.7.4" + connect-history-api-fallback "^2.0.0" + default-gateway "^6.0.3" + express "^4.17.3" + graceful-fs "^4.2.6" + html-entities "^2.3.2" + http-proxy-middleware "^2.0.3" + ipaddr.js "^2.0.1" + launch-editor "^2.6.0" + open "^8.0.9" + p-retry "^4.5.0" + rimraf "^3.0.2" + schema-utils "^4.0.0" + selfsigned "^2.1.1" + serve-index "^1.9.1" + sockjs "^0.3.24" + spdy "^4.0.2" + webpack-dev-middleware "^5.3.4" + ws "^8.13.0" + +webpack-merge@^5.7.3: + version "5.10.0" + resolved "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" + integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== + dependencies: + clone-deep "^4.0.1" + flat "^5.0.2" + wildcard "^2.0.0" + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack-virtual-modules@^0.4.2: + version "0.4.6" + resolved "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz#3e4008230731f1db078d9cb6f68baf8571182b45" + integrity sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA== + +webpack@^5.54.0: + version "5.91.0" + resolved "https://registry.npmmirror.com/webpack/-/webpack-5.91.0.tgz#ffa92c1c618d18c878f06892bbdc3373c71a01d9" + integrity sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^1.0.5" + "@webassemblyjs/ast" "^1.12.1" + "@webassemblyjs/wasm-edit" "^1.12.1" + "@webassemblyjs/wasm-parser" "^1.12.1" + acorn "^8.7.1" + acorn-import-assertions "^1.9.0" + browserslist "^4.21.10" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.16.0" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.11" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.2.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.10" + watchpack "^2.4.1" + webpack-sources "^3.2.3" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.npmmirror.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.npmmirror.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-fetch@^3.6.2: + version "3.6.20" + resolved "https://registry.npmmirror.com/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz#580ce6d791facec91d37c72890995a0b48d31c70" + integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.npmmirror.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmmirror.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wildcard@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" + integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== + +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +wrap-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" + integrity sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@^7.3.1: + version "7.5.9" + resolved "https://registry.npmmirror.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +ws@^8.13.0: + version "8.17.0" + resolved "https://registry.npmmirror.com/ws/-/ws-8.17.0.tgz#d145d18eca2ed25aaf791a183903f7be5e295fea" + integrity sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow== + +xterm-addon-fit@^0.5.0: + version "0.5.0" + resolved "https://registry.npmmirror.com/xterm-addon-fit/-/xterm-addon-fit-0.5.0.tgz#2d51b983b786a97dcd6cde805e700c7f913bc596" + integrity sha512-DsS9fqhXHacEmsPxBJZvfj2la30Iz9xk+UKjhQgnYNkrUIN5CYLbw7WEfz117c7+S86S/tpHPfvNxJsF5/G8wQ== + +xterm-addon-search@^0.8.1: + version "0.8.2" + resolved "https://registry.npmmirror.com/xterm-addon-search/-/xterm-addon-search-0.8.2.tgz#be7aa74d5ff12c901707c6ff674229f214318032" + integrity sha512-I1863mjn8P6uVrqm/X+btalVsqjAKLhnhpbP7SavAOpEkI1jJhbHU2UTp7NjeRtcKTks6UWk/ycgds5snDSejg== + +xterm-addon-web-links@^0.4.0: + version "0.4.0" + resolved "https://registry.npmmirror.com/xterm-addon-web-links/-/xterm-addon-web-links-0.4.0.tgz#265cbf8221b9b315d0a748e1323bee331cd5da03" + integrity sha512-xv8GeiINmx0zENO9hf5k+5bnkaE8mRzF+OBAr9WeFq2eLaQSudioQSiT34M1ofKbzcdjSsKiZm19Rw3i4eXamg== + +xterm@^4.14.1: + version "4.19.0" + resolved "https://registry.npmmirror.com/xterm/-/xterm-4.19.0.tgz#c0f9d09cd61de1d658f43ca75f992197add9ef6d" + integrity sha512-c3Cp4eOVsYY5Q839dR5IejghRPpxciGmLWWaP9g+ppfMeBChMeLa1DCA+pmX/jyDZ+zxFOmlJL/82qVdayVoGQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0, yaml@^1.10.2: + version "1.10.2" + resolved "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs@^16.0.0: + version "16.2.0" + resolved "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yorkie@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/yorkie/-/yorkie-2.0.0.tgz#92411912d435214e12c51c2ae1093e54b6bb83d9" + integrity sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw== + dependencies: + execa "^0.8.0" + is-ci "^1.0.10" + normalize-path "^1.0.0" + strip-indent "^2.0.0"