From f947a26043c4cf0891496d257b9fb9be994995dc Mon Sep 17 00:00:00 2001 From: Hoshi <1196756653@qq.com> Date: Sat, 18 May 2024 16:53:21 +0800 Subject: [PATCH] Initial commit all --- .browserslistrc | 2 + .editorconfig | 5 + .env.development | 4 + .env.production | 4 + .eslintignore | 1 + .eslintrc.js | 29 + .prettierrc | 7 + Jenkinsfile | 7 + README.md | 29 + babel.config.js | 3 + commitlint.config.js | 3 + package.json | 104 + pnpm-lock.yaml | 12965 ++++++++++++++++ postcss.config.js | 5 + public/index.html | 28 + script/index.js | 12 + src/App.vue | 53 + src/assets/copy.png | Bin 0 -> 3329 bytes src/assets/download.png | Bin 0 -> 2045 bytes src/assets/setting.png | Bin 0 -> 5831 bytes src/common/components/TimeSelect.vue | 117 + .../components/icon-select/elementIcons.js | 283 + src/common/components/icon-select/index.vue | 35 + src/common/components/icon-select/svgIcons.js | 45 + src/common/components/image-cropper/index.vue | 1442 ++ .../image-cropper/utils/data2blob.js | 20 + .../image-cropper/utils/effectRipple.js | 43 + .../image-cropper/utils/language.js | 365 + .../components/image-cropper/utils/mimes.js | 7 + src/common/components/import-data/index.vue | 104 + src/common/components/index.js | 10 + src/common/components/sku-table/index.vue | 88 + src/common/components/sku-table/utils.ts | 32 + src/common/components/upload-file/index.vue | 104 + src/common/components/utils/Export2Excel.js | 218 + src/common/components/utils/request.js | 102 + src/common/components/utils/resolvePath.js | 13 + src/common/components/utils/tools.js | 39 + src/common/css/common-var.scss | 4 + src/common/css/common.scss | 44 + src/common/css/element-variables.scss | 8 + src/common/css/font.scss | 23 + src/common/css/hack.scss | 9 + src/common/css/index.scss | 4 + src/common/css/lib/button.scss | 29 + src/common/css/lib/common.scss | 807 + src/common/css/lib/components/index.scss | 2 + src/common/css/lib/components/sidebar.scss | 130 + src/common/css/lib/components/table.scss | 22 + src/common/css/lib/components/theme.scss | 49 + src/common/css/lib/element-ui.scss | 130 + src/common/css/lib/index.scss | 3 + src/common/directive/index.js | 12 + src/common/hooks/useGlobalWebsocket.ts | 3 + src/common/hooks/useSelection.js | 11 + src/common/hooks/useTable.ts | 87 + src/common/hooks/useWebsocket.ts | 22 + src/common/interface/index.ts | 22 + src/common/mixins/getGlobalSocket.js | 10 + src/common/mixins/selection.js | 12 + src/common/mixins/webSocket.js | 29 + src/common/types/shims-ajax.d.ts | 21 + src/common/types/shims-global.d.ts | 54 + src/common/types/shims-tsx.d.ts | 13 + src/common/types/shims-vue.d.ts | 10 + src/common/types/shims.tools.d.ts | 8 + src/common/utils/auth.js | 17 + src/common/utils/autoImport.ts | 30 + src/common/utils/crypto.js | 48 + src/common/utils/day.js | 5 + src/common/utils/index.js | 89 + src/common/utils/request.js | 119 + src/common/utils/resolvePath.js | 21 + src/common/utils/uploadFile.js | 88 + src/config.js | 16 + src/errorLog.js | 29 + src/filters/common.js | 40 + src/icons/index.js | 3 + src/icons/svg/svg-about.svg | 1 + src/icons/svg/svg-basic-resource.svg | 1 + src/icons/svg/svg-bill.svg | 1 + src/icons/svg/svg-business.svg | 1 + src/icons/svg/svg-compute-resource.svg | 1 + src/icons/svg/svg-copy.svg | 1 + src/icons/svg/svg-db.svg | 1 + src/icons/svg/svg-disabled.svg | 1 + src/icons/svg/svg-dot.svg | 1 + src/icons/svg/svg-host.svg | 1 + src/icons/svg/svg-image.svg | 1 + src/icons/svg/svg-middle.svg | 1 + src/icons/svg/svg-network-resource.svg | 1 + src/icons/svg/svg-operate.svg | 1 + src/icons/svg/svg-ops-analysis.svg | 1 + src/icons/svg/svg-order.svg | 1 + src/icons/svg/svg-permission.svg | 1 + src/icons/svg/svg-port.svg | 1 + src/icons/svg/svg-product.svg | 1 + src/icons/svg/svg-repository.svg | 1 + src/icons/svg/svg-resource-interface.svg | 1 + src/icons/svg/svg-resource-manage.svg | 1 + src/icons/svg/svg-resource-monitor.svg | 1 + src/icons/svg/svg-resource-ops.svg | 1 + src/icons/svg/svg-screen.svg | 1 + src/icons/svg/svg-security.svg | 1 + src/icons/svg/svg-service-ops.svg | 1 + src/icons/svg/svg-setting.svg | 1 + src/icons/svg/svg-storage-resource.svg | 1 + src/icons/svg/svg-task-platform.svg | 1 + src/icons/svg/svg-vm.svg | 1 + src/lang/en.js | 12 + src/lang/index.js | 29 + src/lang/zh.js | 12 + src/layouts/app.vue | 18 + src/layouts/components/Header.vue | 79 + src/layouts/components/LevelBar.vue | 65 + src/layouts/components/SiteMessage.vue | 157 + src/layouts/components/SystemTip.vue | 61 + .../components/TagsView/ScrollPanel.vue | 137 + .../components/TagsView/SelectRound.vue | 29 + src/layouts/components/TagsView/index.vue | 291 + .../components/TagsView/index_backup.vue | 260 + src/layouts/components/ThirdMenu.vue | 110 + src/layouts/components/headerMenu.vue | 134 + src/layouts/components/langSelect.vue | 34 + src/layouts/components/lockScreen.vue | 90 + .../components/personal/InfoDialog.vue | 141 + src/layouts/components/personal/index.vue | 175 + src/layouts/components/process.vue | 41 + src/layouts/components/rightContent.vue | 38 + src/layouts/components/sidebar/Link.vue | 32 + src/layouts/components/sidebar/MenuItem.vue | 62 + src/layouts/components/sidebar/OperateBtn.vue | 53 + src/layouts/components/sidebar/baseMenu.vue | 68 + src/layouts/components/sidebar/sidebar.vue | 160 + .../components/sidebar/sidebarItem.vue | 67 + src/layouts/components/sidebar/theme.scss | 15 + src/layouts/home.vue | 148 + src/layouts/redirect.vue | 13 + src/main.ts | 70 + src/main.vite.ts | 68 + src/mock/common.js | 26 + src/mock/index.js | 4 + src/mock/task.js | 28 + src/models/depart.d.ts | 4 + src/models/service.d.ts | 19 + src/models/sku.d.ts | 6 + src/models/sla.d.ts | 7 + src/models/tenant.d.ts | 12 + src/models/user.d.ts | 19 + src/permission.js | 50 + src/public-path.js | 4 + src/router/index.js | 31 + src/router/module/constant.js | 64 + src/router/module/system.js | 28 + src/services/platform/index.js | 3228 ++++ src/services/platform/pool.js | 16 + src/services/services/catelog.ts | 207 + src/services/services/flow.js | 92 + src/services/services/monitor.js | 47 + src/services/services/order.js | 50 + src/services/services/plugins.ts | 63 + src/services/services/product.js | 53 + src/services/services/service.ts | 50 + src/services/services/spec.ts | 86 + src/services/system/account.js | 45 + src/services/system/auth.js | 28 + src/services/system/bizs.js | 60 + src/services/system/csc_login.js | 18 + src/services/system/depart.ts | 31 + src/services/system/dictionary.js | 33 + src/services/system/document.js | 47 + src/services/system/favorite.js | 25 + src/services/system/index.js | 78 + src/services/system/ip_access.js | 32 + src/services/system/license.js | 26 + src/services/system/log.ts | 30 + src/services/system/manager.ts | 55 + src/services/system/message.js | 23 + src/services/system/migration.js | 27 + src/services/system/notice.js | 25 + src/services/system/order.js | 47 + src/services/system/platformTask.js | 10 + src/services/system/portal.js | 86 + src/services/system/project.js | 65 + src/services/system/role.js | 47 + src/services/system/service_system.js | 32 + src/services/system/shop_cart.js | 22 + src/services/system/system.js | 24 + src/services/system/tag.js | 29 + src/services/system/tenant.ts | 176 + src/services/system/user.js | 50 + src/services/task/command.js | 33 + src/services/task/task.js | 121 + src/shared/action.ts | 30 + src/store/getters.js | 7 + src/store/index.js | 23 + src/store/modules/app.js | 125 + src/store/modules/permission.js | 201 + src/store/modules/tagsView.js | 139 + src/store/utils.js | 16 + src/validate/index.js | 125 + src/views/about/index.vue | 143 + src/views/about/logActive.vue | 97 + src/views/configs/AddDialog.vue | 156 + src/views/configs/PlatformTask.vue | 64 + .../configs/business/RelationProject.vue | 59 + src/views/configs/business/index.vue | 280 + src/views/configs/component/AddDialog.vue | 86 + src/views/configs/dictionary.vue | 128 + src/views/configs/enviroment.vue | 223 + src/views/configs/migration/configs.js | 63 + src/views/configs/migration/detail.vue | 184 + src/views/configs/migration/index.vue | 161 + src/views/configs/namerule.vue | 240 + src/views/configs/notice/Dialog.vue | 184 + src/views/configs/notice/config.js | 54 + src/views/configs/notice/index.vue | 202 + .../configs/project/components/basicinfo.vue | 102 + .../configs/project/components/member.vue | 159 + src/views/configs/project/index.vue | 415 + src/views/configs/project/projectDetail.vue | 127 + .../setting/components/UploadButton.vue | 69 + .../setting/components/UploadImage.vue | 54 + .../configs/setting/components/index.scss | 25 + src/views/configs/setting/general.vue | 41 + .../configs/setting/interface/CardItem.vue | 75 + src/views/configs/setting/interface/index.vue | 57 + src/views/configs/setting/monitor/index.vue | 202 + src/views/configs/setting/monitor/metrics.vue | 247 + src/views/configs/setting/page/BannerItem.vue | 108 + .../configs/setting/page/BrowserItem.vue | 63 + .../configs/setting/page/ContentItem.vue | 120 + src/views/configs/setting/page/LoginItem.vue | 78 + src/views/configs/setting/page/cmc.vue | 48 + src/views/configs/setting/page/csc.vue | 45 + src/views/configs/setting/page/index.vue | 24 + src/views/configs/setting/page/utils.js | 3 + src/views/configs/setting/security/index.vue | 130 + src/views/configs/setting/security/limit.vue | 171 + .../setting_dashboard/AccessControl.vue | 107 + .../configs/setting_dashboard/AlarmCount.vue | 80 + .../setting_dashboard/CommonOperation.vue | 89 + .../configs/setting_dashboard/CountCard.vue | 49 + .../setting_dashboard/DataCenterOverview.vue | 113 + .../configs/setting_dashboard/DataView.vue | 79 + .../configs/setting_dashboard/ResUsed.vue | 112 + .../setting_dashboard/SelectVendor.vue | 86 + .../configs/setting_dashboard/TaskHistory.vue | 85 + src/views/configs/setting_dashboard/data.ts | 108 + src/views/configs/setting_dashboard/index.vue | 544 + src/views/configs/setting_dashboard/utils.ts | 67 + src/views/configs/tag.vue | 214 + src/views/errorPage/401.vue | 57 + src/views/errorPage/404.vue | 49 + src/views/log/audit.vue | 201 + src/views/log/loginLog.vue | 90 + src/views/login/lockme.vue | 171 + src/views/login/login.vue | 232 + src/views/login/sso.vue | 23 + src/views/login/tools.js | 15 + src/views/monitor/components/Component.vue | 63 + src/views/monitor/components/Host.vue | 89 + src/views/monitor/components/HostOverview.vue | 212 + src/views/monitor/components/Plug.vue | 123 + src/views/monitor/components/Service.vue | 158 + src/views/monitor/components/filters.js | 31 + src/views/monitor/components/index.scss | 175 + src/views/monitor/components/logDownload.vue | 108 + src/views/monitor/components/next.vue | 572 + src/views/monitor/components/realLog.vue | 108 + src/views/monitor/components/userDefind.vue | 69 + src/views/monitor/index.vue | 48 + src/views/permisson/auth/AddDialog.vue | 260 + src/views/permisson/auth/api_auth.vue | 143 + src/views/permisson/auth/auth.vue | 257 + .../permisson/auth/console_auth/AddDialog.vue | 323 + .../permisson/auth/console_auth/index.vue | 234 + src/views/permisson/auth/index.vue | 33 + src/views/permisson/department.vue | 152 + src/views/permisson/manager/AddDialog.vue | 220 + src/views/permisson/manager/GrantRole.vue | 65 + src/views/permisson/manager/ResetPassword.vue | 59 + src/views/permisson/manager/SubnetCidr.vue | 76 + src/views/permisson/manager/UserDetail.vue | 127 + src/views/permisson/manager/config.ts | 83 + src/views/permisson/manager/index.vue | 212 + src/views/permisson/plugins/configIndex.vue | 129 + src/views/permisson/plugins/index.vue | 290 + src/views/permisson/role.vue | 619 + src/views/permisson/tenant/AddDialog.vue | 205 + src/views/permisson/tenant/ServiceDialog.vue | 60 + src/views/permisson/tenant/assignPool.vue | 84 + .../permisson/tenant/components/LeftMenu.vue | 67 + .../permisson/tenant/components/QuotaItem.vue | 41 + .../tenant/components/ServiceItem.vue | 160 + .../permisson/tenant/components/basicInfo.vue | 168 + .../permisson/tenant/components/quota.vue | 84 + .../permisson/tenant/components/quotaData.js | 8 + .../permisson/tenant/components/transfer.vue | 140 + src/views/permisson/tenant/config.js | 53 + src/views/permisson/tenant/index.scss | 7 + src/views/permisson/tenant/index.vue | 586 + src/views/permisson/tenant/quotaDialog.vue | 57 + src/views/permisson/tenant/tenantDetail.vue | 342 + tsconfig.json | 30 + upload.js | 28 + vite.config.ts | 72 + vue.config.js | 124 + 308 files changed, 41908 insertions(+) create mode 100644 .browserslistrc create mode 100644 .editorconfig create mode 100644 .env.development create mode 100644 .env.production create mode 100644 .eslintignore create mode 100644 .eslintrc.js create mode 100644 .prettierrc create mode 100644 Jenkinsfile create mode 100644 README.md create mode 100644 babel.config.js create mode 100644 commitlint.config.js create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 postcss.config.js create mode 100644 public/index.html create mode 100644 script/index.js create mode 100644 src/App.vue create mode 100644 src/assets/copy.png create mode 100644 src/assets/download.png create mode 100644 src/assets/setting.png create mode 100644 src/common/components/TimeSelect.vue create mode 100644 src/common/components/icon-select/elementIcons.js create mode 100644 src/common/components/icon-select/index.vue create mode 100644 src/common/components/icon-select/svgIcons.js create mode 100644 src/common/components/image-cropper/index.vue create mode 100644 src/common/components/image-cropper/utils/data2blob.js create mode 100644 src/common/components/image-cropper/utils/effectRipple.js create mode 100644 src/common/components/image-cropper/utils/language.js create mode 100644 src/common/components/image-cropper/utils/mimes.js create mode 100644 src/common/components/import-data/index.vue create mode 100644 src/common/components/index.js create mode 100644 src/common/components/sku-table/index.vue create mode 100644 src/common/components/sku-table/utils.ts create mode 100644 src/common/components/upload-file/index.vue create mode 100644 src/common/components/utils/Export2Excel.js create mode 100644 src/common/components/utils/request.js create mode 100644 src/common/components/utils/resolvePath.js create mode 100644 src/common/components/utils/tools.js create mode 100644 src/common/css/common-var.scss create mode 100644 src/common/css/common.scss create mode 100644 src/common/css/element-variables.scss create mode 100644 src/common/css/font.scss create mode 100644 src/common/css/hack.scss create mode 100644 src/common/css/index.scss create mode 100644 src/common/css/lib/button.scss create mode 100644 src/common/css/lib/common.scss create mode 100644 src/common/css/lib/components/index.scss create mode 100644 src/common/css/lib/components/sidebar.scss create mode 100644 src/common/css/lib/components/table.scss create mode 100644 src/common/css/lib/components/theme.scss create mode 100644 src/common/css/lib/element-ui.scss create mode 100644 src/common/css/lib/index.scss create mode 100644 src/common/directive/index.js create mode 100644 src/common/hooks/useGlobalWebsocket.ts create mode 100644 src/common/hooks/useSelection.js create mode 100644 src/common/hooks/useTable.ts create mode 100644 src/common/hooks/useWebsocket.ts create mode 100644 src/common/interface/index.ts create mode 100644 src/common/mixins/getGlobalSocket.js create mode 100644 src/common/mixins/selection.js create mode 100644 src/common/mixins/webSocket.js create mode 100644 src/common/types/shims-ajax.d.ts create mode 100644 src/common/types/shims-global.d.ts create mode 100644 src/common/types/shims-tsx.d.ts create mode 100644 src/common/types/shims-vue.d.ts create mode 100644 src/common/types/shims.tools.d.ts create mode 100644 src/common/utils/auth.js create mode 100644 src/common/utils/autoImport.ts create mode 100644 src/common/utils/crypto.js create mode 100644 src/common/utils/day.js create mode 100644 src/common/utils/index.js create mode 100644 src/common/utils/request.js create mode 100644 src/common/utils/resolvePath.js create mode 100644 src/common/utils/uploadFile.js create mode 100644 src/config.js create mode 100644 src/errorLog.js create mode 100644 src/filters/common.js create mode 100644 src/icons/index.js create mode 100644 src/icons/svg/svg-about.svg create mode 100644 src/icons/svg/svg-basic-resource.svg create mode 100644 src/icons/svg/svg-bill.svg create mode 100644 src/icons/svg/svg-business.svg create mode 100644 src/icons/svg/svg-compute-resource.svg create mode 100644 src/icons/svg/svg-copy.svg create mode 100644 src/icons/svg/svg-db.svg create mode 100644 src/icons/svg/svg-disabled.svg create mode 100644 src/icons/svg/svg-dot.svg create mode 100644 src/icons/svg/svg-host.svg create mode 100644 src/icons/svg/svg-image.svg create mode 100644 src/icons/svg/svg-middle.svg create mode 100644 src/icons/svg/svg-network-resource.svg create mode 100644 src/icons/svg/svg-operate.svg create mode 100644 src/icons/svg/svg-ops-analysis.svg create mode 100644 src/icons/svg/svg-order.svg create mode 100644 src/icons/svg/svg-permission.svg create mode 100644 src/icons/svg/svg-port.svg create mode 100644 src/icons/svg/svg-product.svg create mode 100644 src/icons/svg/svg-repository.svg create mode 100644 src/icons/svg/svg-resource-interface.svg create mode 100644 src/icons/svg/svg-resource-manage.svg create mode 100644 src/icons/svg/svg-resource-monitor.svg create mode 100644 src/icons/svg/svg-resource-ops.svg create mode 100644 src/icons/svg/svg-screen.svg create mode 100644 src/icons/svg/svg-security.svg create mode 100644 src/icons/svg/svg-service-ops.svg create mode 100644 src/icons/svg/svg-setting.svg create mode 100644 src/icons/svg/svg-storage-resource.svg create mode 100644 src/icons/svg/svg-task-platform.svg create mode 100644 src/icons/svg/svg-vm.svg create mode 100644 src/lang/en.js create mode 100644 src/lang/index.js create mode 100644 src/lang/zh.js create mode 100644 src/layouts/app.vue create mode 100644 src/layouts/components/Header.vue create mode 100644 src/layouts/components/LevelBar.vue create mode 100644 src/layouts/components/SiteMessage.vue create mode 100644 src/layouts/components/SystemTip.vue create mode 100644 src/layouts/components/TagsView/ScrollPanel.vue create mode 100644 src/layouts/components/TagsView/SelectRound.vue create mode 100644 src/layouts/components/TagsView/index.vue create mode 100644 src/layouts/components/TagsView/index_backup.vue create mode 100644 src/layouts/components/ThirdMenu.vue create mode 100644 src/layouts/components/headerMenu.vue create mode 100644 src/layouts/components/langSelect.vue create mode 100644 src/layouts/components/lockScreen.vue create mode 100644 src/layouts/components/personal/InfoDialog.vue create mode 100644 src/layouts/components/personal/index.vue create mode 100644 src/layouts/components/process.vue create mode 100644 src/layouts/components/rightContent.vue create mode 100644 src/layouts/components/sidebar/Link.vue create mode 100644 src/layouts/components/sidebar/MenuItem.vue create mode 100644 src/layouts/components/sidebar/OperateBtn.vue create mode 100644 src/layouts/components/sidebar/baseMenu.vue create mode 100644 src/layouts/components/sidebar/sidebar.vue create mode 100644 src/layouts/components/sidebar/sidebarItem.vue create mode 100644 src/layouts/components/sidebar/theme.scss create mode 100644 src/layouts/home.vue create mode 100644 src/layouts/redirect.vue create mode 100644 src/main.ts create mode 100644 src/main.vite.ts create mode 100644 src/mock/common.js create mode 100644 src/mock/index.js create mode 100644 src/mock/task.js create mode 100644 src/models/depart.d.ts create mode 100644 src/models/service.d.ts create mode 100644 src/models/sku.d.ts create mode 100644 src/models/sla.d.ts create mode 100644 src/models/tenant.d.ts create mode 100644 src/models/user.d.ts create mode 100644 src/permission.js create mode 100644 src/public-path.js create mode 100644 src/router/index.js create mode 100644 src/router/module/constant.js create mode 100644 src/router/module/system.js create mode 100644 src/services/platform/index.js create mode 100644 src/services/platform/pool.js create mode 100644 src/services/services/catelog.ts create mode 100644 src/services/services/flow.js create mode 100644 src/services/services/monitor.js create mode 100644 src/services/services/order.js create mode 100644 src/services/services/plugins.ts create mode 100644 src/services/services/product.js create mode 100644 src/services/services/service.ts create mode 100644 src/services/services/spec.ts create mode 100644 src/services/system/account.js create mode 100644 src/services/system/auth.js create mode 100644 src/services/system/bizs.js create mode 100644 src/services/system/csc_login.js create mode 100644 src/services/system/depart.ts create mode 100644 src/services/system/dictionary.js create mode 100644 src/services/system/document.js create mode 100644 src/services/system/favorite.js create mode 100644 src/services/system/index.js create mode 100644 src/services/system/ip_access.js create mode 100644 src/services/system/license.js create mode 100644 src/services/system/log.ts create mode 100644 src/services/system/manager.ts create mode 100644 src/services/system/message.js create mode 100644 src/services/system/migration.js create mode 100644 src/services/system/notice.js create mode 100644 src/services/system/order.js create mode 100644 src/services/system/platformTask.js create mode 100644 src/services/system/portal.js create mode 100644 src/services/system/project.js create mode 100644 src/services/system/role.js create mode 100644 src/services/system/service_system.js create mode 100644 src/services/system/shop_cart.js create mode 100644 src/services/system/system.js create mode 100644 src/services/system/tag.js create mode 100644 src/services/system/tenant.ts create mode 100644 src/services/system/user.js create mode 100644 src/services/task/command.js create mode 100644 src/services/task/task.js create mode 100644 src/shared/action.ts create mode 100644 src/store/getters.js create mode 100644 src/store/index.js create mode 100644 src/store/modules/app.js create mode 100644 src/store/modules/permission.js create mode 100644 src/store/modules/tagsView.js create mode 100644 src/store/utils.js create mode 100644 src/validate/index.js create mode 100644 src/views/about/index.vue create mode 100644 src/views/about/logActive.vue create mode 100644 src/views/configs/AddDialog.vue create mode 100644 src/views/configs/PlatformTask.vue create mode 100644 src/views/configs/business/RelationProject.vue create mode 100644 src/views/configs/business/index.vue create mode 100644 src/views/configs/component/AddDialog.vue create mode 100644 src/views/configs/dictionary.vue create mode 100644 src/views/configs/enviroment.vue create mode 100644 src/views/configs/migration/configs.js create mode 100644 src/views/configs/migration/detail.vue create mode 100644 src/views/configs/migration/index.vue create mode 100644 src/views/configs/namerule.vue create mode 100644 src/views/configs/notice/Dialog.vue create mode 100644 src/views/configs/notice/config.js create mode 100644 src/views/configs/notice/index.vue create mode 100644 src/views/configs/project/components/basicinfo.vue create mode 100644 src/views/configs/project/components/member.vue create mode 100644 src/views/configs/project/index.vue create mode 100644 src/views/configs/project/projectDetail.vue create mode 100644 src/views/configs/setting/components/UploadButton.vue create mode 100644 src/views/configs/setting/components/UploadImage.vue create mode 100644 src/views/configs/setting/components/index.scss create mode 100644 src/views/configs/setting/general.vue create mode 100644 src/views/configs/setting/interface/CardItem.vue create mode 100644 src/views/configs/setting/interface/index.vue create mode 100644 src/views/configs/setting/monitor/index.vue create mode 100644 src/views/configs/setting/monitor/metrics.vue create mode 100644 src/views/configs/setting/page/BannerItem.vue create mode 100644 src/views/configs/setting/page/BrowserItem.vue create mode 100644 src/views/configs/setting/page/ContentItem.vue create mode 100644 src/views/configs/setting/page/LoginItem.vue create mode 100644 src/views/configs/setting/page/cmc.vue create mode 100644 src/views/configs/setting/page/csc.vue create mode 100644 src/views/configs/setting/page/index.vue create mode 100644 src/views/configs/setting/page/utils.js create mode 100644 src/views/configs/setting/security/index.vue create mode 100644 src/views/configs/setting/security/limit.vue create mode 100644 src/views/configs/setting_dashboard/AccessControl.vue create mode 100644 src/views/configs/setting_dashboard/AlarmCount.vue create mode 100644 src/views/configs/setting_dashboard/CommonOperation.vue create mode 100644 src/views/configs/setting_dashboard/CountCard.vue create mode 100644 src/views/configs/setting_dashboard/DataCenterOverview.vue create mode 100644 src/views/configs/setting_dashboard/DataView.vue create mode 100644 src/views/configs/setting_dashboard/ResUsed.vue create mode 100644 src/views/configs/setting_dashboard/SelectVendor.vue create mode 100644 src/views/configs/setting_dashboard/TaskHistory.vue create mode 100644 src/views/configs/setting_dashboard/data.ts create mode 100644 src/views/configs/setting_dashboard/index.vue create mode 100644 src/views/configs/setting_dashboard/utils.ts create mode 100644 src/views/configs/tag.vue create mode 100644 src/views/errorPage/401.vue create mode 100644 src/views/errorPage/404.vue create mode 100644 src/views/log/audit.vue create mode 100644 src/views/log/loginLog.vue create mode 100644 src/views/login/lockme.vue create mode 100644 src/views/login/login.vue create mode 100644 src/views/login/sso.vue create mode 100644 src/views/login/tools.js create mode 100644 src/views/monitor/components/Component.vue create mode 100644 src/views/monitor/components/Host.vue create mode 100644 src/views/monitor/components/HostOverview.vue create mode 100644 src/views/monitor/components/Plug.vue create mode 100644 src/views/monitor/components/Service.vue create mode 100644 src/views/monitor/components/filters.js create mode 100644 src/views/monitor/components/index.scss create mode 100644 src/views/monitor/components/logDownload.vue create mode 100644 src/views/monitor/components/next.vue create mode 100644 src/views/monitor/components/realLog.vue create mode 100644 src/views/monitor/components/userDefind.vue create mode 100644 src/views/monitor/index.vue create mode 100644 src/views/permisson/auth/AddDialog.vue create mode 100644 src/views/permisson/auth/api_auth.vue create mode 100644 src/views/permisson/auth/auth.vue create mode 100644 src/views/permisson/auth/console_auth/AddDialog.vue create mode 100644 src/views/permisson/auth/console_auth/index.vue create mode 100644 src/views/permisson/auth/index.vue create mode 100644 src/views/permisson/department.vue create mode 100644 src/views/permisson/manager/AddDialog.vue create mode 100644 src/views/permisson/manager/GrantRole.vue create mode 100644 src/views/permisson/manager/ResetPassword.vue create mode 100644 src/views/permisson/manager/SubnetCidr.vue create mode 100644 src/views/permisson/manager/UserDetail.vue create mode 100644 src/views/permisson/manager/config.ts create mode 100644 src/views/permisson/manager/index.vue create mode 100644 src/views/permisson/plugins/configIndex.vue create mode 100644 src/views/permisson/plugins/index.vue create mode 100644 src/views/permisson/role.vue create mode 100644 src/views/permisson/tenant/AddDialog.vue create mode 100644 src/views/permisson/tenant/ServiceDialog.vue create mode 100644 src/views/permisson/tenant/assignPool.vue create mode 100644 src/views/permisson/tenant/components/LeftMenu.vue create mode 100644 src/views/permisson/tenant/components/QuotaItem.vue create mode 100644 src/views/permisson/tenant/components/ServiceItem.vue create mode 100644 src/views/permisson/tenant/components/basicInfo.vue create mode 100644 src/views/permisson/tenant/components/quota.vue create mode 100644 src/views/permisson/tenant/components/quotaData.js create mode 100644 src/views/permisson/tenant/components/transfer.vue create mode 100644 src/views/permisson/tenant/config.js create mode 100644 src/views/permisson/tenant/index.scss create mode 100644 src/views/permisson/tenant/index.vue create mode 100644 src/views/permisson/tenant/quotaDialog.vue create mode 100644 src/views/permisson/tenant/tenantDetail.vue create mode 100644 tsconfig.json create mode 100644 upload.js create mode 100644 vite.config.ts create mode 100644 vue.config.js diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000..d6471a3 --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,2 @@ +> 1% +last 2 versions diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..7053c49 --- /dev/null +++ b/.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/.env.development b/.env.development new file mode 100644 index 0000000..9eb95b7 --- /dev/null +++ b/.env.development @@ -0,0 +1,4 @@ +/** + * Created by Zhang Haijun on 2018/8/13. + */ +VUE_APP_BASEURL = '/' diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..547115c --- /dev/null +++ b/.env.production @@ -0,0 +1,4 @@ +/** + * Created by Zhang Haijun on 2018/8/13. + */ +VUE_APP_BASEURL = '/sms-web/' diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..1f2e547 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +/resourceApply \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..c2f01a0 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,29 @@ +module.exports = { + root: true, + env: { + node: true + }, + extends: ['plugin:vue/essential', '@vue/standard', '@vue/typescript'], + rules: { + 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', + 'no-unused-vars': [ + 0, + { + vars: 'all', + args: 'none' + } + ], + semi: 0, + eqeqeq: 0, + 'one-var': 0, + camelcase: 0, + 'no-case-declarations': 0, + 'space-before-function-paren': 0, + 'vue/no-parsing-error': [2, { 'x-invalid-end-tag': false }], + '@typescript-eslint/indent': ['error', 2] + }, + parserOptions: { + parser: '@typescript-eslint/parser' + } +} diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..ab4cd5e --- /dev/null +++ b/.prettierrc @@ -0,0 +1,7 @@ +{ + "printWidth": 300, + "tabWidth": 2, + "singleQuote": true, + "semi": false, + "trailingComma": "none" +} diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..d58b43b --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,7 @@ +@Library('jgpl') _ +webPipeline([onBuildInstallShell:{-> + return """ + pnpm install -no-frozen-lockfile + pnpm run build || echo 'Ignore build error !!!' + """ +}]) \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..8b703a1 --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +# ts + +## Project setup + +``` +yarn install +``` + +### Compiles and hot-reloads for development + +``` +yarn serve +``` + +### Compiles and minifies for production + +``` +yarn build +``` + +### Lints and fixes files + +``` +yarn lint +``` + +### Customize configuration + +See [Configuration Reference](https://cli.vuejs.org/config/). diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..716b023 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: ['@vue/cli-plugin-babel/preset'] +} diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 0000000..a4f4369 --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1,3 @@ +module.exports = { + extends: ['@commitlint/config-conventional'] +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..dfbc844 --- /dev/null +++ b/package.json @@ -0,0 +1,104 @@ +{ + "name": "sms-web", + "version": "5.6.0", + "private": true, + "author": "Haijun Zhang ", + "scripts": { + "dev": "vite", + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint", + "fix": "vue-cli-service lint --fix", + "fix-memory-limit": "cross-env LIMIT=4096 increase-memory-limit", + "precommit": "lint-staged", + "upload": "node upload.js", + "deploy": "yarn build && yarn upload" + }, + "dependencies": { + "@antv/g6": "3.8.5", + "vue-grid-layout": "2.3.12", + "@vue/composition-api": "^1.7.1", + "axios": "^0.21.1", + "clipboard": "^2.0.6", + "cmp-echarts": "2.0.0-5.6-release", + "cmp-element": "1.0.0-5.6-release", + "cmp-socket": "1.0.0", + "core-js": "^3.3.2", + "crypto-js": "^3.1.9-1", + "dayjs": "^1.10.4", + "element-ui": "2.13.0", + "js-cookie": "^2.2.0", + "lodash-es": "^4.17.21", + "nprogress": "^0.2.0", + "qs": "^6.7.0", + "regenerator-runtime": "^0.13.11", + "tslib": "^2.4.1", + "url-loader": "^4.1.1", + "vue": "2.6.14", + "vue-class-component": "^7.0.2", + "vue-i18n": "^8.15.0", + "vue-property-decorator": "^8.3.0", + "vue-router": "^3.3.4", + "vue2-animate": "^1.0.4", + "vuedraggable": "^2.15.0", + "vuex": "^3.0.1", + "wangeditor": "^4.6.16" + }, + "devDependencies": { + "@commitlint/cli": "^11.0.0", + "@commitlint/config-conventional": "^11.0.0", + "@types/js-cookie": "^2.2.4", + "@types/lodash-es": "^4.17.4", + "@types/nprogress": "^0.2.0", + "@types/qs": "^6.5.3", + "@typescript-eslint/eslint-plugin": "^2.18.0", + "@typescript-eslint/parser": "^2.18.0", + "@vue/cli-plugin-babel": "~4.4.1", + "@vue/cli-plugin-eslint": "~4.4.1", + "@vue/cli-plugin-router": "~4.4.1", + "@vue/cli-plugin-typescript": "~4.4.1", + "@vue/cli-plugin-vuex": "~4.4.1", + "@vue/cli-service": "~4.4.1", + "@vue/eslint-config-standard": "^5.1.0", + "@vue/eslint-config-typescript": "^5.0.1", + "chalk": "^4.1.1", + "compress-webpack-plugin": "^1.0.6", + "cross-env": "^5.2.0", + "eslint": "^6.7.2", + "eslint-plugin-import": "^2.20.1", + "eslint-plugin-node": "^11.0.0", + "eslint-plugin-promise": "^4.2.1", + "eslint-plugin-standard": "^4.0.0", + "eslint-plugin-vue": "^6.1.2", + "husky": "^1.3.1", + "increase-memory-limit": "^1.0.6", + "lint-staged": "^8.1.5", + "ora": "^5.4.0", + "sass": "~1.32.6", + "sass-loader": "^8.0.0", + "scp2": "^0.5.0", + "svg-sprite-loader": "^6.0.2", + "typescript": "~3.9.3", + "vite": "2.4.1", + "vite-plugin-svg-icons": "^0.6.2", + "vite-plugin-vue2": "^1.5.1", + "vue-template-compiler": "2.6.14" + }, + "eslintConfig": { + "parserOptions": { + "parser": "@typescript-eslint/parser" + } + }, + "lint-staged": { + "src/**/*.{js,vue}": [ + "eslint --fix", + "git add" + ] + }, + "husky": { + "hooks": { + "pre-commit": "lint-staged", + "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" + } + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..c7d0482 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,12965 @@ +lockfileVersion: 5.4 + +specifiers: + '@antv/g6': 3.8.5 + '@commitlint/cli': ^11.0.0 + '@commitlint/config-conventional': ^11.0.0 + '@types/js-cookie': ^2.2.4 + '@types/lodash-es': ^4.17.4 + '@types/nprogress': ^0.2.0 + '@types/qs': ^6.5.3 + '@typescript-eslint/eslint-plugin': ^2.18.0 + '@typescript-eslint/parser': ^2.18.0 + '@vue/cli-plugin-babel': ~4.4.1 + '@vue/cli-plugin-eslint': ~4.4.1 + '@vue/cli-plugin-router': ~4.4.1 + '@vue/cli-plugin-typescript': ~4.4.1 + '@vue/cli-plugin-vuex': ~4.4.1 + '@vue/cli-service': ~4.4.1 + '@vue/composition-api': ^1.7.1 + '@vue/eslint-config-standard': ^5.1.0 + '@vue/eslint-config-typescript': ^5.0.1 + axios: ^0.21.1 + chalk: ^4.1.1 + clipboard: ^2.0.6 + cmp-echarts: 2.0.0-5.6-release + cmp-element: 1.0.0-5.6-release + cmp-socket: 1.0.0 + compress-webpack-plugin: ^1.0.6 + core-js: ^3.3.2 + cross-env: ^5.2.0 + crypto-js: ^3.1.9-1 + dayjs: ^1.10.4 + element-ui: 2.13.0 + eslint: ^6.7.2 + eslint-plugin-import: ^2.20.1 + eslint-plugin-node: ^11.0.0 + eslint-plugin-promise: ^4.2.1 + eslint-plugin-standard: ^4.0.0 + eslint-plugin-vue: ^6.1.2 + husky: ^1.3.1 + increase-memory-limit: ^1.0.6 + js-cookie: ^2.2.0 + lint-staged: ^8.1.5 + lodash-es: ^4.17.21 + nprogress: ^0.2.0 + ora: ^5.4.0 + qs: ^6.7.0 + regenerator-runtime: ^0.13.11 + sass: ~1.32.6 + sass-loader: ^8.0.0 + scp2: ^0.5.0 + svg-sprite-loader: ^6.0.2 + tslib: ^2.4.1 + typescript: ~3.9.3 + url-loader: ^4.1.1 + vite: 2.4.1 + vite-plugin-svg-icons: ^0.6.2 + vite-plugin-vue2: ^1.5.1 + vue: 2.6.14 + vue-class-component: ^7.0.2 + vue-grid-layout: 2.3.12 + vue-i18n: ^8.15.0 + vue-property-decorator: ^8.3.0 + vue-router: ^3.3.4 + vue-template-compiler: 2.6.14 + vue2-animate: ^1.0.4 + vuedraggable: ^2.15.0 + vuex: ^3.0.1 + wangeditor: ^4.6.16 + +dependencies: + '@antv/g6': 3.8.5 + '@vue/composition-api': 1.7.2_vue@2.6.14 + axios: 0.21.1 + clipboard: 2.0.8 + cmp-echarts: 2.0.0-5.6-release_w6byxhhjt3kc4nreagfk5h2rbm + cmp-element: 1.0.0-5.6-release_w6byxhhjt3kc4nreagfk5h2rbm + cmp-socket: 1.0.0 + core-js: 3.9.1 + crypto-js: 3.3.0 + dayjs: 1.10.4 + element-ui: 2.13.0_vue@2.6.14 + js-cookie: 2.2.1 + lodash-es: 4.17.21 + nprogress: 0.2.0 + qs: 6.10.0 + regenerator-runtime: 0.13.11 + tslib: 2.4.1 + url-loader: 4.1.1 + vue: 2.6.14 + vue-class-component: 7.2.6_vue@2.6.14 + vue-grid-layout: 2.3.12 + vue-i18n: 8.24.1_vue@2.6.14 + vue-property-decorator: 8.5.1_vue@2.6.14 + vue-router: 3.5.1_vue@2.6.14 + vue2-animate: 1.0.4 + vuedraggable: 2.24.3 + vuex: 3.6.2_vue@2.6.14 + wangeditor: 4.6.16 + +devDependencies: + '@commitlint/cli': 11.0.0 + '@commitlint/config-conventional': 11.0.0 + '@types/js-cookie': 2.2.6 + '@types/lodash-es': 4.17.4 + '@types/nprogress': 0.2.0 + '@types/qs': 6.9.6 + '@typescript-eslint/eslint-plugin': 2.34.0_jxzg2k43owi4xwrqkezmr5eq6m + '@typescript-eslint/parser': 2.34.0_hejjmlztrvmnsks456jx6n7lwi + '@vue/cli-plugin-babel': 4.4.6_fjy6firl6adfsotiausbjoc7ky + '@vue/cli-plugin-eslint': 4.4.6_gckqw5ssyvaoozj2spmaxoeooq + '@vue/cli-plugin-router': 4.4.6_@vue+cli-service@4.4.6 + '@vue/cli-plugin-typescript': 4.4.6_bf2tvjwiro5jzldu5wac7oah3u + '@vue/cli-plugin-vuex': 4.4.6_@vue+cli-service@4.4.6 + '@vue/cli-service': 4.4.6_tudvkij53ve6zhr6ltadnssrsa + '@vue/eslint-config-standard': 5.1.2_bhlcpwu3qqosv22ubdlbjeklmy + '@vue/eslint-config-typescript': 5.1.0_mfq4e2qj55uhlotzljeesvv4bm + chalk: 4.1.1 + compress-webpack-plugin: 1.0.6 + cross-env: 5.2.1 + eslint: 6.8.0 + eslint-plugin-import: 2.22.1_tbglwmj7t2rhd43mvxmptakoay + eslint-plugin-node: 11.1.0_eslint@6.8.0 + eslint-plugin-promise: 4.3.1 + eslint-plugin-standard: 4.1.0_eslint@6.8.0 + eslint-plugin-vue: 6.2.2_eslint@6.8.0 + husky: 1.3.1 + increase-memory-limit: 1.0.7 + lint-staged: 8.2.1 + ora: 5.4.0 + sass: 1.32.8 + sass-loader: 8.0.2_sass@1.32.8 + scp2: 0.5.0 + svg-sprite-loader: 6.0.2 + typescript: 3.9.9 + vite: 2.4.1 + vite-plugin-svg-icons: 0.6.2_vite@2.4.1 + vite-plugin-vue2: 1.5.1_vite@2.4.1 + vue-template-compiler: 2.6.14 + +packages: + /@ant-design/colors/4.0.5: + resolution: { integrity: sha512-3mnuX2prnWOWvpFTS2WH2LoouWlOgtnIpc6IarWN6GOzzLF8dW/U8UctuvIPhoboETehZfJ61XP+CGakBEPJ3Q== } + dependencies: + tinycolor2: 1.4.2 + dev: false + + /@antv/dom-util/2.0.4: + resolution: { integrity: sha512-2shXUl504fKwt82T3GkuT4Uoc6p9qjCKnJ8gXGLSW4T1W37dqf9AV28aCfoVPHp2BUXpSsB+PAJX2rG/jLHsLQ== } + dependencies: + tslib: 2.4.1 + dev: false + + /@antv/event-emitter/0.1.3: + resolution: { integrity: sha512-4ddpsiHN9Pd4UIlWuKVK1C4IiZIdbwQvy9i7DUSI3xNJ89FPUFt8lxDYj8GzzfdllV0NkJTRxnG+FvLk0llidg== } + dev: false + + /@antv/g-base/0.5.11: + resolution: { integrity: sha512-10Hkq7XksVCqxZZrPkd6HTU9tb/+2meCVEMy/edhS4I/sokhcgC9m3fQP5bE8rA3EVKwELE7MJHZ98BEpVFqvQ== } + dependencies: + '@antv/event-emitter': 0.1.3 + '@antv/g-math': 0.1.7 + '@antv/matrix-util': 3.1.0-beta.3 + '@antv/path-util': 2.0.15 + '@antv/util': 2.0.17 + '@types/d3-timer': 2.0.1 + d3-ease: 1.0.7 + d3-interpolate: 1.4.0 + d3-timer: 1.0.10 + detect-browser: 5.3.0 + tslib: 2.4.1 + dev: false + + /@antv/g-canvas/0.5.12: + resolution: { integrity: sha512-iJ/muwwqCCNONVlPIzv/7OL5iLguaKRj2BxNMytUO3TWwamM+kHkiyYEOkS0dPn9h/hBsHYlLUluSVz2Fp6/bw== } + dependencies: + '@antv/g-base': 0.5.11 + '@antv/g-math': 0.1.7 + '@antv/matrix-util': 3.1.0-beta.3 + '@antv/path-util': 2.0.15 + '@antv/util': 2.0.17 + gl-matrix: 3.4.3 + tslib: 2.4.1 + dev: false + + /@antv/g-math/0.1.7: + resolution: { integrity: sha512-xGyXaloD1ynfp7gS4VuV+MjSptZIwHvLHr8ekXJSFAeWPYLu84yOW2wOZHDdp1bzDAIuRv6xDBW58YGHrWsFcA== } + dependencies: + '@antv/util': 2.0.17 + gl-matrix: 3.4.3 + dev: false + + /@antv/g-svg/0.5.6: + resolution: { integrity: sha512-Xve1EUGk4HMbl2nq4ozR4QLh6GyoZ8Xw/+9kHYI4B5P2lIUQU95MuRsaLFfW5NNpZDx85ZeH97tqEmC9L96E7A== } + dependencies: + '@antv/g-base': 0.5.11 + '@antv/g-math': 0.1.7 + '@antv/util': 2.0.17 + detect-browser: 5.3.0 + tslib: 2.4.1 + dev: false + + /@antv/g6/3.8.5: + resolution: { integrity: sha512-q+Fomc5ogcdcJ9usgYUVHzB8lFR5XHi4+O1BBFzA4ERgaF255xtrIpP631cD2wjByDq/9MbBCSpFqeOgBg2eOg== } + dependencies: + '@ant-design/colors': 4.0.5 + '@antv/dom-util': 2.0.4 + '@antv/event-emitter': 0.1.3 + '@antv/g-base': 0.5.11 + '@antv/g-canvas': 0.5.12 + '@antv/g-math': 0.1.7 + '@antv/g-svg': 0.5.6 + '@antv/hierarchy': 0.6.8 + '@antv/matrix-util': 2.0.7 + '@antv/path-util': 2.0.15 + '@antv/scale': 0.3.18 + '@antv/util': 2.0.17 + color: 3.1.3 + d3-force: 2.1.1 + dagre: 0.8.5 + insert-css: 2.0.0 + ml-matrix: 6.10.4 + dev: false + + /@antv/gl-matrix/2.7.1: + resolution: { integrity: sha512-oOWcVNlpELIKi9x+Mm1Vwbz8pXfkbJKykoCIOJ/dNK79hSIANbpXJ5d3Rra9/wZqK6MC961B7sybFhPlLraT3Q== } + dev: false + + /@antv/hierarchy/0.6.8: + resolution: { integrity: sha512-wVzUl+pxny5gyGJ2mkWx8IiEypX6bnMHgr/NILgbxY6shoy0Vf4FhZpI3CY8Ez7bQT6js8fMkB2NymPW7d7i8A== } + dependencies: + '@antv/util': 2.0.17 + dev: false + + /@antv/matrix-util/2.0.7: + resolution: { integrity: sha512-bogifQY8jplWtSTZsPqBOdBlDdkM7IwDqYL8eMYL8OaSyOPCS7l9bnEQjQ9qTAwfCd7wHTuPoCnCpbiR8BYFvQ== } + dependencies: + '@antv/gl-matrix': 2.7.1 + '@antv/util': 2.0.17 + tslib: 1.14.1 + dev: false + + /@antv/matrix-util/3.0.4: + resolution: { integrity: sha512-BAPyu6dUliHcQ7fm9hZSGKqkwcjEDVLVAstlHULLvcMZvANHeLXgHEgV7JqcAV/GIhIz8aZChIlzM1ZboiXpYQ== } + dependencies: + '@antv/util': 2.0.17 + gl-matrix: 3.4.3 + tslib: 2.4.1 + dev: false + + /@antv/matrix-util/3.1.0-beta.3: + resolution: { integrity: sha512-W2R6Za3A6CmG51Y/4jZUM/tFgYSq7vTqJL1VD9dKrvwxS4sE0ZcXINtkp55CdyBwJ6Cwm8pfoRpnD4FnHahN0A== } + dependencies: + '@antv/util': 2.0.17 + gl-matrix: 3.4.3 + tslib: 2.4.1 + dev: false + + /@antv/path-util/2.0.15: + resolution: { integrity: sha512-R2VLZ5C8PLPtr3VciNyxtjKqJ0XlANzpFb5sE9GE61UQqSRuSVSzIakMxjEPrpqbgc+s+y8i+fmc89Snu7qbNw== } + dependencies: + '@antv/matrix-util': 3.0.4 + '@antv/util': 2.0.17 + tslib: 2.4.1 + dev: false + + /@antv/scale/0.3.18: + resolution: { integrity: sha512-GHwE6Lo7S/Q5fgaLPaCsW+CH+3zl4aXpnN1skOiEY0Ue9/u+s2EySv6aDXYkAqs//i0uilMDD/0/4n8caX9U9w== } + dependencies: + '@antv/util': 2.0.17 + fecha: 4.2.3 + tslib: 2.4.1 + dev: false + + /@antv/util/2.0.17: + resolution: { integrity: sha512-o6I9hi5CIUvLGDhth0RxNSFDRwXeywmt6ExR4+RmVAzIi48ps6HUy+svxOCayvrPBN37uE6TAc2KDofRo0nK9Q== } + dependencies: + csstype: 3.1.1 + tslib: 2.4.1 + dev: false + + /@babel/code-frame/7.12.13: + resolution: { integrity: sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== } + dependencies: + '@babel/highlight': 7.13.10 + dev: true + + /@babel/compat-data/7.14.0: + resolution: { integrity: sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q== } + dev: true + + /@babel/core/7.14.3: + resolution: { integrity: sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg== } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/code-frame': 7.12.13 + '@babel/generator': 7.14.3 + '@babel/helper-compilation-targets': 7.13.16_@babel+core@7.14.3 + '@babel/helper-module-transforms': 7.14.2 + '@babel/helpers': 7.14.0 + '@babel/parser': 7.14.3 + '@babel/template': 7.12.13 + '@babel/traverse': 7.14.2 + '@babel/types': 7.14.2 + convert-source-map: 1.7.0 + debug: 4.3.2 + gensync: 1.0.0-beta.2 + json5: 2.2.0 + semver: 6.3.0 + source-map: 0.5.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator/7.14.3: + resolution: { integrity: sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA== } + dependencies: + '@babel/types': 7.14.2 + jsesc: 2.5.2 + source-map: 0.5.7 + dev: true + + /@babel/helper-annotate-as-pure/7.12.13: + resolution: { integrity: sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw== } + dependencies: + '@babel/types': 7.14.2 + dev: true + + /@babel/helper-builder-binary-assignment-operator-visitor/7.12.13: + resolution: { integrity: sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA== } + dependencies: + '@babel/helper-explode-assignable-expression': 7.13.0 + '@babel/types': 7.14.2 + dev: true + + /@babel/helper-compilation-targets/7.13.16_@babel+core@7.14.3: + resolution: { integrity: sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA== } + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.14.0 + '@babel/core': 7.14.3 + '@babel/helper-validator-option': 7.12.17 + browserslist: 4.16.3 + semver: 6.3.0 + dev: true + + /@babel/helper-create-class-features-plugin/7.14.3_@babel+core@7.14.3: + resolution: { integrity: sha512-BnEfi5+6J2Lte9LeiL6TxLWdIlEv9Woacc1qXzXBgbikcOzMRM2Oya5XGg/f/ngotv1ej2A/b+3iJH8wbS1+lQ== } + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-annotate-as-pure': 7.12.13 + '@babel/helper-function-name': 7.14.2 + '@babel/helper-member-expression-to-functions': 7.13.12 + '@babel/helper-optimise-call-expression': 7.12.13 + '@babel/helper-replace-supers': 7.14.3 + '@babel/helper-split-export-declaration': 7.12.13 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-create-regexp-features-plugin/7.12.17_@babel+core@7.14.3: + resolution: { integrity: sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg== } + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-annotate-as-pure': 7.12.13 + regexpu-core: 4.7.1 + dev: true + + /@babel/helper-define-polyfill-provider/0.1.5_@babel+core@7.14.3: + resolution: { integrity: sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg== } + peerDependencies: + '@babel/core': ^7.4.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-compilation-targets': 7.13.16_@babel+core@7.14.3 + '@babel/helper-module-imports': 7.13.12 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/traverse': 7.14.2 + debug: 4.3.2 + lodash.debounce: 4.0.8 + resolve: 1.20.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-explode-assignable-expression/7.13.0: + resolution: { integrity: sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA== } + dependencies: + '@babel/types': 7.14.2 + dev: true + + /@babel/helper-function-name/7.14.2: + resolution: { integrity: sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ== } + dependencies: + '@babel/helper-get-function-arity': 7.12.13 + '@babel/template': 7.12.13 + '@babel/types': 7.14.2 + dev: true + + /@babel/helper-get-function-arity/7.12.13: + resolution: { integrity: sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== } + dependencies: + '@babel/types': 7.14.2 + dev: true + + /@babel/helper-hoist-variables/7.13.0: + resolution: { integrity: sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g== } + dependencies: + '@babel/traverse': 7.14.2 + '@babel/types': 7.14.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-member-expression-to-functions/7.13.12: + resolution: { integrity: sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw== } + dependencies: + '@babel/types': 7.14.2 + dev: true + + /@babel/helper-module-imports/7.13.12: + resolution: { integrity: sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA== } + dependencies: + '@babel/types': 7.14.2 + dev: true + + /@babel/helper-module-transforms/7.14.2: + resolution: { integrity: sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA== } + dependencies: + '@babel/helper-module-imports': 7.13.12 + '@babel/helper-replace-supers': 7.14.3 + '@babel/helper-simple-access': 7.13.12 + '@babel/helper-split-export-declaration': 7.12.13 + '@babel/helper-validator-identifier': 7.14.0 + '@babel/template': 7.12.13 + '@babel/traverse': 7.14.2 + '@babel/types': 7.14.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-optimise-call-expression/7.12.13: + resolution: { integrity: sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== } + dependencies: + '@babel/types': 7.14.2 + dev: true + + /@babel/helper-plugin-utils/7.13.0: + resolution: { integrity: sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== } + dev: true + + /@babel/helper-remap-async-to-generator/7.13.0: + resolution: { integrity: sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg== } + dependencies: + '@babel/helper-annotate-as-pure': 7.12.13 + '@babel/helper-wrap-function': 7.13.0 + '@babel/types': 7.14.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-replace-supers/7.14.3: + resolution: { integrity: sha512-Rlh8qEWZSTfdz+tgNV/N4gz1a0TMNwCUcENhMjHTHKp3LseYH5Jha0NSlyTQWMnjbYcwFt+bqAMqSLHVXkQ6UA== } + dependencies: + '@babel/helper-member-expression-to-functions': 7.13.12 + '@babel/helper-optimise-call-expression': 7.12.13 + '@babel/traverse': 7.14.2 + '@babel/types': 7.14.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-simple-access/7.13.12: + resolution: { integrity: sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA== } + dependencies: + '@babel/types': 7.14.2 + dev: true + + /@babel/helper-skip-transparent-expression-wrappers/7.12.1: + resolution: { integrity: sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== } + dependencies: + '@babel/types': 7.14.2 + dev: true + + /@babel/helper-split-export-declaration/7.12.13: + resolution: { integrity: sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== } + dependencies: + '@babel/types': 7.14.2 + dev: true + + /@babel/helper-validator-identifier/7.14.0: + resolution: { integrity: sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== } + dev: true + + /@babel/helper-validator-option/7.12.17: + resolution: { integrity: sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== } + dev: true + + /@babel/helper-wrap-function/7.13.0: + resolution: { integrity: sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA== } + dependencies: + '@babel/helper-function-name': 7.14.2 + '@babel/template': 7.12.13 + '@babel/traverse': 7.14.2 + '@babel/types': 7.14.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helpers/7.14.0: + resolution: { integrity: sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg== } + dependencies: + '@babel/template': 7.12.13 + '@babel/traverse': 7.14.2 + '@babel/types': 7.14.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight/7.13.10: + resolution: { integrity: sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg== } + dependencies: + '@babel/helper-validator-identifier': 7.14.0 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser/7.14.3: + resolution: { integrity: sha512-7MpZDIfI7sUC5zWo2+foJ50CSI5lcqDehZ0lVgIhSi4bFEk94fLAKlF3Q0nzSQQ+ca0lm+O6G9ztKVBeu8PMRQ== } + engines: { node: '>=6.0.0' } + hasBin: true + dependencies: + '@babel/types': 7.14.2 + dev: true + + /@babel/plugin-proposal-async-generator-functions/7.13.8_@babel+core@7.14.3: + resolution: { integrity: sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/helper-remap-async-to-generator': 7.13.0 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.14.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-class-properties/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-create-class-features-plugin': 7.14.3_@babel+core@7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-decorators/7.13.5_@babel+core@7.14.3: + resolution: { integrity: sha512-i0GDfVNuoapwiheevUOuSW67mInqJ8qw7uWfpjNVeHMn143kXblEy/bmL9AdZ/0yf/4BMQeWXezK0tQIvNPqag== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-create-class-features-plugin': 7.14.3_@babel+core@7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/plugin-syntax-decorators': 7.12.13_@babel+core@7.14.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-dynamic-import/7.13.8_@babel+core@7.14.3: + resolution: { integrity: sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.14.3 + dev: true + + /@babel/plugin-proposal-export-namespace-from/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.14.3 + dev: true + + /@babel/plugin-proposal-json-strings/7.13.8_@babel+core@7.14.3: + resolution: { integrity: sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.14.3 + dev: true + + /@babel/plugin-proposal-logical-assignment-operators/7.13.8_@babel+core@7.14.3: + resolution: { integrity: sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.14.3 + dev: true + + /@babel/plugin-proposal-nullish-coalescing-operator/7.13.8_@babel+core@7.14.3: + resolution: { integrity: sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.14.3 + dev: true + + /@babel/plugin-proposal-numeric-separator/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.14.3 + dev: true + + /@babel/plugin-proposal-object-rest-spread/7.13.8_@babel+core@7.14.3: + resolution: { integrity: sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.14.0 + '@babel/core': 7.14.3 + '@babel/helper-compilation-targets': 7.13.16_@babel+core@7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.14.3 + '@babel/plugin-transform-parameters': 7.13.0_@babel+core@7.14.3 + dev: true + + /@babel/plugin-proposal-optional-catch-binding/7.13.8_@babel+core@7.14.3: + resolution: { integrity: sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.14.3 + dev: true + + /@babel/plugin-proposal-optional-chaining/7.13.8_@babel+core@7.14.3: + resolution: { integrity: sha512-hpbBwbTgd7Cz1QryvwJZRo1U0k1q8uyBmeXOSQUjdg/A2TASkhR/rz7AyqZ/kS8kbpsNA80rOYbxySBJAqmhhQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.12.1 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.14.3 + dev: true + + /@babel/plugin-proposal-private-methods/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-create-class-features-plugin': 7.14.3_@babel+core@7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-unicode-property-regex/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg== } + engines: { node: '>=4' } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-create-regexp-features-plugin': 7.12.17_@babel+core@7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.14.3: + resolution: { integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-decorators/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.14.3: + resolution: { integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.14.3: + resolution: { integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.14.3: + resolution: { integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-jsx/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.14.3: + resolution: { integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.14.3: + resolution: { integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.14.3: + resolution: { integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.14.3: + resolution: { integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.14.3: + resolution: { integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.14.3: + resolution: { integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-top-level-await/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-typescript/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-arrow-functions/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-async-to-generator/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-module-imports': 7.13.12 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/helper-remap-async-to-generator': 7.13.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-block-scoped-functions/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-block-scoping/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-classes/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-annotate-as-pure': 7.12.13 + '@babel/helper-function-name': 7.14.2 + '@babel/helper-optimise-call-expression': 7.12.13 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/helper-replace-supers': 7.14.3 + '@babel/helper-split-export-declaration': 7.12.13 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-computed-properties/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-destructuring/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-dotall-regex/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-create-regexp-features-plugin': 7.12.17_@babel+core@7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-duplicate-keys/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-exponentiation-operator/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.12.13 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-for-of/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-function-name/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-function-name': 7.14.2 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-literals/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-member-expression-literals/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-modules-amd/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-module-transforms': 7.14.2 + '@babel/helper-plugin-utils': 7.13.0 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-commonjs/7.13.8_@babel+core@7.14.3: + resolution: { integrity: sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-module-transforms': 7.14.2 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/helper-simple-access': 7.13.12 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-systemjs/7.13.8_@babel+core@7.14.3: + resolution: { integrity: sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-hoist-variables': 7.13.0 + '@babel/helper-module-transforms': 7.14.2 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/helper-validator-identifier': 7.14.0 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-umd/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-module-transforms': 7.14.2 + '@babel/helper-plugin-utils': 7.13.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-named-capturing-groups-regex/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA== } + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-create-regexp-features-plugin': 7.12.17_@babel+core@7.14.3 + dev: true + + /@babel/plugin-transform-new-target/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-object-super/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/helper-replace-supers': 7.14.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-parameters/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-property-literals/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-regenerator/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + regenerator-transform: 0.14.5 + dev: true + + /@babel/plugin-transform-reserved-words/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-runtime/7.13.10_@babel+core@7.14.3: + resolution: { integrity: sha512-Y5k8ipgfvz5d/76tx7JYbKQTcgFSU6VgJ3kKQv4zGTKr+a9T/KBvfRvGtSFgKDQGt/DBykQixV0vNWKIdzWErA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-module-imports': 7.13.12 + '@babel/helper-plugin-utils': 7.13.0 + babel-plugin-polyfill-corejs2: 0.1.10_@babel+core@7.14.3 + babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.14.3 + babel-plugin-polyfill-regenerator: 0.1.6_@babel+core@7.14.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-shorthand-properties/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-spread/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.12.1 + dev: true + + /@babel/plugin-transform-sticky-regex/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-template-literals/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-typeof-symbol/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-typescript/7.14.3_@babel+core@7.14.3: + resolution: { integrity: sha512-G5Bb5pY6tJRTC4ag1visSgiDoGgJ1u1fMUgmc2ijLkcIdzP83Q1qyZX4ggFQ/SkR+PNOatkaYC+nKcTlpsX4ag== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-create-class-features-plugin': 7.14.3_@babel+core@7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/plugin-syntax-typescript': 7.12.13_@babel+core@7.14.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-unicode-escapes/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-unicode-regex/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-create-regexp-features-plugin': 7.12.17_@babel+core@7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/preset-env/7.13.10_@babel+core@7.14.3: + resolution: { integrity: sha512-nOsTScuoRghRtUsRr/c69d042ysfPHcu+KOB4A9aAO9eJYqrkat+LF8G1yp1HD18QiwixT2CisZTr/0b3YZPXQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.14.0 + '@babel/core': 7.14.3 + '@babel/helper-compilation-targets': 7.13.16_@babel+core@7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/helper-validator-option': 7.12.17 + '@babel/plugin-proposal-async-generator-functions': 7.13.8_@babel+core@7.14.3 + '@babel/plugin-proposal-class-properties': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-proposal-dynamic-import': 7.13.8_@babel+core@7.14.3 + '@babel/plugin-proposal-export-namespace-from': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-proposal-json-strings': 7.13.8_@babel+core@7.14.3 + '@babel/plugin-proposal-logical-assignment-operators': 7.13.8_@babel+core@7.14.3 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.13.8_@babel+core@7.14.3 + '@babel/plugin-proposal-numeric-separator': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-proposal-object-rest-spread': 7.13.8_@babel+core@7.14.3 + '@babel/plugin-proposal-optional-catch-binding': 7.13.8_@babel+core@7.14.3 + '@babel/plugin-proposal-optional-chaining': 7.13.8_@babel+core@7.14.3 + '@babel/plugin-proposal-private-methods': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-proposal-unicode-property-regex': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.14.3 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.14.3 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.14.3 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.14.3 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.14.3 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.14.3 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.14.3 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.14.3 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.14.3 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.14.3 + '@babel/plugin-syntax-top-level-await': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-arrow-functions': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-transform-async-to-generator': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-transform-block-scoped-functions': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-block-scoping': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-classes': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-transform-computed-properties': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-transform-destructuring': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-transform-dotall-regex': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-duplicate-keys': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-exponentiation-operator': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-for-of': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-transform-function-name': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-literals': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-member-expression-literals': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-modules-amd': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-transform-modules-commonjs': 7.13.8_@babel+core@7.14.3 + '@babel/plugin-transform-modules-systemjs': 7.13.8_@babel+core@7.14.3 + '@babel/plugin-transform-modules-umd': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-transform-named-capturing-groups-regex': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-new-target': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-object-super': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-parameters': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-transform-property-literals': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-regenerator': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-reserved-words': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-shorthand-properties': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-spread': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-transform-sticky-regex': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-template-literals': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-transform-typeof-symbol': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-unicode-escapes': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-unicode-regex': 7.12.13_@babel+core@7.14.3 + '@babel/preset-modules': 0.1.4_@babel+core@7.14.3 + '@babel/types': 7.14.2 + babel-plugin-polyfill-corejs2: 0.1.10_@babel+core@7.14.3 + babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.14.3 + babel-plugin-polyfill-regenerator: 0.1.6_@babel+core@7.14.3 + core-js-compat: 3.9.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/preset-modules/0.1.4_@babel+core@7.14.3: + resolution: { integrity: sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/plugin-proposal-unicode-property-regex': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-dotall-regex': 7.12.13_@babel+core@7.14.3 + '@babel/types': 7.14.2 + esutils: 2.0.3 + dev: true + + /@babel/runtime-corejs3/7.13.17: + resolution: { integrity: sha512-RGXINY1YvduBlGrP+vHjJqd/nK7JVpfM4rmZLGMx77WoL3sMrhheA0qxii9VNn1VHnxJLEyxmvCB+Wqc+x/FMw== } + dependencies: + core-js-pure: 3.11.0 + regenerator-runtime: 0.13.11 + dev: false + + /@babel/runtime/7.13.10: + resolution: { integrity: sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw== } + dependencies: + regenerator-runtime: 0.13.11 + + /@babel/template/7.12.13: + resolution: { integrity: sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== } + dependencies: + '@babel/code-frame': 7.12.13 + '@babel/parser': 7.14.3 + '@babel/types': 7.14.2 + dev: true + + /@babel/traverse/7.14.2: + resolution: { integrity: sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA== } + dependencies: + '@babel/code-frame': 7.12.13 + '@babel/generator': 7.14.3 + '@babel/helper-function-name': 7.14.2 + '@babel/helper-split-export-declaration': 7.12.13 + '@babel/parser': 7.14.3 + '@babel/types': 7.14.2 + debug: 4.3.2 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types/7.14.2: + resolution: { integrity: sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw== } + dependencies: + '@babel/helper-validator-identifier': 7.14.0 + to-fast-properties: 2.0.0 + dev: true + + /@commitlint/cli/11.0.0: + resolution: { integrity: sha512-YWZWg1DuqqO5Zjh7vUOeSX76vm0FFyz4y0cpGMFhrhvUi5unc4IVfCXZ6337R9zxuBtmveiRuuhQqnRRer+13g== } + engines: { node: '>=v10.22.0' } + hasBin: true + dependencies: + '@babel/runtime': 7.13.10 + '@commitlint/format': 11.0.0 + '@commitlint/lint': 11.0.0 + '@commitlint/load': 11.0.0 + '@commitlint/read': 11.0.0 + chalk: 4.1.0 + core-js: 3.9.1 + get-stdin: 8.0.0 + lodash: 4.17.21 + resolve-from: 5.0.0 + resolve-global: 1.0.0 + yargs: 15.4.1 + dev: true + + /@commitlint/config-conventional/11.0.0: + resolution: { integrity: sha512-SNDRsb5gLuDd2PL83yCOQX6pE7gevC79UPFx+GLbLfw6jGnnbO9/tlL76MLD8MOViqGbo7ZicjChO9Gn+7tHhA== } + engines: { node: '>=v10.22.0' } + dependencies: + conventional-changelog-conventionalcommits: 4.5.0 + dev: true + + /@commitlint/ensure/11.0.0: + resolution: { integrity: sha512-/T4tjseSwlirKZdnx4AuICMNNlFvRyPQimbZIOYujp9DSO6XRtOy9NrmvWujwHsq9F5Wb80QWi4WMW6HMaENug== } + engines: { node: '>=v10.22.0' } + dependencies: + '@commitlint/types': 11.0.0 + lodash: 4.17.21 + dev: true + + /@commitlint/execute-rule/11.0.0: + resolution: { integrity: sha512-g01p1g4BmYlZ2+tdotCavrMunnPFPhTzG1ZiLKTCYrooHRbmvqo42ZZn4QMStUEIcn+jfLb6BRZX3JzIwA1ezQ== } + engines: { node: '>=v10.22.0' } + dev: true + + /@commitlint/format/11.0.0: + resolution: { integrity: sha512-bpBLWmG0wfZH/svzqD1hsGTpm79TKJWcf6EXZllh2J/LSSYKxGlv967lpw0hNojme0sZd4a/97R3qA2QHWWSLg== } + engines: { node: '>=v10.22.0' } + dependencies: + '@commitlint/types': 11.0.0 + chalk: 4.1.1 + dev: true + + /@commitlint/is-ignored/11.0.0: + resolution: { integrity: sha512-VLHOUBN+sOlkYC4tGuzE41yNPO2w09sQnOpfS+pSPnBFkNUUHawEuA44PLHtDvQgVuYrMAmSWFQpWabMoP5/Xg== } + engines: { node: '>=v10.22.0' } + dependencies: + '@commitlint/types': 11.0.0 + semver: 7.3.2 + dev: true + + /@commitlint/lint/11.0.0: + resolution: { integrity: sha512-Q8IIqGIHfwKr8ecVZyYh6NtXFmKw4YSEWEr2GJTB/fTZXgaOGtGFZDWOesCZllQ63f1s/oWJYtVv5RAEuwN8BQ== } + engines: { node: '>=v10.22.0' } + dependencies: + '@commitlint/is-ignored': 11.0.0 + '@commitlint/parse': 11.0.0 + '@commitlint/rules': 11.0.0 + '@commitlint/types': 11.0.0 + dev: true + + /@commitlint/load/11.0.0: + resolution: { integrity: sha512-t5ZBrtgvgCwPfxmG811FCp39/o3SJ7L+SNsxFL92OR4WQxPcu6c8taD0CG2lzOHGuRyuMxZ7ps3EbngT2WpiCg== } + engines: { node: '>=v10.22.0' } + dependencies: + '@commitlint/execute-rule': 11.0.0 + '@commitlint/resolve-extends': 11.0.0 + '@commitlint/types': 11.0.0 + chalk: 4.1.0 + cosmiconfig: 7.0.0 + lodash: 4.17.21 + resolve-from: 5.0.0 + dev: true + + /@commitlint/message/11.0.0: + resolution: { integrity: sha512-01ObK/18JL7PEIE3dBRtoMmU6S3ecPYDTQWWhcO+ErA3Ai0KDYqV5VWWEijdcVafNpdeUNrEMigRkxXHQLbyJA== } + engines: { node: '>=v10.22.0' } + dev: true + + /@commitlint/parse/11.0.0: + resolution: { integrity: sha512-DekKQAIYWAXIcyAZ6/PDBJylWJ1BROTfDIzr9PMVxZRxBPc1gW2TG8fLgjZfBP5mc0cuthPkVi91KQQKGri/7A== } + engines: { node: '>=v10.22.0' } + dependencies: + conventional-changelog-angular: 5.0.12 + conventional-commits-parser: 3.2.1 + dev: true + + /@commitlint/read/11.0.0: + resolution: { integrity: sha512-37V0V91GSv0aDzMzJioKpCoZw6l0shk7+tRG8RkW1GfZzUIytdg3XqJmM+IaIYpaop0m6BbZtfq+idzUwJnw7g== } + engines: { node: '>=v10.22.0' } + dependencies: + '@commitlint/top-level': 11.0.0 + fs-extra: 9.1.0 + git-raw-commits: 2.0.10 + dev: true + + /@commitlint/resolve-extends/11.0.0: + resolution: { integrity: sha512-WinU6Uv6L7HDGLqn/To13KM1CWvZ09VHZqryqxXa1OY+EvJkfU734CwnOEeNlSCK7FVLrB4kmodLJtL1dkEpXw== } + engines: { node: '>=v10.22.0' } + dependencies: + import-fresh: 3.3.0 + lodash: 4.17.21 + resolve-from: 5.0.0 + resolve-global: 1.0.0 + dev: true + + /@commitlint/rules/11.0.0: + resolution: { integrity: sha512-2hD9y9Ep5ZfoNxDDPkQadd2jJeocrwC4vJ98I0g8pNYn/W8hS9+/FuNpolREHN8PhmexXbkjrwyQrWbuC0DVaA== } + engines: { node: '>=v10.22.0' } + dependencies: + '@commitlint/ensure': 11.0.0 + '@commitlint/message': 11.0.0 + '@commitlint/to-lines': 11.0.0 + '@commitlint/types': 11.0.0 + dev: true + + /@commitlint/to-lines/11.0.0: + resolution: { integrity: sha512-TIDTB0Y23jlCNubDROUVokbJk6860idYB5cZkLWcRS9tlb6YSoeLn1NLafPlrhhkkkZzTYnlKYzCVrBNVes1iw== } + engines: { node: '>=v10.22.0' } + dev: true + + /@commitlint/top-level/11.0.0: + resolution: { integrity: sha512-O0nFU8o+Ws+py5pfMQIuyxOtfR/kwtr5ybqTvR+C2lUPer2x6lnQU+OnfD7hPM+A+COIUZWx10mYQvkR3MmtAA== } + engines: { node: '>=v10.22.0' } + dependencies: + find-up: 5.0.0 + dev: true + + /@commitlint/types/11.0.0: + resolution: { integrity: sha512-VoNqai1vR5anRF5Tuh/+SWDFk7xi7oMwHrHrbm1BprYXjB2RJsWLhUrStMssDxEl5lW/z3EUdg8RvH/IUBccSQ== } + engines: { node: '>=v10.22.0' } + dev: true + + /@hapi/address/2.1.4: + resolution: { integrity: sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== } + deprecated: Moved to 'npm install @sideway/address' + dev: true + + /@hapi/bourne/1.3.2: + resolution: { integrity: sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== } + deprecated: This version has been deprecated and is no longer supported or maintained + dev: true + + /@hapi/hoek/8.5.1: + resolution: { integrity: sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== } + deprecated: This version has been deprecated and is no longer supported or maintained + dev: true + + /@hapi/joi/15.1.1: + resolution: { integrity: sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== } + deprecated: Switch to 'npm install joi' + dependencies: + '@hapi/address': 2.1.4 + '@hapi/bourne': 1.3.2 + '@hapi/hoek': 8.5.1 + '@hapi/topo': 3.1.6 + dev: true + + /@hapi/topo/3.1.6: + resolution: { integrity: sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== } + deprecated: This version has been deprecated and is no longer supported or maintained + dependencies: + '@hapi/hoek': 8.5.1 + dev: true + + /@interactjs/actions/1.10.11: + resolution: { integrity: sha512-P39zeefr4hkmKx+5nZ+mrH1s0l2YJ3gIHrthXmE81n6MlMa42m0WtHcTms4C5JTTNBP2EEDY+KGgGxSnmJKvUw== } + peerDependencies: + '@interactjs/core': 1.10.11 + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/actions/1.10.11_tyfgkkxvwgresm6izb7s2h25im: + resolution: { integrity: sha512-P39zeefr4hkmKx+5nZ+mrH1s0l2YJ3gIHrthXmE81n6MlMa42m0WtHcTms4C5JTTNBP2EEDY+KGgGxSnmJKvUw== } + peerDependencies: + '@interactjs/core': 1.10.11 + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/core': 1.10.11_@interactjs+utils@1.10.11 + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/auto-scroll/1.10.11_@interactjs+utils@1.10.11: + resolution: { integrity: sha512-feHNjhi0EMNLV2nQcEgjYPz2mI54aeSW2RiaoNtFLyBvtXKp0b4DmluwDv6DvuXmUpDwD5g/Hk1gGM2rgl7iqQ== } + peerDependencies: + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/auto-start/1.10.11: + resolution: { integrity: sha512-cIg5CcalCPtC6AiGq6j/0hKUtL2MweEpvw12FuB19sz2Q9Dye0J4GliHKhOYvtumNinnvfVAZ4FZMqZEuX7YZA== } + peerDependencies: + '@interactjs/core': 1.10.11 + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/auto-start/1.10.11_tyfgkkxvwgresm6izb7s2h25im: + resolution: { integrity: sha512-cIg5CcalCPtC6AiGq6j/0hKUtL2MweEpvw12FuB19sz2Q9Dye0J4GliHKhOYvtumNinnvfVAZ4FZMqZEuX7YZA== } + peerDependencies: + '@interactjs/core': 1.10.11 + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/core': 1.10.11_@interactjs+utils@1.10.11 + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/core/1.10.11_@interactjs+utils@1.10.11: + resolution: { integrity: sha512-aJ50ccVeszpJt7wPH7Yfqm7f1aG1SA94qd90P0NaESh5/QUXn4CESO6igobo4DFHQ5z+1Rfdl8aphP4JxlH4gw== } + peerDependencies: + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/utils': 1.10.11 + dev: false + + /@interactjs/dev-tools/1.10.11_6cfv4lzikfbo7rn4cjwgiucbha: + resolution: { integrity: sha512-BP2FNfMbF7zLuOAUGMkDhCo1e1B0fnqyb9ih/Y8yAIJuoLrZxP/9htbsS1vZOIVZ4UgtrId4cYOwfcAZBMQtmw== } + peerDependencies: + '@interactjs/modifiers': 1.10.11 + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/modifiers': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/dev-tools/1.10.11_ofnz4wzy252z7f2d24rqws4nkq: + resolution: { integrity: sha512-BP2FNfMbF7zLuOAUGMkDhCo1e1B0fnqyb9ih/Y8yAIJuoLrZxP/9htbsS1vZOIVZ4UgtrId4cYOwfcAZBMQtmw== } + peerDependencies: + '@interactjs/modifiers': 1.10.11 + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/modifiers': 1.10.11_tyfgkkxvwgresm6izb7s2h25im + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/inertia/1.10.11_63jtl7zryfaftewohpjjqaczxm: + resolution: { integrity: sha512-h+sknCzRqBSyHy4ctPNsq56mxkAMMdwHWD6en7rDEw899gdGKYaXVDVdv1jMfiwNRw0eRFBNoCiol8r3a/a3Jw== } + peerDependencies: + '@interactjs/core': 1.10.11 + '@interactjs/modifiers': 1.10.11 + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/core': 1.10.11_@interactjs+utils@1.10.11 + '@interactjs/modifiers': 1.10.11_tyfgkkxvwgresm6izb7s2h25im + '@interactjs/offset': 1.10.11_tyfgkkxvwgresm6izb7s2h25im + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/interact/1.10.11: + resolution: { integrity: sha512-0iZJ9l547JuBA/lKxK4ARGYVmMqRSsAdA8gXL1zWe51qEIQq8PyWmMipoi8JbDaL7exC2THKwkXu5uq5ndT+iA== } + dependencies: + '@interactjs/core': 1.10.11_@interactjs+utils@1.10.11 + '@interactjs/types': 1.10.11 + '@interactjs/utils': 1.10.11 + dev: false + + /@interactjs/interactjs/1.10.11: + resolution: { integrity: sha512-cGOxf6rp3Y8/sk88LhIT0XDn4gCiCzAnUG5Kkj9SAqiUO6BK/9+Wbp1IBkNaPgl/8uG8gNHh/dXBrlBBNcqJAg== } + dependencies: + '@interactjs/actions': 1.10.11_tyfgkkxvwgresm6izb7s2h25im + '@interactjs/auto-scroll': 1.10.11_@interactjs+utils@1.10.11 + '@interactjs/auto-start': 1.10.11_tyfgkkxvwgresm6izb7s2h25im + '@interactjs/core': 1.10.11_@interactjs+utils@1.10.11 + '@interactjs/dev-tools': 1.10.11_ofnz4wzy252z7f2d24rqws4nkq + '@interactjs/inertia': 1.10.11_63jtl7zryfaftewohpjjqaczxm + '@interactjs/interact': 1.10.11 + '@interactjs/modifiers': 1.10.11_tyfgkkxvwgresm6izb7s2h25im + '@interactjs/offset': 1.10.11_tyfgkkxvwgresm6izb7s2h25im + '@interactjs/pointer-events': 1.10.11_tyfgkkxvwgresm6izb7s2h25im + '@interactjs/reflow': 1.10.11_tyfgkkxvwgresm6izb7s2h25im + '@interactjs/utils': 1.10.11 + dev: false + + /@interactjs/modifiers/1.10.11: + resolution: { integrity: sha512-ltqX1RSqeAIikixlQBlyEUdclT5+rbfIGi3sIdLLYaIZQnltYkWqL9MHKx/w5b+hV+Mc0p5MLUFWJbTdkSCZ9g== } + peerDependencies: + '@interactjs/core': 1.10.11 + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/snappers': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/modifiers/1.10.11_tyfgkkxvwgresm6izb7s2h25im: + resolution: { integrity: sha512-ltqX1RSqeAIikixlQBlyEUdclT5+rbfIGi3sIdLLYaIZQnltYkWqL9MHKx/w5b+hV+Mc0p5MLUFWJbTdkSCZ9g== } + peerDependencies: + '@interactjs/core': 1.10.11 + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/core': 1.10.11_@interactjs+utils@1.10.11 + '@interactjs/snappers': 1.10.11_@interactjs+utils@1.10.11 + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/offset/1.10.11_tyfgkkxvwgresm6izb7s2h25im: + resolution: { integrity: sha512-mBT7eIfy5ivofECiv+VwtEwwIMLV54fT9ujSMWJPduxdSYIHepUWgEf/3zjJknFh6jQc7pqz9dtjvVvyzRCLlQ== } + peerDependencies: + '@interactjs/core': 1.10.11 + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/core': 1.10.11_@interactjs+utils@1.10.11 + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/pointer-events/1.10.11_tyfgkkxvwgresm6izb7s2h25im: + resolution: { integrity: sha512-yBT8JJVMZ+MgBay5l1WAHnL8ch/mZsRfaFahti+QFYeQyRloDtsWmEMDSYI/Onyy9+hS3gN/ge77ArGciZZ0Ow== } + peerDependencies: + '@interactjs/core': 1.10.11 + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/core': 1.10.11_@interactjs+utils@1.10.11 + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/reflow/1.10.11_tyfgkkxvwgresm6izb7s2h25im: + resolution: { integrity: sha512-NSCtcCkjImOYSbxzzv2kFqR9t49J8KlhEr9UoePc7GyLbNXsiv3WQ3n0ehZd7CgZXQDiVXnP2UnmIOv5Zd4HQg== } + peerDependencies: + '@interactjs/core': 1.10.11 + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/core': 1.10.11_@interactjs+utils@1.10.11 + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/snappers/1.10.11: + resolution: { integrity: sha512-yYtOMUZ7aFUZ1IYheq9Tj5hZ4J1r5dnaXhLF44WsI/awQ5L0DjZf07GPWof0B+7rZHEVudxyQNbPfFmb+1K94Q== } + peerDependencies: + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/snappers/1.10.11_@interactjs+utils@1.10.11: + resolution: { integrity: sha512-yYtOMUZ7aFUZ1IYheq9Tj5hZ4J1r5dnaXhLF44WsI/awQ5L0DjZf07GPWof0B+7rZHEVudxyQNbPfFmb+1K94Q== } + peerDependencies: + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/types/1.10.11: + resolution: { integrity: sha512-YRsVFWjL8Gkkvlx3qnjeaxW4fnibSJ9791g8BA7Pv5ANByI64WmtR1vU7A2rXcrOn8XvyCEfY0ss1s8NhZP+MA== } + dev: false + + /@interactjs/utils/1.10.11: + resolution: { integrity: sha512-410ZoxKF+r1roeSelL+WHXfdryUMg5iykC1XwQ3l6XqNw43IMACzyvTH6k6Pwxj7w7x42nce0Qdn1GQ3Y8xyCw== } + dev: false + + /@intervolga/optimize-cssnano-plugin/1.0.6_webpack@4.46.0: + resolution: { integrity: sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA== } + peerDependencies: + webpack: ^4.0.0 + dependencies: + cssnano: 4.1.10 + cssnano-preset-default: 4.0.7 + postcss: 7.0.35 + webpack: 4.46.0 + dev: true + + /@mrmlnc/readdir-enhanced/2.2.1: + resolution: { integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== } + engines: { node: '>=4' } + dependencies: + call-me-maybe: 1.0.1 + glob-to-regexp: 0.3.0 + dev: true + + /@nodelib/fs.stat/1.1.3: + resolution: { integrity: sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== } + engines: { node: '>= 6' } + dev: true + + /@rollup/pluginutils/4.1.0_rollup@2.48.0: + resolution: { integrity: sha512-TrBhfJkFxA+ER+ew2U2/fHbebhLT/l/2pRk0hfj9KusXUuRXd2v0R58AfaZK9VXDQ4TogOSEmICVrQAA3zFnHQ== } + engines: { node: '>= 8.0.0' } + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 2.48.0 + dev: true + + /@samverschueren/stream-to-observable/0.3.1_rxjs@6.6.6: + resolution: { integrity: sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ== } + engines: { node: '>=6' } + peerDependencies: + rxjs: '*' + zen-observable: '*' + peerDependenciesMeta: + rxjs: + optional: true + zen-observable: + optional: true + dependencies: + any-observable: 0.3.0_rxjs@6.6.6 + rxjs: 6.6.6 + transitivePeerDependencies: + - zenObservable + dev: true + + /@soda/friendly-errors-webpack-plugin/1.8.0_webpack@4.46.0: + resolution: { integrity: sha512-RLotfx6k1+nfLacwNCenj7VnTMPxVwYKoGOcffMFoJDKM8tXzBiCN0hMHFJNnoAojduYAsxuiMm0EOMixgiRow== } + engines: { node: '>=8.0.0' } + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + chalk: 2.4.2 + error-stack-parser: 2.0.6 + string-width: 2.1.1 + strip-ansi: 5.2.0 + webpack: 4.46.0 + dev: true + + /@soda/get-current-script/1.0.2: + resolution: { integrity: sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w== } + dev: true + + /@trysound/sax/0.1.1: + resolution: { integrity: sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow== } + engines: { node: '>=10.13.0' } + dev: true + + /@types/d3-timer/2.0.1: + resolution: { integrity: sha512-TF8aoF5cHcLO7W7403blM7L1T+6NF3XMyN3fxyUolq2uOcFeicG/khQg/dGxiCJWoAcmYulYN7LYSRKO54IXaA== } + dev: false + + /@types/eslint-visitor-keys/1.0.0: + resolution: { integrity: sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== } + dev: true + + /@types/glob/7.1.3: + resolution: { integrity: sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== } + dependencies: + '@types/minimatch': 3.0.3 + '@types/node': 14.14.35 + dev: true + + /@types/js-cookie/2.2.6: + resolution: { integrity: sha512-+oY0FDTO2GYKEV0YPvSshGq9t7YozVkgvXLty7zogQNuCxBhT9/3INX9Q7H1aRZ4SUDRXAKlJuA4EA5nTt7SNw== } + dev: true + + /@types/json-schema/7.0.11: + resolution: { integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== } + + /@types/json5/0.0.29: + resolution: { integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== } + dev: true + + /@types/lodash-es/4.17.4: + resolution: { integrity: sha512-BBz79DCJbD2CVYZH67MBeHZRX++HF+5p8Mo5MzjZi64Wac39S3diedJYHZtScbRVf4DjZyN6LzA0SB0zy+HSSQ== } + dependencies: + '@types/lodash': 4.14.170 + dev: true + + /@types/lodash/4.14.170: + resolution: { integrity: sha512-bpcvu/MKHHeYX+qeEN8GE7DIravODWdACVA1ctevD8CN24RhPZIKMn9ntfAsrvLfSX3cR5RrBKAbYm9bGs0A+Q== } + dev: true + + /@types/minimatch/3.0.3: + resolution: { integrity: sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== } + dev: true + + /@types/minimist/1.2.1: + resolution: { integrity: sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg== } + dev: true + + /@types/node/14.14.35: + resolution: { integrity: sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag== } + dev: true + + /@types/normalize-package-data/2.4.0: + resolution: { integrity: sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== } + dev: true + + /@types/nprogress/0.2.0: + resolution: { integrity: sha512-1cYJrqq9GezNFPsWTZpFut/d4CjpZqA0vhqDUPFWYKF1oIyBz5qnoYMzR+0C/T96t3ebLAC1SSnwrVOm5/j74A== } + dev: true + + /@types/parse-json/4.0.0: + resolution: { integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== } + dev: true + + /@types/q/1.5.4: + resolution: { integrity: sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== } + dev: true + + /@types/qs/6.9.6: + resolution: { integrity: sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA== } + dev: true + + /@types/svgo/2.6.4: + resolution: { integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng== } + dependencies: + '@types/node': 14.14.35 + dev: true + + /@types/webpack-env/1.16.0: + resolution: { integrity: sha512-Fx+NpfOO0CpeYX2g9bkvX8O5qh9wrU1sOF4g8sft4Mu7z+qfe387YlyY8w8daDyDsKY5vUxM0yxkAYnbkRbZEw== } + dev: true + + /@typescript-eslint/eslint-plugin/2.34.0_jxzg2k43owi4xwrqkezmr5eq6m: + resolution: { integrity: sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ== } + engines: { node: ^8.10.0 || ^10.13.0 || >=11.10.1 } + peerDependencies: + '@typescript-eslint/parser': ^2.0.0 + eslint: ^5.0.0 || ^6.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/experimental-utils': 2.34.0_hejjmlztrvmnsks456jx6n7lwi + '@typescript-eslint/parser': 2.34.0_hejjmlztrvmnsks456jx6n7lwi + eslint: 6.8.0 + functional-red-black-tree: 1.0.1 + regexpp: 3.1.0 + tsutils: 3.21.0_typescript@3.9.9 + typescript: 3.9.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/experimental-utils/2.34.0_hejjmlztrvmnsks456jx6n7lwi: + resolution: { integrity: sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==, tarball: http://10.69.17.33:9081/repository/bocloud-npm/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz } + engines: { node: ^8.10.0 || ^10.13.0 || >=11.10.1 } + peerDependencies: + eslint: '*' + dependencies: + '@types/json-schema': 7.0.11 + '@typescript-eslint/typescript-estree': 2.34.0_typescript@3.9.9 + eslint: 6.8.0 + eslint-scope: 5.1.1 + eslint-utils: 2.1.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/parser/2.34.0_hejjmlztrvmnsks456jx6n7lwi: + resolution: { integrity: sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA== } + engines: { node: ^8.10.0 || ^10.13.0 || >=11.10.1 } + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@types/eslint-visitor-keys': 1.0.0 + '@typescript-eslint/experimental-utils': 2.34.0_hejjmlztrvmnsks456jx6n7lwi + '@typescript-eslint/typescript-estree': 2.34.0_typescript@3.9.9 + eslint: 6.8.0 + eslint-visitor-keys: 1.3.0 + typescript: 3.9.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree/2.34.0_typescript@3.9.9: + resolution: { integrity: sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== } + engines: { node: ^8.10.0 || ^10.13.0 || >=11.10.1 } + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + debug: 4.3.2 + eslint-visitor-keys: 1.3.0 + glob: 7.1.6 + is-glob: 4.0.1 + lodash: 4.17.21 + semver: 7.3.4 + tsutils: 3.21.0_typescript@3.9.9 + typescript: 3.9.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@vue/babel-helper-vue-jsx-merge-props/1.2.1: + resolution: { integrity: sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA== } + dev: true + + /@vue/babel-helper-vue-transform-on/1.0.2: + resolution: { integrity: sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA== } + dev: true + + /@vue/babel-plugin-jsx/1.0.3_@babel+core@7.14.3: + resolution: { integrity: sha512-+52ZQFmrM0yh61dQlgwQlfHZXmYbswbQEL25SOSt9QkjegAdfIGu87oELw0l8H6cuJYazZCiNjPR9eU++ZIbxg== } + dependencies: + '@babel/helper-module-imports': 7.13.12 + '@babel/plugin-syntax-jsx': 7.12.13_@babel+core@7.14.3 + '@babel/template': 7.12.13 + '@babel/traverse': 7.14.2 + '@babel/types': 7.14.2 + '@vue/babel-helper-vue-transform-on': 1.0.2 + camelcase: 6.2.0 + html-tags: 3.1.0 + svg-tags: 1.0.0 + transitivePeerDependencies: + - '@babel/core' + - supports-color + dev: true + + /@vue/babel-plugin-transform-vue-jsx/1.2.1_@babel+core@7.14.3: + resolution: { integrity: sha512-HJuqwACYehQwh1fNT8f4kyzqlNMpBuUK4rSiSES5D4QsYncv5fxFsLyrxFPG2ksO7t5WP+Vgix6tt6yKClwPzA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-module-imports': 7.13.12 + '@babel/plugin-syntax-jsx': 7.12.13_@babel+core@7.14.3 + '@vue/babel-helper-vue-jsx-merge-props': 1.2.1 + html-tags: 2.0.0 + lodash.kebabcase: 4.1.1 + svg-tags: 1.0.0 + dev: true + + /@vue/babel-preset-app/4.5.12_core-js@3.9.1+vue@2.6.14: + resolution: { integrity: sha512-8q67ORQ9O0Ms0nlqsXTVhaBefRBaLrzPxOewAZhdcO7onHwcO5/wRdWtHhZgfpCZlhY7NogkU16z3WnorSSkEA== } + peerDependencies: + core-js: ^3 + vue: ^2 || ^3.0.0-0 + peerDependenciesMeta: + core-js: + optional: true + vue: + optional: true + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-compilation-targets': 7.13.16_@babel+core@7.14.3 + '@babel/helper-module-imports': 7.13.12 + '@babel/plugin-proposal-class-properties': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-proposal-decorators': 7.13.5_@babel+core@7.14.3 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.14.3 + '@babel/plugin-syntax-jsx': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-runtime': 7.13.10_@babel+core@7.14.3 + '@babel/preset-env': 7.13.10_@babel+core@7.14.3 + '@babel/runtime': 7.13.10 + '@vue/babel-plugin-jsx': 1.0.3_@babel+core@7.14.3 + '@vue/babel-preset-jsx': 1.2.4_@babel+core@7.14.3 + babel-plugin-dynamic-import-node: 2.3.3 + core-js: 3.9.1 + core-js-compat: 3.9.1 + semver: 6.3.0 + vue: 2.6.14 + transitivePeerDependencies: + - supports-color + dev: true + + /@vue/babel-preset-jsx/1.2.4_@babel+core@7.14.3: + resolution: { integrity: sha512-oRVnmN2a77bYDJzeGSt92AuHXbkIxbf/XXSE3klINnh9AXBmVS1DGa1f0d+dDYpLfsAKElMnqKTQfKn7obcL4w== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@vue/babel-helper-vue-jsx-merge-props': 1.2.1 + '@vue/babel-plugin-transform-vue-jsx': 1.2.1_@babel+core@7.14.3 + '@vue/babel-sugar-composition-api-inject-h': 1.2.1_@babel+core@7.14.3 + '@vue/babel-sugar-composition-api-render-instance': 1.2.4_@babel+core@7.14.3 + '@vue/babel-sugar-functional-vue': 1.2.2_@babel+core@7.14.3 + '@vue/babel-sugar-inject-h': 1.2.2_@babel+core@7.14.3 + '@vue/babel-sugar-v-model': 1.2.3_@babel+core@7.14.3 + '@vue/babel-sugar-v-on': 1.2.3_@babel+core@7.14.3 + dev: true + + /@vue/babel-sugar-composition-api-inject-h/1.2.1_@babel+core@7.14.3: + resolution: { integrity: sha512-4B3L5Z2G+7s+9Bwbf+zPIifkFNcKth7fQwekVbnOA3cr3Pq71q71goWr97sk4/yyzH8phfe5ODVzEjX7HU7ItQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/plugin-syntax-jsx': 7.12.13_@babel+core@7.14.3 + dev: true + + /@vue/babel-sugar-composition-api-render-instance/1.2.4_@babel+core@7.14.3: + resolution: { integrity: sha512-joha4PZznQMsxQYXtR3MnTgCASC9u3zt9KfBxIeuI5g2gscpTsSKRDzWQt4aqNIpx6cv8On7/m6zmmovlNsG7Q== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/plugin-syntax-jsx': 7.12.13_@babel+core@7.14.3 + dev: true + + /@vue/babel-sugar-functional-vue/1.2.2_@babel+core@7.14.3: + resolution: { integrity: sha512-JvbgGn1bjCLByIAU1VOoepHQ1vFsroSA/QkzdiSs657V79q6OwEWLCQtQnEXD/rLTA8rRit4rMOhFpbjRFm82w== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/plugin-syntax-jsx': 7.12.13_@babel+core@7.14.3 + dev: true + + /@vue/babel-sugar-inject-h/1.2.2_@babel+core@7.14.3: + resolution: { integrity: sha512-y8vTo00oRkzQTgufeotjCLPAvlhnpSkcHFEp60+LJUwygGcd5Chrpn5480AQp/thrxVm8m2ifAk0LyFel9oCnw== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/plugin-syntax-jsx': 7.12.13_@babel+core@7.14.3 + dev: true + + /@vue/babel-sugar-v-model/1.2.3_@babel+core@7.14.3: + resolution: { integrity: sha512-A2jxx87mySr/ulAsSSyYE8un6SIH0NWHiLaCWpodPCVOlQVODCaSpiR4+IMsmBr73haG+oeCuSvMOM+ttWUqRQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/plugin-syntax-jsx': 7.12.13_@babel+core@7.14.3 + '@vue/babel-helper-vue-jsx-merge-props': 1.2.1 + '@vue/babel-plugin-transform-vue-jsx': 1.2.1_@babel+core@7.14.3 + camelcase: 5.3.1 + html-tags: 2.0.0 + svg-tags: 1.0.0 + dev: true + + /@vue/babel-sugar-v-on/1.2.3_@babel+core@7.14.3: + resolution: { integrity: sha512-kt12VJdz/37D3N3eglBywV8GStKNUhNrsxChXIV+o0MwVXORYuhDTHJRKPgLJRb/EY3vM2aRFQdxJBp9CLikjw== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/plugin-syntax-jsx': 7.12.13_@babel+core@7.14.3 + '@vue/babel-plugin-transform-vue-jsx': 1.2.1_@babel+core@7.14.3 + camelcase: 5.3.1 + dev: true + + /@vue/cli-overlay/4.5.12: + resolution: { integrity: sha512-dCN0RzVpA8fp+MfjuVBROgM483MPObAb/je+APE/JhpCJyPQORYQEvNpmaorpN+9Cp6mrESVSzhh0qD4SFrlzg== } + dev: true + + /@vue/cli-plugin-babel/4.4.6_fjy6firl6adfsotiausbjoc7ky: + resolution: { integrity: sha512-9cX9mN+4DIbcqw3rV6UBOA0t5zikIkrBLQloUzsOBOu5Xb7/UoD7inInFj7bnyHUflr5LqbdWJ+etCQcWAIIXA== } + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@vue/babel-preset-app': 4.5.12_core-js@3.9.1+vue@2.6.14 + '@vue/cli-service': 4.4.6_tudvkij53ve6zhr6ltadnssrsa + '@vue/cli-shared-utils': 4.5.12 + babel-loader: 8.2.2_cbkhbx5fgxs7mbneuvhppwa6q4 + cache-loader: 4.1.0_webpack@4.46.0 + thread-loader: 2.1.3_webpack@4.46.0 + webpack: 4.46.0 + transitivePeerDependencies: + - core-js + - supports-color + - vue + - webpack-cli + - webpack-command + dev: true + + /@vue/cli-plugin-eslint/4.4.6_gckqw5ssyvaoozj2spmaxoeooq: + resolution: { integrity: sha512-3a9rVpOKPQsDgAlRkhmBMHboGobivG/47BbQGE66Z8YJxrgF/AWikP3Jy67SmxtszRkyiWfw4aJFRV9r3MzffQ== } + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + eslint: '>= 1.6.0' + dependencies: + '@vue/cli-service': 4.4.6_tudvkij53ve6zhr6ltadnssrsa + '@vue/cli-shared-utils': 4.5.12 + eslint: 6.8.0 + eslint-loader: 2.2.1_pfvmeq6opgydpezktw7j2dwffi + globby: 9.2.0 + inquirer: 7.3.3 + webpack: 4.46.0 + yorkie: 2.0.0 + transitivePeerDependencies: + - supports-color + - webpack-cli + - webpack-command + dev: true + + /@vue/cli-plugin-router/4.4.6_@vue+cli-service@4.4.6: + resolution: { integrity: sha512-TkLdn0ZYo3zgn78Rk8doPlR+4UkGjGW2R1eGEaZEkue/mw2VhUWtTk9cKLZaYrw0eY8Ro/j+OV6mD+scyrairg== } + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + dependencies: + '@vue/cli-service': 4.4.6_tudvkij53ve6zhr6ltadnssrsa + '@vue/cli-shared-utils': 4.5.12 + dev: true + + /@vue/cli-plugin-router/4.5.12_@vue+cli-service@4.4.6: + resolution: { integrity: sha512-DYNz5AA3W7Ewt3aaiOLGdYFt4MX4w/HTEtep+kPzP9S9tAknzyoIJXkaYzhwu8ArpEYwhWgtuCcDZ8hR6++DbA== } + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + dependencies: + '@vue/cli-service': 4.4.6_tudvkij53ve6zhr6ltadnssrsa + '@vue/cli-shared-utils': 4.5.12 + dev: true + + /@vue/cli-plugin-typescript/4.4.6_bf2tvjwiro5jzldu5wac7oah3u: + resolution: { integrity: sha512-FIIx9yqm19M62+2X4QwTrnlePdghsKnFbBPCHJawx3ULx30B11fL7X0uwmcq+kEAAHwAGBI6QyU7dgwPDRUCOw== } + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + typescript: '>=2' + vue-template-compiler: ^2.0.0 + peerDependenciesMeta: + vue-template-compiler: + optional: true + dependencies: + '@babel/core': 7.14.3 + '@types/webpack-env': 1.16.0 + '@vue/cli-service': 4.4.6_tudvkij53ve6zhr6ltadnssrsa + '@vue/cli-shared-utils': 4.5.12 + babel-loader: 8.2.2_cbkhbx5fgxs7mbneuvhppwa6q4 + cache-loader: 4.1.0_webpack@4.46.0 + fork-ts-checker-webpack-plugin: 3.1.1_zdvo64nkvyqkp3vqjwxlvouqsa + globby: 9.2.0 + thread-loader: 2.1.3_webpack@4.46.0 + ts-loader: 6.2.2_typescript@3.9.9 + tslint: 5.20.1_typescript@3.9.9 + typescript: 3.9.9 + vue-template-compiler: 2.6.14 + webpack: 4.46.0 + yorkie: 2.0.0 + transitivePeerDependencies: + - eslint + - supports-color + - webpack-cli + - webpack-command + dev: true + + /@vue/cli-plugin-vuex/4.4.6_@vue+cli-service@4.4.6: + resolution: { integrity: sha512-Ho0YzUivn8BLPqFoFypntR8CMTEXYYHVr0GdnZW99XL+DbGw75f+tJfnrV9UFHDTfvZt7uewKiXDMlrzQ0l3Ug== } + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + dependencies: + '@vue/cli-service': 4.4.6_tudvkij53ve6zhr6ltadnssrsa + dev: true + + /@vue/cli-plugin-vuex/4.5.12_@vue+cli-service@4.4.6: + resolution: { integrity: sha512-STgbvNv/3iHAKArc18b/qjN7RX1FTrfxPeHH26GOr/A8lJes7+CSluZZ8E5R7Zr/vL0zOqOkUVDAjFXVf4zWQA== } + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + dependencies: + '@vue/cli-service': 4.4.6_tudvkij53ve6zhr6ltadnssrsa + dev: true + + /@vue/cli-service/4.4.6_tudvkij53ve6zhr6ltadnssrsa: + resolution: { integrity: sha512-k5OFGh2NnvRymCyq9DfBiNJvECUuun3pl5KMm3557IZyA5E5csv+RHoSW3dX8HHe0zXq18g52VswP1llvR9POw== } + engines: { node: '>=8' } + hasBin: true + peerDependencies: + less-loader: '*' + pug-plain-loader: '*' + raw-loader: '*' + sass-loader: '*' + stylus-loader: '*' + vue-template-compiler: ^2.0.0 + peerDependenciesMeta: + less-loader: + optional: true + pug-plain-loader: + optional: true + raw-loader: + optional: true + sass-loader: + optional: true + stylus-loader: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@intervolga/optimize-cssnano-plugin': 1.0.6_webpack@4.46.0 + '@soda/friendly-errors-webpack-plugin': 1.8.0_webpack@4.46.0 + '@soda/get-current-script': 1.0.2 + '@vue/cli-overlay': 4.5.12 + '@vue/cli-plugin-router': 4.5.12_@vue+cli-service@4.4.6 + '@vue/cli-plugin-vuex': 4.5.12_@vue+cli-service@4.4.6 + '@vue/cli-shared-utils': 4.5.12 + '@vue/component-compiler-utils': 3.2.0 + '@vue/preload-webpack-plugin': 1.1.2_kawgdd6iu7jv34d6smtvgjfc2a + '@vue/web-component-wrapper': 1.3.0 + acorn: 7.4.1 + acorn-walk: 7.2.0 + address: 1.1.2 + autoprefixer: 9.8.6 + browserslist: 4.16.3 + cache-loader: 4.1.0_webpack@4.46.0 + case-sensitive-paths-webpack-plugin: 2.4.0 + cli-highlight: 2.1.10 + clipboardy: 2.3.0 + cliui: 6.0.0 + copy-webpack-plugin: 5.1.2_webpack@4.46.0 + css-loader: 3.6.0_webpack@4.46.0 + cssnano: 4.1.10 + debug: 4.3.2 + default-gateway: 5.0.5 + dotenv: 8.2.0 + dotenv-expand: 5.1.0 + file-loader: 4.3.0_webpack@4.46.0 + fs-extra: 7.0.1 + globby: 9.2.0 + hash-sum: 2.0.0 + html-webpack-plugin: 3.2.0_webpack@4.46.0 + launch-editor-middleware: 2.2.1 + lodash.defaultsdeep: 4.6.1 + lodash.mapvalues: 4.6.0 + lodash.transform: 4.6.0 + mini-css-extract-plugin: 0.9.0_webpack@4.46.0 + minimist: 1.2.5 + pnp-webpack-plugin: 1.6.4_typescript@3.9.9 + portfinder: 1.0.28 + postcss-loader: 3.0.0 + sass-loader: 8.0.2_sass@1.32.8 + ssri: 7.1.0 + terser-webpack-plugin: 2.3.8_webpack@4.46.0 + thread-loader: 2.1.3_webpack@4.46.0 + url-loader: 2.3.0_ke5umg2s3o4akbat3qvdol7cby + vue-loader: 15.9.6_m6jvttnwtqqy6l4pi5vsxiehsy + vue-style-loader: 4.1.3 + vue-template-compiler: 2.6.14 + webpack: 4.46.0 + webpack-bundle-analyzer: 3.9.0 + webpack-chain: 6.5.1 + webpack-dev-server: 3.11.2_webpack@4.46.0 + webpack-merge: 4.2.2 + transitivePeerDependencies: + - '@vue/compiler-sfc' + - arc-templates + - atpl + - babel-core + - bluebird + - bracket-template + - bufferutil + - coffee-script + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - htmling + - jade + - jazz + - jqtpl + - just + - liquid-node + - liquor + - lodash + - marko + - mote + - mustache + - nunjucks + - plates + - pug + - qejs + - ractive + - razor-tmpl + - react + - react-dom + - slm + - squirrelly + - supports-color + - swig + - swig-templates + - teacup + - templayed + - then-jade + - then-pug + - tinyliquid + - toffee + - twig + - twing + - typescript + - underscore + - utf-8-validate + - vash + - velocityjs + - walrus + - webpack-cli + - webpack-command + - whiskers + dev: true + + /@vue/cli-shared-utils/4.5.12: + resolution: { integrity: sha512-qnIQPJ4XckMoqYh9fJ0Y91QKMIb4Hiibrm9+k4E15QHpk5RaokuOpf10SsOr2NLPCXSWsHOLo3hduZSwHPGY/Q== } + dependencies: + '@hapi/joi': 15.1.1 + chalk: 2.4.2 + execa: 1.0.0 + launch-editor: 2.2.1 + lru-cache: 5.1.1 + node-ipc: 9.1.4 + open: 6.4.0 + ora: 3.4.0 + read-pkg: 5.2.0 + request: 2.88.2 + semver: 6.3.0 + strip-ansi: 6.0.0 + dev: true + + /@vue/component-compiler-utils/3.2.0: + resolution: { integrity: sha512-lejBLa7xAMsfiZfNp7Kv51zOzifnb29FwdnMLa96z26kXErPFioSf9BMcePVIQ6/Gc6/mC0UrPpxAWIHyae0vw== } + dependencies: + consolidate: 0.15.1 + hash-sum: 1.0.2 + lru-cache: 4.1.5 + merge-source-map: 1.1.0 + postcss: 7.0.35 + postcss-selector-parser: 6.0.4 + source-map: 0.6.1 + vue-template-es2015-compiler: 1.9.1 + optionalDependencies: + prettier: 1.19.1 + transitivePeerDependencies: + - arc-templates + - atpl + - babel-core + - bracket-template + - coffee-script + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - htmling + - jade + - jazz + - jqtpl + - just + - liquid-node + - liquor + - lodash + - marko + - mote + - mustache + - nunjucks + - plates + - pug + - qejs + - ractive + - razor-tmpl + - react + - react-dom + - slm + - squirrelly + - swig + - swig-templates + - teacup + - templayed + - then-jade + - then-pug + - tinyliquid + - toffee + - twig + - twing + - underscore + - vash + - velocityjs + - walrus + - whiskers + dev: true + + /@vue/composition-api/1.7.2_vue@2.6.14: + resolution: { integrity: sha512-M8jm9J/laYrYT02665HkZ5l2fWTK4dcVg3BsDHm/pfz+MjDYwX+9FUaZyGwEyXEDonQYRCo0H7aLgdklcIELjw== } + peerDependencies: + vue: '>= 2.5 < 2.7' + dependencies: + vue: 2.6.14 + dev: false + + /@vue/eslint-config-standard/5.1.2_bhlcpwu3qqosv22ubdlbjeklmy: + resolution: { integrity: sha512-FTz0k77dIrj9r3xskt9jsZyL/YprrLiPRf4m3k7G6dZ5PKuD6OPqYrHR9eduUmHDFpTlRgFpTVQrq+1el9k3QQ== } + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + eslint: '>=6.2.2' + eslint-plugin-import: '>= 2.18.0' + eslint-plugin-node: '>= 9.1.0' + eslint-plugin-promise: '>= 4.2.1' + eslint-plugin-standard: '>= 4.0.0' + eslint-plugin-vue: '>= 6.1.2' + peerDependenciesMeta: + '@vue/cli-service': + optional: true + dependencies: + '@vue/cli-service': 4.4.6_tudvkij53ve6zhr6ltadnssrsa + eslint: 6.8.0 + eslint-config-standard: 14.1.1_qyawu2d3xgr7ylgq3z5dwgxn44 + eslint-import-resolver-node: 0.3.4 + eslint-import-resolver-webpack: 0.12.2_5r6sr333lc7gkp2zt7fcegg6vi + eslint-plugin-import: 2.22.1_tbglwmj7t2rhd43mvxmptakoay + eslint-plugin-node: 11.1.0_eslint@6.8.0 + eslint-plugin-promise: 4.3.1 + eslint-plugin-standard: 4.1.0_eslint@6.8.0 + eslint-plugin-vue: 6.2.2_eslint@6.8.0 + transitivePeerDependencies: + - supports-color + - webpack + dev: true + + /@vue/eslint-config-typescript/5.1.0_mfq4e2qj55uhlotzljeesvv4bm: + resolution: { integrity: sha512-wFAdPMWegKZOdbQBEWV4/KbOKuX/6Q5db3304kiWNBK+6P7+CoMrsbaKzJFjuAZF7fQR2fJtZT9ciGWVVT//vw== } + peerDependencies: + '@typescript-eslint/eslint-plugin': ^2.7.0 + '@typescript-eslint/parser': ^2.7.0 + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + eslint-plugin-vue: ^5.2.3 || ^6.0.0 || ^7.0.0-0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 2.34.0_jxzg2k43owi4xwrqkezmr5eq6m + '@typescript-eslint/parser': 2.34.0_hejjmlztrvmnsks456jx6n7lwi + eslint: 6.8.0 + eslint-plugin-vue: 6.2.2_eslint@6.8.0 + typescript: 3.9.9 + vue-eslint-parser: 7.6.0_eslint@6.8.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@vue/preload-webpack-plugin/1.1.2_kawgdd6iu7jv34d6smtvgjfc2a: + resolution: { integrity: sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ== } + engines: { node: '>=6.0.0' } + peerDependencies: + html-webpack-plugin: '>=2.26.0' + webpack: '>=4.0.0' + dependencies: + html-webpack-plugin: 3.2.0_webpack@4.46.0 + webpack: 4.46.0 + dev: true + + /@vue/web-component-wrapper/1.3.0: + resolution: { integrity: sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA== } + dev: true + + /@webassemblyjs/ast/1.9.0: + resolution: { integrity: sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== } + dependencies: + '@webassemblyjs/helper-module-context': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/wast-parser': 1.9.0 + dev: true + + /@webassemblyjs/floating-point-hex-parser/1.9.0: + resolution: { integrity: sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== } + dev: true + + /@webassemblyjs/helper-api-error/1.9.0: + resolution: { integrity: sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== } + dev: true + + /@webassemblyjs/helper-buffer/1.9.0: + resolution: { integrity: sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== } + dev: true + + /@webassemblyjs/helper-code-frame/1.9.0: + resolution: { integrity: sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== } + dependencies: + '@webassemblyjs/wast-printer': 1.9.0 + dev: true + + /@webassemblyjs/helper-fsm/1.9.0: + resolution: { integrity: sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== } + dev: true + + /@webassemblyjs/helper-module-context/1.9.0: + resolution: { integrity: sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== } + dependencies: + '@webassemblyjs/ast': 1.9.0 + dev: true + + /@webassemblyjs/helper-wasm-bytecode/1.9.0: + resolution: { integrity: sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== } + dev: true + + /@webassemblyjs/helper-wasm-section/1.9.0: + resolution: { integrity: sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== } + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-buffer': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/wasm-gen': 1.9.0 + dev: true + + /@webassemblyjs/ieee754/1.9.0: + resolution: { integrity: sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== } + dependencies: + '@xtuc/ieee754': 1.2.0 + dev: true + + /@webassemblyjs/leb128/1.9.0: + resolution: { integrity: sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== } + dependencies: + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/utf8/1.9.0: + resolution: { integrity: sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== } + dev: true + + /@webassemblyjs/wasm-edit/1.9.0: + resolution: { integrity: sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== } + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-buffer': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/helper-wasm-section': 1.9.0 + '@webassemblyjs/wasm-gen': 1.9.0 + '@webassemblyjs/wasm-opt': 1.9.0 + '@webassemblyjs/wasm-parser': 1.9.0 + '@webassemblyjs/wast-printer': 1.9.0 + dev: true + + /@webassemblyjs/wasm-gen/1.9.0: + resolution: { integrity: sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== } + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/ieee754': 1.9.0 + '@webassemblyjs/leb128': 1.9.0 + '@webassemblyjs/utf8': 1.9.0 + dev: true + + /@webassemblyjs/wasm-opt/1.9.0: + resolution: { integrity: sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== } + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-buffer': 1.9.0 + '@webassemblyjs/wasm-gen': 1.9.0 + '@webassemblyjs/wasm-parser': 1.9.0 + dev: true + + /@webassemblyjs/wasm-parser/1.9.0: + resolution: { integrity: sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== } + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-api-error': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/ieee754': 1.9.0 + '@webassemblyjs/leb128': 1.9.0 + '@webassemblyjs/utf8': 1.9.0 + dev: true + + /@webassemblyjs/wast-parser/1.9.0: + resolution: { integrity: sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== } + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/floating-point-hex-parser': 1.9.0 + '@webassemblyjs/helper-api-error': 1.9.0 + '@webassemblyjs/helper-code-frame': 1.9.0 + '@webassemblyjs/helper-fsm': 1.9.0 + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/wast-printer/1.9.0: + resolution: { integrity: sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== } + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/wast-parser': 1.9.0 + '@xtuc/long': 4.2.2 + dev: true + + /@xtuc/ieee754/1.2.0: + resolution: { integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== } + dev: true + + /@xtuc/long/4.2.2: + resolution: { integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== } + dev: true + + /JSONStream/1.3.5: + resolution: { integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== } + hasBin: true + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + dev: true + + /accepts/1.3.7: + resolution: { integrity: sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== } + engines: { node: '>= 0.6' } + dependencies: + mime-types: 2.1.29 + negotiator: 0.6.2 + dev: true + + /acorn-jsx/5.3.1_acorn@7.4.1: + resolution: { integrity: sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== } + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 7.4.1 + dev: true + + /acorn-walk/7.2.0: + resolution: { integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== } + engines: { node: '>=0.4.0' } + dev: true + + /acorn/6.4.2: + resolution: { integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== } + engines: { node: '>=0.4.0' } + hasBin: true + dev: true + + /acorn/7.4.1: + resolution: { integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== } + engines: { node: '>=0.4.0' } + hasBin: true + dev: true + + /acorn/8.8.1: + resolution: { integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== } + engines: { node: '>=0.4.0' } + hasBin: true + dev: true + + /address/1.1.2: + resolution: { integrity: sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== } + engines: { node: '>= 0.12.0' } + dev: true + + /aggregate-error/3.1.0: + resolution: { integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== } + engines: { node: '>=8' } + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + + /ajv-errors/1.0.1_ajv@6.12.6: + resolution: { integrity: sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== } + peerDependencies: + ajv: '>=5.0.0' + dependencies: + ajv: 6.12.6 + dev: true + + /ajv-keywords/3.5.2_ajv@6.12.6: + resolution: { integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== } + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + + /ajv/6.12.6: + resolution: { integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== } + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + /alphanum-sort/1.0.2: + resolution: { integrity: sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ== } + dev: true + + /ansi-colors/3.2.4: + resolution: { integrity: sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== } + engines: { node: '>=6' } + dev: true + + /ansi-escapes/3.2.0: + resolution: { integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== } + engines: { node: '>=4' } + dev: true + + /ansi-escapes/4.3.1: + resolution: { integrity: sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== } + engines: { node: '>=8' } + dependencies: + type-fest: 0.11.0 + dev: true + + /ansi-html/0.0.7: + resolution: { integrity: sha512-JoAxEa1DfP9m2xfB/y2r/aKcwXNlltr4+0QSBC4TrLfcxyvepX2Pv0t/xpgGV5bGsDzCYV8SzjWgyCW0T9yYbA== } + engines: { '0': node >= 0.8.0 } + hasBin: true + dev: true + + /ansi-regex/2.1.1: + resolution: { integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== } + engines: { node: '>=0.10.0' } + dev: true + + /ansi-regex/3.0.0: + resolution: { integrity: sha512-wFUFA5bg5dviipbQQ32yOQhl6gcJaJXiHE7dvR8VYPG97+J/GNC5FKGepKdEDUFeXRzDxPF1X/Btc8L+v7oqIQ== } + engines: { node: '>=4' } + dev: true + + /ansi-regex/4.1.0: + resolution: { integrity: sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== } + engines: { node: '>=6' } + dev: true + + /ansi-regex/5.0.0: + resolution: { integrity: sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== } + engines: { node: '>=8' } + dev: true + + /ansi-styles/2.2.1: + resolution: { integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== } + engines: { node: '>=0.10.0' } + dev: true + + /ansi-styles/3.2.1: + resolution: { integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== } + engines: { node: '>=4' } + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles/4.3.0: + resolution: { integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== } + engines: { node: '>=8' } + dependencies: + color-convert: 2.0.1 + dev: true + + /any-observable/0.3.0_rxjs@6.6.6: + resolution: { integrity: sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== } + engines: { node: '>=6' } + peerDependencies: + rxjs: '*' + zenObservable: '*' + peerDependenciesMeta: + rxjs: + optional: true + zenObservable: + optional: true + dependencies: + rxjs: 6.6.6 + dev: true + + /any-promise/1.3.0: + resolution: { integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== } + dev: true + + /anymatch/2.0.0: + resolution: { integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== } + dependencies: + micromatch: 3.1.10 + normalize-path: 2.1.1 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /anymatch/2.0.0_supports-color@6.1.0: + resolution: { integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== } + dependencies: + micromatch: 3.1.10_supports-color@6.1.0 + normalize-path: 2.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /anymatch/3.1.2: + resolution: { integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== } + engines: { node: '>= 8' } + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /aproba/1.2.0: + resolution: { integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== } + dev: true + + /arch/2.2.0: + resolution: { integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== } + dev: true + + /argparse/1.0.10: + resolution: { integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== } + dependencies: + sprintf-js: 1.0.3 + dev: true + + /arr-diff/4.0.0: + resolution: { integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== } + engines: { node: '>=0.10.0' } + dev: true + + /arr-flatten/1.1.0: + resolution: { integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== } + engines: { node: '>=0.10.0' } + dev: true + + /arr-union/3.1.0: + resolution: { integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== } + engines: { node: '>=0.10.0' } + dev: true + + /array-find/1.0.0: + resolution: { integrity: sha512-kO/vVCacW9mnpn3WPWbTVlEnOabK2L7LWi2HViURtCM46y1zb6I8UMjx4LgbiqadTgHnLInUronwn3ampNTJtQ== } + dev: true + + /array-flatten/1.1.1: + resolution: { integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== } + dev: true + + /array-flatten/2.1.2: + resolution: { integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== } + dev: true + + /array-ify/1.0.0: + resolution: { integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== } + dev: true + + /array-includes/3.1.3: + resolution: { integrity: sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + es-abstract: 1.18.0 + get-intrinsic: 1.1.1 + is-string: 1.0.5 + dev: true + + /array-union/1.0.2: + resolution: { integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== } + engines: { node: '>=0.10.0' } + dependencies: + array-uniq: 1.0.3 + dev: true + + /array-uniq/1.0.3: + resolution: { integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== } + engines: { node: '>=0.10.0' } + dev: true + + /array-unique/0.3.2: + resolution: { integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== } + engines: { node: '>=0.10.0' } + dev: true + + /array.prototype.flat/1.2.4: + resolution: { integrity: sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + es-abstract: 1.18.0 + dev: true + + /arrify/1.0.1: + resolution: { integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== } + engines: { node: '>=0.10.0' } + dev: true + + /asn1.js/5.4.1: + resolution: { integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== } + dependencies: + bn.js: 4.12.0 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + safer-buffer: 2.1.2 + dev: true + + /asn1/0.2.4: + resolution: { integrity: sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== } + dependencies: + safer-buffer: 2.1.2 + dev: true + + /assert-plus/1.0.0: + resolution: { integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== } + engines: { node: '>=0.8' } + dev: true + + /assert/1.5.0: + resolution: { integrity: sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== } + dependencies: + object-assign: 4.1.1 + util: 0.10.3 + dev: true + + /assign-symbols/1.0.0: + resolution: { integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== } + engines: { node: '>=0.10.0' } + dev: true + + /astral-regex/1.0.0: + resolution: { integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== } + engines: { node: '>=4' } + dev: true + + /async-each/1.0.3: + resolution: { integrity: sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== } + dev: true + + /async-limiter/1.0.1: + resolution: { integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== } + dev: true + + /async-validator/1.8.5: + resolution: { integrity: sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA== } + dependencies: + babel-runtime: 6.26.0 + dev: false + + /async/0.9.2: + resolution: { integrity: sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw== } + dev: true + + /async/2.4.1: + resolution: { integrity: sha512-l4FGEG4ckq1nC3PSqULdowskm65HBAQfHPG4XH7VLRq0ZKsCWkcfLjVymfLrloqgrvijJrft/mPftclykhTA7w== } + dependencies: + lodash: 4.17.21 + dev: true + + /async/2.6.3: + resolution: { integrity: sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== } + dependencies: + lodash: 4.17.21 + dev: true + + /asynckit/0.4.0: + resolution: { integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== } + dev: true + + /at-least-node/1.0.0: + resolution: { integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== } + engines: { node: '>= 4.0.0' } + dev: true + + /atob/2.1.2: + resolution: { integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== } + engines: { node: '>= 4.5.0' } + hasBin: true + dev: true + + /autoprefixer/9.8.6: + resolution: { integrity: sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== } + hasBin: true + dependencies: + browserslist: 4.16.3 + caniuse-lite: 1.0.30001228 + colorette: 1.2.2 + normalize-range: 0.1.2 + num2fraction: 1.2.2 + postcss: 7.0.35 + postcss-value-parser: 4.1.0 + dev: true + + /aws-sign2/0.7.0: + resolution: { integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== } + dev: true + + /aws4/1.11.0: + resolution: { integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== } + dev: true + + /axios/0.21.1: + resolution: { integrity: sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== } + dependencies: + follow-redirects: 1.13.3 + transitivePeerDependencies: + - debug + dev: false + + /babel-code-frame/6.26.0: + resolution: { integrity: sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g== } + dependencies: + chalk: 1.1.3 + esutils: 2.0.3 + js-tokens: 3.0.2 + dev: true + + /babel-helper-builder-binary-assignment-operator-visitor/6.24.1: + resolution: { integrity: sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q== } + dependencies: + babel-helper-explode-assignable-expression: 6.24.1 + babel-runtime: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-helper-call-delegate/6.24.1: + resolution: { integrity: sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ== } + dependencies: + babel-helper-hoist-variables: 6.24.1 + babel-runtime: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-helper-define-map/6.26.0: + resolution: { integrity: sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA== } + dependencies: + babel-helper-function-name: 6.24.1 + babel-runtime: 6.26.0 + babel-types: 6.26.0 + lodash: 4.17.21 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-helper-explode-assignable-expression/6.24.1: + resolution: { integrity: sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ== } + dependencies: + babel-runtime: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-helper-function-name/6.24.1: + resolution: { integrity: sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q== } + dependencies: + babel-helper-get-function-arity: 6.24.1 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-helper-get-function-arity/6.24.1: + resolution: { integrity: sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng== } + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + dev: true + + /babel-helper-hoist-variables/6.24.1: + resolution: { integrity: sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw== } + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + dev: true + + /babel-helper-optimise-call-expression/6.24.1: + resolution: { integrity: sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA== } + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + dev: true + + /babel-helper-regex/6.26.0: + resolution: { integrity: sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg== } + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + lodash: 4.17.21 + dev: true + + /babel-helper-remap-async-to-generator/6.24.1: + resolution: { integrity: sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg== } + dependencies: + babel-helper-function-name: 6.24.1 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-helper-replace-supers/6.24.1: + resolution: { integrity: sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw== } + dependencies: + babel-helper-optimise-call-expression: 6.24.1 + babel-messages: 6.23.0 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-helper-vue-jsx-merge-props/2.0.3: + resolution: { integrity: sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg== } + dev: false + + /babel-loader/8.2.2_cbkhbx5fgxs7mbneuvhppwa6q4: + resolution: { integrity: sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== } + engines: { node: '>= 8.9' } + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + dependencies: + '@babel/core': 7.14.3 + find-cache-dir: 3.3.1 + loader-utils: 1.4.2 + make-dir: 3.1.0 + schema-utils: 2.7.1 + webpack: 4.46.0 + dev: true + + /babel-messages/6.23.0: + resolution: { integrity: sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w== } + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-check-es2015-constants/6.22.0: + resolution: { integrity: sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA== } + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-dynamic-import-node/2.3.3: + resolution: { integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== } + dependencies: + object.assign: 4.1.2 + dev: true + + /babel-plugin-polyfill-corejs2/0.1.10_@babel+core@7.14.3: + resolution: { integrity: sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.14.0 + '@babel/core': 7.14.3 + '@babel/helper-define-polyfill-provider': 0.1.5_@babel+core@7.14.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-corejs3/0.1.7_@babel+core@7.14.3: + resolution: { integrity: sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-define-polyfill-provider': 0.1.5_@babel+core@7.14.3 + core-js-compat: 3.9.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-regenerator/0.1.6_@babel+core@7.14.3: + resolution: { integrity: sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-define-polyfill-provider': 0.1.5_@babel+core@7.14.3 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-syntax-async-functions/6.13.0: + resolution: { integrity: sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw== } + dev: true + + /babel-plugin-syntax-exponentiation-operator/6.13.0: + resolution: { integrity: sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ== } + dev: true + + /babel-plugin-syntax-trailing-function-commas/6.22.0: + resolution: { integrity: sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ== } + dev: true + + /babel-plugin-transform-async-to-generator/6.24.1: + resolution: { integrity: sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw== } + dependencies: + babel-helper-remap-async-to-generator: 6.24.1 + babel-plugin-syntax-async-functions: 6.13.0 + babel-runtime: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-arrow-functions/6.22.0: + resolution: { integrity: sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg== } + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-block-scoped-functions/6.22.0: + resolution: { integrity: sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A== } + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-block-scoping/6.26.0: + resolution: { integrity: sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw== } + dependencies: + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + lodash: 4.17.21 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-classes/6.24.1: + resolution: { integrity: sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag== } + dependencies: + babel-helper-define-map: 6.26.0 + babel-helper-function-name: 6.24.1 + babel-helper-optimise-call-expression: 6.24.1 + babel-helper-replace-supers: 6.24.1 + babel-messages: 6.23.0 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-computed-properties/6.24.1: + resolution: { integrity: sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw== } + dependencies: + babel-runtime: 6.26.0 + babel-template: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-destructuring/6.23.0: + resolution: { integrity: sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA== } + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-duplicate-keys/6.24.1: + resolution: { integrity: sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug== } + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-for-of/6.23.0: + resolution: { integrity: sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw== } + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-function-name/6.24.1: + resolution: { integrity: sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg== } + dependencies: + babel-helper-function-name: 6.24.1 + babel-runtime: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-literals/6.22.0: + resolution: { integrity: sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ== } + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-modules-amd/6.24.1: + resolution: { integrity: sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA== } + dependencies: + babel-plugin-transform-es2015-modules-commonjs: 6.26.2 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-modules-commonjs/6.26.2: + resolution: { integrity: sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== } + dependencies: + babel-plugin-transform-strict-mode: 6.24.1 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-modules-systemjs/6.24.1: + resolution: { integrity: sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg== } + dependencies: + babel-helper-hoist-variables: 6.24.1 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-modules-umd/6.24.1: + resolution: { integrity: sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw== } + dependencies: + babel-plugin-transform-es2015-modules-amd: 6.24.1 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-object-super/6.24.1: + resolution: { integrity: sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA== } + dependencies: + babel-helper-replace-supers: 6.24.1 + babel-runtime: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-parameters/6.24.1: + resolution: { integrity: sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ== } + dependencies: + babel-helper-call-delegate: 6.24.1 + babel-helper-get-function-arity: 6.24.1 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-shorthand-properties/6.24.1: + resolution: { integrity: sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw== } + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-spread/6.22.0: + resolution: { integrity: sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg== } + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-sticky-regex/6.24.1: + resolution: { integrity: sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ== } + dependencies: + babel-helper-regex: 6.26.0 + babel-runtime: 6.26.0 + babel-types: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-template-literals/6.22.0: + resolution: { integrity: sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg== } + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-typeof-symbol/6.23.0: + resolution: { integrity: sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw== } + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-unicode-regex/6.24.1: + resolution: { integrity: sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ== } + dependencies: + babel-helper-regex: 6.26.0 + babel-runtime: 6.26.0 + regexpu-core: 2.0.0 + dev: true + + /babel-plugin-transform-exponentiation-operator/6.24.1: + resolution: { integrity: sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ== } + dependencies: + babel-helper-builder-binary-assignment-operator-visitor: 6.24.1 + babel-plugin-syntax-exponentiation-operator: 6.13.0 + babel-runtime: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-regenerator/6.26.0: + resolution: { integrity: sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg== } + dependencies: + regenerator-transform: 0.10.1 + dev: true + + /babel-plugin-transform-strict-mode/6.24.1: + resolution: { integrity: sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw== } + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + dev: true + + /babel-preset-env/1.7.0: + resolution: { integrity: sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== } + dependencies: + babel-plugin-check-es2015-constants: 6.22.0 + babel-plugin-syntax-trailing-function-commas: 6.22.0 + babel-plugin-transform-async-to-generator: 6.24.1 + babel-plugin-transform-es2015-arrow-functions: 6.22.0 + babel-plugin-transform-es2015-block-scoped-functions: 6.22.0 + babel-plugin-transform-es2015-block-scoping: 6.26.0 + babel-plugin-transform-es2015-classes: 6.24.1 + babel-plugin-transform-es2015-computed-properties: 6.24.1 + babel-plugin-transform-es2015-destructuring: 6.23.0 + babel-plugin-transform-es2015-duplicate-keys: 6.24.1 + babel-plugin-transform-es2015-for-of: 6.23.0 + babel-plugin-transform-es2015-function-name: 6.24.1 + babel-plugin-transform-es2015-literals: 6.22.0 + babel-plugin-transform-es2015-modules-amd: 6.24.1 + babel-plugin-transform-es2015-modules-commonjs: 6.26.2 + babel-plugin-transform-es2015-modules-systemjs: 6.24.1 + babel-plugin-transform-es2015-modules-umd: 6.24.1 + babel-plugin-transform-es2015-object-super: 6.24.1 + babel-plugin-transform-es2015-parameters: 6.24.1 + babel-plugin-transform-es2015-shorthand-properties: 6.24.1 + babel-plugin-transform-es2015-spread: 6.22.0 + babel-plugin-transform-es2015-sticky-regex: 6.24.1 + babel-plugin-transform-es2015-template-literals: 6.22.0 + babel-plugin-transform-es2015-typeof-symbol: 6.23.0 + babel-plugin-transform-es2015-unicode-regex: 6.24.1 + babel-plugin-transform-exponentiation-operator: 6.24.1 + babel-plugin-transform-regenerator: 6.26.0 + browserslist: 3.2.8 + invariant: 2.2.4 + semver: 5.7.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-runtime/6.26.0: + resolution: { integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== } + dependencies: + core-js: 2.6.12 + regenerator-runtime: 0.11.1 + + /babel-template/6.26.0: + resolution: { integrity: sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg== } + dependencies: + babel-runtime: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + babylon: 6.18.0 + lodash: 4.17.21 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-traverse/6.26.0: + resolution: { integrity: sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA== } + dependencies: + babel-code-frame: 6.26.0 + babel-messages: 6.23.0 + babel-runtime: 6.26.0 + babel-types: 6.26.0 + babylon: 6.18.0 + debug: 2.6.9 + globals: 9.18.0 + invariant: 2.2.4 + lodash: 4.17.21 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-types/6.26.0: + resolution: { integrity: sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g== } + dependencies: + babel-runtime: 6.26.0 + esutils: 2.0.3 + lodash: 4.17.21 + to-fast-properties: 1.0.3 + dev: true + + /babylon/6.18.0: + resolution: { integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== } + hasBin: true + dev: true + + /balanced-match/1.0.0: + resolution: { integrity: sha512-9Y0g0Q8rmSt+H33DfKv7FOc3v+iRI+o1lbzt8jGcIosYW37IIW/2XVYq5NPdmaD5NQ59Nk26Kl/vZbwW9Fr8vg== } + dev: true + + /base/0.11.2: + resolution: { integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== } + engines: { node: '>=0.10.0' } + dependencies: + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.0 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + dev: true + + /base64-js/1.5.1: + resolution: { integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== } + dev: true + + /batch-processor/1.0.0: + resolution: { integrity: sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA== } + dev: false + + /batch/0.6.1: + resolution: { integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== } + dev: true + + /bcrypt-pbkdf/1.0.2: + resolution: { integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== } + dependencies: + tweetnacl: 0.14.5 + dev: true + + /bfj/6.1.2: + resolution: { integrity: sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw== } + engines: { node: '>= 6.0.0' } + dependencies: + bluebird: 3.7.2 + check-types: 8.0.3 + hoopy: 0.1.4 + tryer: 1.0.1 + dev: true + + /big.js/3.2.0: + resolution: { integrity: sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== } + dev: true + + /big.js/5.2.2: + resolution: { integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== } + + /binary-extensions/1.13.1: + resolution: { integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== } + engines: { node: '>=0.10.0' } + dev: true + + /binary-extensions/2.2.0: + resolution: { integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== } + engines: { node: '>=8' } + dev: true + + /bindings/1.5.0: + resolution: { integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== } + requiresBuild: true + dependencies: + file-uri-to-path: 1.0.0 + dev: true + optional: true + + /bl/4.1.0: + resolution: { integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== } + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + + /bluebird/3.7.2: + resolution: { integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== } + dev: true + + /bn.js/4.12.0: + resolution: { integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== } + dev: true + + /bn.js/5.2.0: + resolution: { integrity: sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== } + dev: true + + /body-parser/1.19.0: + resolution: { integrity: sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== } + engines: { node: '>= 0.8' } + dependencies: + bytes: 3.1.0 + content-type: 1.0.4 + debug: 2.6.9 + depd: 1.1.2 + http-errors: 1.7.2 + iconv-lite: 0.4.24 + on-finished: 2.3.0 + qs: 6.7.0 + raw-body: 2.4.0 + type-is: 1.6.18 + transitivePeerDependencies: + - supports-color + dev: true + + /body-parser/1.19.0_supports-color@6.1.0: + resolution: { integrity: sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== } + engines: { node: '>= 0.8' } + dependencies: + bytes: 3.1.0 + content-type: 1.0.4 + debug: 2.6.9_supports-color@6.1.0 + depd: 1.1.2 + http-errors: 1.7.2 + iconv-lite: 0.4.24 + on-finished: 2.3.0 + qs: 6.7.0 + raw-body: 2.4.0 + type-is: 1.6.18 + transitivePeerDependencies: + - supports-color + dev: true + + /bonjour/3.5.0: + resolution: { integrity: sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg== } + dependencies: + array-flatten: 2.1.2 + deep-equal: 1.1.1 + dns-equal: 1.0.0 + dns-txt: 2.0.2 + multicast-dns: 6.2.3 + multicast-dns-service-types: 1.1.0 + dev: true + + /boolbase/1.0.0: + resolution: { integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== } + dev: true + + /brace-expansion/1.1.11: + resolution: { integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== } + dependencies: + balanced-match: 1.0.0 + concat-map: 0.0.1 + dev: true + + /braces/2.3.2: + resolution: { integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== } + engines: { node: '>=0.10.0' } + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.3 + snapdragon: 0.8.2 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /braces/2.3.2_supports-color@6.1.0: + resolution: { integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== } + engines: { node: '>=0.10.0' } + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.3 + snapdragon: 0.8.2_supports-color@6.1.0 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /braces/3.0.2: + resolution: { integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== } + engines: { node: '>=8' } + dependencies: + fill-range: 7.0.1 + dev: true + + /brorand/1.1.0: + resolution: { integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== } + dev: true + + /browserify-aes/1.2.0: + resolution: { integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== } + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.4 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /browserify-cipher/1.0.1: + resolution: { integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== } + dependencies: + browserify-aes: 1.2.0 + browserify-des: 1.0.2 + evp_bytestokey: 1.0.3 + dev: true + + /browserify-des/1.0.2: + resolution: { integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== } + dependencies: + cipher-base: 1.0.4 + des.js: 1.0.1 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /browserify-rsa/4.1.0: + resolution: { integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== } + dependencies: + bn.js: 5.2.0 + randombytes: 2.1.0 + dev: true + + /browserify-sign/4.2.1: + resolution: { integrity: sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== } + dependencies: + bn.js: 5.2.0 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + create-hmac: 1.1.7 + elliptic: 6.5.4 + inherits: 2.0.4 + parse-asn1: 5.1.6 + readable-stream: 3.6.0 + safe-buffer: 5.2.1 + dev: true + + /browserify-zlib/0.2.0: + resolution: { integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== } + dependencies: + pako: 1.0.11 + dev: true + + /browserslist/3.2.8: + resolution: { integrity: sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== } + hasBin: true + dependencies: + caniuse-lite: 1.0.30001228 + electron-to-chromium: 1.3.734 + dev: true + + /browserslist/4.16.3: + resolution: { integrity: sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + hasBin: true + dependencies: + caniuse-lite: 1.0.30001228 + colorette: 1.2.2 + electron-to-chromium: 1.3.734 + escalade: 3.1.1 + node-releases: 1.1.71 + dev: true + + /buffer-from/1.1.1: + resolution: { integrity: sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== } + dev: true + + /buffer-indexof/1.1.1: + resolution: { integrity: sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== } + dev: true + + /buffer-json/2.0.0: + resolution: { integrity: sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw== } + dev: true + + /buffer-xor/1.0.3: + resolution: { integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== } + dev: true + + /buffer/4.9.2: + resolution: { integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== } + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + isarray: 1.0.0 + dev: true + + /buffer/5.7.1: + resolution: { integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== } + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + + /builtin-modules/1.1.1: + resolution: { integrity: sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ== } + engines: { node: '>=0.10.0' } + dev: true + + /builtin-status-codes/3.0.0: + resolution: { integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== } + dev: true + + /bytes/3.0.0: + resolution: { integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== } + engines: { node: '>= 0.8' } + dev: true + + /bytes/3.1.0: + resolution: { integrity: sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== } + engines: { node: '>= 0.8' } + dev: true + + /cacache/12.0.4: + resolution: { integrity: sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== } + dependencies: + bluebird: 3.7.2 + chownr: 1.1.4 + figgy-pudding: 3.5.2 + glob: 7.1.6 + graceful-fs: 4.2.6 + infer-owner: 1.0.4 + lru-cache: 5.1.1 + mississippi: 3.0.0 + mkdirp: 0.5.5 + move-concurrently: 1.0.1 + promise-inflight: 1.0.1 + rimraf: 2.7.1 + ssri: 6.0.1 + unique-filename: 1.1.1 + y18n: 4.0.1 + dev: true + + /cacache/13.0.1: + resolution: { integrity: sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== } + engines: { node: '>= 8' } + dependencies: + chownr: 1.1.4 + figgy-pudding: 3.5.2 + fs-minipass: 2.1.0 + glob: 7.1.6 + graceful-fs: 4.2.6 + infer-owner: 1.0.4 + lru-cache: 5.1.1 + minipass: 3.1.3 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + mkdirp: 0.5.5 + move-concurrently: 1.0.1 + p-map: 3.0.0 + promise-inflight: 1.0.1 + rimraf: 2.7.1 + ssri: 7.1.0 + unique-filename: 1.1.1 + transitivePeerDependencies: + - bluebird + dev: true + + /cache-base/1.0.1: + resolution: { integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== } + engines: { node: '>=0.10.0' } + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.0 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 2.0.1 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 1.0.0 + dev: true + + /cache-loader/4.1.0_webpack@4.46.0: + resolution: { integrity: sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw== } + engines: { node: '>= 8.9.0' } + peerDependencies: + webpack: ^4.0.0 + dependencies: + buffer-json: 2.0.0 + find-cache-dir: 3.3.1 + loader-utils: 1.4.2 + mkdirp: 0.5.5 + neo-async: 2.6.2 + schema-utils: 2.7.1 + webpack: 4.46.0 + dev: true + + /call-bind/1.0.2: + resolution: { integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== } + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.1.1 + + /call-me-maybe/1.0.1: + resolution: { integrity: sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw== } + dev: true + + /caller-callsite/2.0.0: + resolution: { integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== } + engines: { node: '>=4' } + dependencies: + callsites: 2.0.0 + dev: true + + /caller-path/2.0.0: + resolution: { integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== } + engines: { node: '>=4' } + dependencies: + caller-callsite: 2.0.0 + dev: true + + /callsites/2.0.0: + resolution: { integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== } + engines: { node: '>=4' } + dev: true + + /callsites/3.1.0: + resolution: { integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== } + engines: { node: '>=6' } + dev: true + + /camel-case/3.0.0: + resolution: { integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w== } + dependencies: + no-case: 2.3.2 + upper-case: 1.1.3 + dev: true + + /camelcase-keys/6.2.2: + resolution: { integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== } + engines: { node: '>=8' } + dependencies: + camelcase: 5.3.1 + map-obj: 4.2.0 + quick-lru: 4.0.1 + dev: true + + /camelcase/5.3.1: + resolution: { integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== } + engines: { node: '>=6' } + dev: true + + /camelcase/6.2.0: + resolution: { integrity: sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== } + engines: { node: '>=10' } + dev: true + + /caniuse-api/3.0.0: + resolution: { integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== } + dependencies: + browserslist: 4.16.3 + caniuse-lite: 1.0.30001228 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + dev: true + + /caniuse-lite/1.0.30001228: + resolution: { integrity: sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A== } + dev: true + + /case-sensitive-paths-webpack-plugin/2.4.0: + resolution: { integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== } + engines: { node: '>=4' } + dev: true + + /caseless/0.12.0: + resolution: { integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== } + dev: true + + /chalk/1.1.3: + resolution: { integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== } + engines: { node: '>=0.10.0' } + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + dev: true + + /chalk/2.4.2: + resolution: { integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== } + engines: { node: '>=4' } + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk/4.1.0: + resolution: { integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== } + engines: { node: '>=10' } + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk/4.1.1: + resolution: { integrity: sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== } + engines: { node: '>=10' } + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chardet/0.7.0: + resolution: { integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== } + dev: true + + /check-types/8.0.3: + resolution: { integrity: sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ== } + dev: true + + /chokidar/2.1.8: + resolution: { integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== } + deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies + dependencies: + anymatch: 2.0.0 + async-each: 1.0.3 + braces: 2.3.2 + glob-parent: 3.1.0 + inherits: 2.0.4 + is-binary-path: 1.0.1 + is-glob: 4.0.1 + normalize-path: 3.0.0 + path-is-absolute: 1.0.1 + readdirp: 2.2.1 + upath: 1.2.0 + optionalDependencies: + fsevents: 1.2.13 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /chokidar/2.1.8_supports-color@6.1.0: + resolution: { integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== } + deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies + dependencies: + anymatch: 2.0.0_supports-color@6.1.0 + async-each: 1.0.3 + braces: 2.3.2_supports-color@6.1.0 + glob-parent: 3.1.0 + inherits: 2.0.4 + is-binary-path: 1.0.1 + is-glob: 4.0.1 + normalize-path: 3.0.0 + path-is-absolute: 1.0.1 + readdirp: 2.2.1_supports-color@6.1.0 + upath: 1.2.0 + optionalDependencies: + fsevents: 1.2.13 + transitivePeerDependencies: + - supports-color + dev: true + + /chokidar/3.5.3: + resolution: { integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== } + engines: { node: '>= 8.10.0' } + requiresBuild: true + 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 + dev: true + + /chownr/1.1.4: + resolution: { integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== } + dev: true + + /chrome-trace-event/1.0.2: + resolution: { integrity: sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== } + engines: { node: '>=6.0' } + dependencies: + tslib: 1.14.1 + dev: true + + /ci-info/1.6.0: + resolution: { integrity: sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== } + dev: true + + /ci-info/2.0.0: + resolution: { integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== } + dev: true + + /cipher-base/1.0.4: + resolution: { integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== } + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /class-utils/0.3.6: + resolution: { integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== } + engines: { node: '>=0.10.0' } + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + dev: true + + /clean-css/4.2.3: + resolution: { integrity: sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== } + engines: { node: '>= 4.0' } + dependencies: + source-map: 0.6.1 + dev: true + + /clean-stack/2.2.0: + resolution: { integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== } + engines: { node: '>=6' } + dev: true + + /cli-cursor/2.1.0: + resolution: { integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== } + engines: { node: '>=4' } + dependencies: + restore-cursor: 2.0.0 + dev: true + + /cli-cursor/3.1.0: + resolution: { integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== } + engines: { node: '>=8' } + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-highlight/2.1.10: + resolution: { integrity: sha512-CcPFD3JwdQ2oSzy+AMG6j3LRTkNjM82kzcSKzoVw6cLanDCJNlsLjeqVTOTfOfucnWv5F0rmBemVf1m9JiIasw== } + engines: { node: '>=8.0.0', npm: '>=5.0.0' } + hasBin: true + dependencies: + chalk: 4.1.1 + highlight.js: 10.7.1 + mz: 2.7.0 + parse5: 5.1.1 + parse5-htmlparser2-tree-adapter: 6.0.1 + yargs: 16.2.0 + dev: true + + /cli-spinners/2.6.0: + resolution: { integrity: sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q== } + engines: { node: '>=6' } + dev: true + + /cli-truncate/0.2.1: + resolution: { integrity: sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg== } + engines: { node: '>=0.10.0' } + dependencies: + slice-ansi: 0.0.4 + string-width: 1.0.2 + dev: true + + /cli-width/3.0.0: + resolution: { integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== } + engines: { node: '>= 10' } + dev: true + + /clipboard/2.0.8: + resolution: { integrity: sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ== } + dependencies: + good-listener: 1.2.2 + select: 1.1.2 + tiny-emitter: 2.1.0 + dev: false + + /clipboardy/2.3.0: + resolution: { integrity: sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ== } + engines: { node: '>=8' } + dependencies: + arch: 2.2.0 + execa: 1.0.0 + is-wsl: 2.2.0 + dev: true + + /cliui/5.0.0: + resolution: { integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== } + dependencies: + string-width: 3.1.0 + strip-ansi: 5.2.0 + wrap-ansi: 5.1.0 + dev: true + + /cliui/6.0.0: + resolution: { integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== } + dependencies: + string-width: 4.2.2 + strip-ansi: 6.0.0 + wrap-ansi: 6.2.0 + dev: true + + /cliui/7.0.4: + resolution: { integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== } + dependencies: + string-width: 4.2.2 + strip-ansi: 6.0.0 + wrap-ansi: 7.0.0 + dev: true + + /clone-deep/4.0.1: + resolution: { integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== } + engines: { node: '>=6' } + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + dev: true + + /clone/1.0.4: + resolution: { integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== } + engines: { node: '>=0.8' } + dev: true + + /clone/2.1.2: + resolution: { integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== } + engines: { node: '>=0.8' } + dev: true + + /cmp-echarts/2.0.0-5.6-release_w6byxhhjt3kc4nreagfk5h2rbm: + resolution: { integrity: sha512-xq2EuFiOQWTIWO9RVqVrfiruveZC0aaQOcAhhXjV6KJj9Ja9NihBnrBEsPe54r+Ah35pXKT5jnVtnaz8V2kNoA== } + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^2.6.11 + dependencies: + '@vue/composition-api': 1.7.2_vue@2.6.14 + core-js: 3.9.1 + echarts: 5.3.1 + echarts-liquidfill: 3.1.0_echarts@5.3.1 + element-ui: 2.15.1_vue@2.6.14 + lodash-es: 4.17.21 + vue: 2.6.14 + vue-router: 3.5.1_vue@2.6.14 + dev: false + + /cmp-element/1.0.0-5.6-release_w6byxhhjt3kc4nreagfk5h2rbm: + resolution: { integrity: sha512-zVv228zaO5n5iI3FOSysJnnEur2sJ2GaHfPhoXY8vWohPyj+u/Y6qBUfbR5PsNpwo3Dm8naFt1rApT8WD7BRBA== } + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^2.6.11 + dependencies: + '@vue/composition-api': 1.7.2_vue@2.6.14 + codemirror: 5.65.9 + core-js: 3.9.1 + element-ui: 2.15.1_vue@2.6.14 + lodash-es: 4.17.21 + vue: 2.6.14 + vue-router: 3.5.1_vue@2.6.14 + vuedraggable: 2.24.3 + dev: false + + /cmp-socket/1.0.0: + resolution: { integrity: sha512-2TdIGicSanZbxEwENDg77ZmvJhTGvyCUqdbfzcwgXjoLIj0JoAOGgoVfvQTVITo6eiHLmbd3mtHN42cYa0MT0g== } + dev: false + + /coa/2.0.2: + resolution: { integrity: sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== } + engines: { node: '>= 4.0' } + dependencies: + '@types/q': 1.5.4 + chalk: 2.4.2 + q: 1.5.1 + dev: true + + /code-point-at/1.1.0: + resolution: { integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== } + engines: { node: '>=0.10.0' } + dev: true + + /codemirror/5.65.9: + resolution: { integrity: sha512-19Jox5sAKpusTDgqgKB5dawPpQcY+ipQK7xoEI+MVucEF9qqFaXpeqY1KaoyGBso/wHQoDa4HMMxMjdsS3Zzzw== } + dev: false + + /collection-visit/1.0.0: + resolution: { integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== } + engines: { node: '>=0.10.0' } + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 + dev: true + + /color-convert/1.9.3: + resolution: { integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== } + dependencies: + color-name: 1.1.3 + + /color-convert/2.0.1: + resolution: { integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== } + engines: { node: '>=7.0.0' } + dependencies: + color-name: 1.1.4 + dev: true + + /color-name/1.1.3: + resolution: { integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== } + + /color-name/1.1.4: + resolution: { integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== } + + /color-string/1.5.5: + resolution: { integrity: sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg== } + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + + /color/3.1.3: + resolution: { integrity: sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== } + dependencies: + color-convert: 1.9.3 + color-string: 1.5.5 + + /colorette/1.2.2: + resolution: { integrity: sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== } + dev: true + + /combined-stream/1.0.8: + resolution: { integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== } + engines: { node: '>= 0.8' } + dependencies: + delayed-stream: 1.0.0 + dev: true + + /commander/2.17.1: + resolution: { integrity: sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== } + dev: true + + /commander/2.19.0: + resolution: { integrity: sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== } + dev: true + + /commander/2.20.3: + resolution: { integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== } + dev: true + + /commander/7.2.0: + resolution: { integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== } + engines: { node: '>= 10' } + dev: true + + /commondir/1.0.1: + resolution: { integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== } + dev: true + + /compare-func/2.0.0: + resolution: { integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== } + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + dev: true + + /component-emitter/1.3.0: + resolution: { integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== } + dev: true + + /compress-webpack-plugin/1.0.6: + resolution: { integrity: sha512-BEnN7bzKUGHK2pnGr7mo56Tw6rldaJr6CVTR30oL9FHcjdgu//cSTkWwYAT/p+18qF/Dtujtvzs5uVyL5sllsw== } + engines: { node: '>= 4.3 < 5.0.0 || >= 5.10' } + dependencies: + async: 2.4.1 + webpack-sources: 1.4.3 + dev: true + + /compressible/2.0.18: + resolution: { integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== } + engines: { node: '>= 0.6' } + dependencies: + mime-db: 1.46.0 + dev: true + + /compression/1.7.4_supports-color@6.1.0: + resolution: { integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== } + engines: { node: '>= 0.8.0' } + dependencies: + accepts: 1.3.7 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9_supports-color@6.1.0 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /concat-map/0.0.1: + resolution: { integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== } + dev: true + + /concat-stream/1.6.2: + resolution: { integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== } + engines: { '0': node >= 0.8 } + dependencies: + buffer-from: 1.1.1 + inherits: 2.0.4 + readable-stream: 2.3.7 + typedarray: 0.0.6 + dev: true + + /connect-history-api-fallback/1.6.0: + resolution: { integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== } + engines: { node: '>=0.8' } + dev: true + + /console-browserify/1.2.0: + resolution: { integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== } + dev: true + + /consolidate/0.15.1: + resolution: { integrity: sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw== } + engines: { node: '>= 0.10.0' } + peerDependencies: + arc-templates: ^0.5.3 + atpl: '>=0.7.6' + babel-core: ^6.26.3 + bracket-template: ^1.1.5 + coffee-script: ^1.12.7 + dot: ^1.1.3 + dust: ^0.3.0 + dustjs-helpers: ^1.7.4 + dustjs-linkedin: ^2.7.5 + eco: ^1.1.0-rc-3 + ect: ^0.5.9 + ejs: ^3.1.5 + haml-coffee: ^1.14.1 + hamlet: ^0.3.3 + hamljs: ^0.6.2 + handlebars: ^4.7.6 + hogan.js: ^3.0.2 + htmling: ^0.0.8 + jade: ^1.11.0 + jazz: ^0.0.18 + jqtpl: ~1.1.0 + just: ^0.1.8 + liquid-node: ^3.0.1 + liquor: ^0.0.5 + lodash: ^4.17.20 + marko: ^3.14.4 + mote: ^0.2.0 + mustache: ^3.0.0 + nunjucks: ^3.2.2 + plates: ~0.4.11 + pug: ^3.0.0 + qejs: ^3.0.5 + ractive: ^1.3.12 + razor-tmpl: ^1.3.1 + react: ^16.13.1 + react-dom: ^16.13.1 + slm: ^2.0.0 + squirrelly: ^5.1.0 + swig: ^1.4.2 + swig-templates: ^2.0.3 + teacup: ^2.0.0 + templayed: '>=0.2.3' + then-jade: '*' + then-pug: '*' + tinyliquid: ^0.2.34 + toffee: ^0.3.6 + twig: ^1.15.2 + twing: ^5.0.2 + underscore: ^1.11.0 + vash: ^0.13.0 + velocityjs: ^2.0.1 + walrus: ^0.10.1 + whiskers: ^0.4.0 + peerDependenciesMeta: + arc-templates: + optional: true + atpl: + optional: true + babel-core: + optional: true + bracket-template: + optional: true + coffee-script: + optional: true + dot: + optional: true + dust: + optional: true + dustjs-helpers: + optional: true + dustjs-linkedin: + optional: true + eco: + optional: true + ect: + optional: true + ejs: + optional: true + haml-coffee: + optional: true + hamlet: + optional: true + hamljs: + optional: true + handlebars: + optional: true + hogan.js: + optional: true + htmling: + optional: true + jade: + optional: true + jazz: + optional: true + jqtpl: + optional: true + just: + optional: true + liquid-node: + optional: true + liquor: + optional: true + lodash: + optional: true + marko: + optional: true + mote: + optional: true + mustache: + optional: true + nunjucks: + optional: true + plates: + optional: true + pug: + optional: true + qejs: + optional: true + ractive: + optional: true + razor-tmpl: + optional: true + react: + optional: true + react-dom: + optional: true + slm: + optional: true + squirrelly: + optional: true + swig: + optional: true + swig-templates: + optional: true + teacup: + optional: true + templayed: + optional: true + then-jade: + optional: true + then-pug: + optional: true + tinyliquid: + optional: true + toffee: + optional: true + twig: + optional: true + twing: + optional: true + underscore: + optional: true + vash: + optional: true + velocityjs: + optional: true + walrus: + optional: true + whiskers: + optional: true + dependencies: + bluebird: 3.7.2 + dev: true + + /consolidate/0.16.0: + resolution: { integrity: sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ== } + engines: { node: '>= 0.10.0' } + peerDependencies: + arc-templates: ^0.5.3 + atpl: '>=0.7.6' + babel-core: ^6.26.3 + bracket-template: ^1.1.5 + coffee-script: ^1.12.7 + dot: ^1.1.3 + dust: ^0.3.0 + dustjs-helpers: ^1.7.4 + dustjs-linkedin: ^2.7.5 + eco: ^1.1.0-rc-3 + ect: ^0.5.9 + ejs: ^3.1.5 + haml-coffee: ^1.14.1 + hamlet: ^0.3.3 + hamljs: ^0.6.2 + handlebars: ^4.7.6 + hogan.js: ^3.0.2 + htmling: ^0.0.8 + jade: ^1.11.0 + jazz: ^0.0.18 + jqtpl: ~1.1.0 + just: ^0.1.8 + liquid-node: ^3.0.1 + liquor: ^0.0.5 + lodash: ^4.17.20 + marko: ^3.14.4 + mote: ^0.2.0 + mustache: ^4.0.1 + nunjucks: ^3.2.2 + plates: ~0.4.11 + pug: ^3.0.0 + qejs: ^3.0.5 + ractive: ^1.3.12 + razor-tmpl: ^1.3.1 + react: ^16.13.1 + react-dom: ^16.13.1 + slm: ^2.0.0 + squirrelly: ^5.1.0 + swig: ^1.4.2 + swig-templates: ^2.0.3 + teacup: ^2.0.0 + templayed: '>=0.2.3' + then-jade: '*' + then-pug: '*' + tinyliquid: ^0.2.34 + toffee: ^0.3.6 + twig: ^1.15.2 + twing: ^5.0.2 + underscore: ^1.11.0 + vash: ^0.13.0 + velocityjs: ^2.0.1 + walrus: ^0.10.1 + whiskers: ^0.4.0 + peerDependenciesMeta: + arc-templates: + optional: true + atpl: + optional: true + babel-core: + optional: true + bracket-template: + optional: true + coffee-script: + optional: true + dot: + optional: true + dust: + optional: true + dustjs-helpers: + optional: true + dustjs-linkedin: + optional: true + eco: + optional: true + ect: + optional: true + ejs: + optional: true + haml-coffee: + optional: true + hamlet: + optional: true + hamljs: + optional: true + handlebars: + optional: true + hogan.js: + optional: true + htmling: + optional: true + jade: + optional: true + jazz: + optional: true + jqtpl: + optional: true + just: + optional: true + liquid-node: + optional: true + liquor: + optional: true + lodash: + optional: true + marko: + optional: true + mote: + optional: true + mustache: + optional: true + nunjucks: + optional: true + plates: + optional: true + pug: + optional: true + qejs: + optional: true + ractive: + optional: true + razor-tmpl: + optional: true + react: + optional: true + react-dom: + optional: true + slm: + optional: true + squirrelly: + optional: true + swig: + optional: true + swig-templates: + optional: true + teacup: + optional: true + templayed: + optional: true + then-jade: + optional: true + then-pug: + optional: true + tinyliquid: + optional: true + toffee: + optional: true + twig: + optional: true + twing: + optional: true + underscore: + optional: true + vash: + optional: true + velocityjs: + optional: true + walrus: + optional: true + whiskers: + optional: true + dependencies: + bluebird: 3.7.2 + dev: true + + /constants-browserify/1.0.0: + resolution: { integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== } + dev: true + + /contains-path/0.1.0: + resolution: { integrity: sha512-OKZnPGeMQy2RPaUIBPFFd71iNf4791H12MCRuVQDnzGRwCYNYmTDy5pdafo2SLAcEMKzTOQnLWG4QdcjeJUMEg== } + engines: { node: '>=0.10.0' } + dev: true + + /content-disposition/0.5.3: + resolution: { integrity: sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== } + engines: { node: '>= 0.6' } + dependencies: + safe-buffer: 5.1.2 + dev: true + + /content-type/1.0.4: + resolution: { integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== } + engines: { node: '>= 0.6' } + dev: true + + /conventional-changelog-angular/5.0.12: + resolution: { integrity: sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw== } + engines: { node: '>=10' } + dependencies: + compare-func: 2.0.0 + q: 1.5.1 + dev: true + + /conventional-changelog-conventionalcommits/4.5.0: + resolution: { integrity: sha512-buge9xDvjjOxJlyxUnar/+6i/aVEVGA7EEh4OafBCXPlLUQPGbRUBhBUveWRxzvR8TEjhKEP4BdepnpG2FSZXw== } + engines: { node: '>=10' } + dependencies: + compare-func: 2.0.0 + lodash: 4.17.21 + q: 1.5.1 + dev: true + + /conventional-commits-parser/3.2.1: + resolution: { integrity: sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA== } + engines: { node: '>=10' } + hasBin: true + dependencies: + JSONStream: 1.3.5 + is-text-path: 1.0.1 + lodash: 4.17.21 + meow: 8.1.2 + split2: 3.2.2 + through2: 4.0.2 + trim-off-newlines: 1.0.1 + dev: true + + /convert-source-map/1.7.0: + resolution: { integrity: sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== } + dependencies: + safe-buffer: 5.1.2 + dev: true + + /cookie-signature/1.0.6: + resolution: { integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== } + dev: true + + /cookie/0.4.0: + resolution: { integrity: sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== } + engines: { node: '>= 0.6' } + dev: true + + /copy-concurrently/1.0.5: + resolution: { integrity: sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== } + dependencies: + aproba: 1.2.0 + fs-write-stream-atomic: 1.0.10 + iferr: 0.1.5 + mkdirp: 0.5.5 + rimraf: 2.7.1 + run-queue: 1.0.3 + dev: true + + /copy-descriptor/0.1.1: + resolution: { integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== } + engines: { node: '>=0.10.0' } + dev: true + + /copy-webpack-plugin/5.1.2_webpack@4.46.0: + resolution: { integrity: sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ== } + engines: { node: '>= 6.9.0' } + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + cacache: 12.0.4 + find-cache-dir: 2.1.0 + glob-parent: 3.1.0 + globby: 7.1.1 + is-glob: 4.0.1 + loader-utils: 1.4.2 + minimatch: 3.0.4 + normalize-path: 3.0.0 + p-limit: 2.3.0 + schema-utils: 1.0.0 + serialize-javascript: 4.0.0 + webpack: 4.46.0 + webpack-log: 2.0.0 + dev: true + + /core-js-compat/3.9.1: + resolution: { integrity: sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA== } + dependencies: + browserslist: 4.16.3 + semver: 7.0.0 + dev: true + + /core-js-pure/3.11.0: + resolution: { integrity: sha512-PxEiQGjzC+5qbvE7ZIs5Zn6BynNeZO9zHhrrWmkRff2SZLq0CE/H5LuZOJHhmOQ8L38+eMzEHAmPYWrUtDfuDQ== } + requiresBuild: true + dev: false + + /core-js/2.6.12: + resolution: { integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== } + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + requiresBuild: true + + /core-js/3.9.1: + resolution: { integrity: sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg== } + requiresBuild: true + + /core-util-is/1.0.2: + resolution: { integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== } + dev: true + + /cors/2.8.5: + resolution: { integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== } + engines: { node: '>= 0.10' } + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + dev: true + + /cosmiconfig/5.2.1: + resolution: { integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== } + engines: { node: '>=4' } + dependencies: + import-fresh: 2.0.0 + is-directory: 0.3.1 + js-yaml: 3.14.1 + parse-json: 4.0.0 + dev: true + + /cosmiconfig/7.0.0: + resolution: { integrity: sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== } + engines: { node: '>=10' } + dependencies: + '@types/parse-json': 4.0.0 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: true + + /create-ecdh/4.0.4: + resolution: { integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== } + dependencies: + bn.js: 4.12.0 + elliptic: 6.5.4 + dev: true + + /create-hash/1.2.0: + resolution: { integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== } + dependencies: + cipher-base: 1.0.4 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + dev: true + + /create-hmac/1.1.7: + resolution: { integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== } + dependencies: + cipher-base: 1.0.4 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + + /cross-env/5.2.1: + resolution: { integrity: sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ== } + engines: { node: '>=4.0' } + hasBin: true + dependencies: + cross-spawn: 6.0.5 + dev: true + + /cross-spawn/5.1.0: + resolution: { integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A== } + dependencies: + lru-cache: 4.1.5 + shebang-command: 1.2.0 + which: 1.3.1 + dev: true + + /cross-spawn/6.0.5: + resolution: { integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== } + engines: { node: '>=4.8' } + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.1 + shebang-command: 1.2.0 + which: 1.3.1 + dev: true + + /cross-spawn/7.0.3: + resolution: { integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== } + engines: { node: '>= 8' } + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /crypto-browserify/3.12.0: + resolution: { integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== } + dependencies: + browserify-cipher: 1.0.1 + browserify-sign: 4.2.1 + create-ecdh: 4.0.4 + create-hash: 1.2.0 + create-hmac: 1.1.7 + diffie-hellman: 5.0.3 + inherits: 2.0.4 + pbkdf2: 3.1.1 + public-encrypt: 4.0.3 + randombytes: 2.1.0 + randomfill: 1.0.4 + dev: true + + /crypto-js/3.3.0: + resolution: { integrity: sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q== } + dev: false + + /css-color-names/0.0.4: + resolution: { integrity: sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q== } + dev: true + + /css-declaration-sorter/4.0.1: + resolution: { integrity: sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== } + engines: { node: '>4' } + dependencies: + postcss: 7.0.35 + timsort: 0.3.0 + dev: true + + /css-loader/3.6.0_webpack@4.46.0: + resolution: { integrity: sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ== } + engines: { node: '>= 8.9.0' } + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + camelcase: 5.3.1 + cssesc: 3.0.0 + icss-utils: 4.1.1 + loader-utils: 1.4.2 + normalize-path: 3.0.0 + postcss: 7.0.35 + postcss-modules-extract-imports: 2.0.0 + postcss-modules-local-by-default: 3.0.3 + postcss-modules-scope: 2.2.0 + postcss-modules-values: 3.0.0 + postcss-value-parser: 4.1.0 + schema-utils: 2.7.1 + semver: 6.3.0 + webpack: 4.46.0 + dev: true + + /css-select-base-adapter/0.1.1: + resolution: { integrity: sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== } + dev: true + + /css-select/2.1.0: + resolution: { integrity: sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== } + dependencies: + boolbase: 1.0.0 + css-what: 3.4.2 + domutils: 1.7.0 + nth-check: 1.0.2 + dev: true + + /css-select/3.1.2: + resolution: { integrity: sha512-qmss1EihSuBNWNNhHjxzxSfJoFBM/lERB/Q4EnsJQQC62R2evJDW481091oAdOr9uh46/0n4nrg0It5cAnj1RA== } + dependencies: + boolbase: 1.0.0 + css-what: 4.0.0 + domhandler: 4.2.0 + domutils: 2.6.0 + nth-check: 2.0.0 + dev: true + + /css-tree/1.0.0-alpha.37: + resolution: { integrity: sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== } + engines: { node: '>=8.0.0' } + dependencies: + mdn-data: 2.0.4 + source-map: 0.6.1 + dev: true + + /css-tree/1.1.2: + resolution: { integrity: sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ== } + engines: { node: '>=8.0.0' } + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + dev: true + + /css-what/3.4.2: + resolution: { integrity: sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== } + engines: { node: '>= 6' } + dev: true + + /css-what/4.0.0: + resolution: { integrity: sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A== } + engines: { node: '>= 6' } + dev: true + + /cssesc/3.0.0: + resolution: { integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== } + engines: { node: '>=4' } + hasBin: true + dev: true + + /cssnano-preset-default/4.0.7: + resolution: { integrity: sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== } + engines: { node: '>=6.9.0' } + dependencies: + css-declaration-sorter: 4.0.1 + cssnano-util-raw-cache: 4.0.1 + postcss: 7.0.35 + postcss-calc: 7.0.5 + postcss-colormin: 4.0.3 + postcss-convert-values: 4.0.1 + postcss-discard-comments: 4.0.2 + postcss-discard-duplicates: 4.0.2 + postcss-discard-empty: 4.0.1 + postcss-discard-overridden: 4.0.1 + postcss-merge-longhand: 4.0.11 + postcss-merge-rules: 4.0.3 + postcss-minify-font-values: 4.0.2 + postcss-minify-gradients: 4.0.2 + postcss-minify-params: 4.0.2 + postcss-minify-selectors: 4.0.2 + postcss-normalize-charset: 4.0.1 + postcss-normalize-display-values: 4.0.2 + postcss-normalize-positions: 4.0.2 + postcss-normalize-repeat-style: 4.0.2 + postcss-normalize-string: 4.0.2 + postcss-normalize-timing-functions: 4.0.2 + postcss-normalize-unicode: 4.0.1 + postcss-normalize-url: 4.0.1 + postcss-normalize-whitespace: 4.0.2 + postcss-ordered-values: 4.1.2 + postcss-reduce-initial: 4.0.3 + postcss-reduce-transforms: 4.0.2 + postcss-svgo: 4.0.2 + postcss-unique-selectors: 4.0.1 + dev: true + + /cssnano-util-get-arguments/4.0.0: + resolution: { integrity: sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw== } + engines: { node: '>=6.9.0' } + dev: true + + /cssnano-util-get-match/4.0.0: + resolution: { integrity: sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw== } + engines: { node: '>=6.9.0' } + dev: true + + /cssnano-util-raw-cache/4.0.1: + resolution: { integrity: sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== } + engines: { node: '>=6.9.0' } + dependencies: + postcss: 7.0.35 + dev: true + + /cssnano-util-same-parent/4.0.1: + resolution: { integrity: sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== } + engines: { node: '>=6.9.0' } + dev: true + + /cssnano/4.1.10: + resolution: { integrity: sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== } + engines: { node: '>=6.9.0' } + dependencies: + cosmiconfig: 5.2.1 + cssnano-preset-default: 4.0.7 + is-resolvable: 1.1.0 + postcss: 7.0.35 + dev: true + + /csso/4.2.0: + resolution: { integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== } + engines: { node: '>=8.0.0' } + dependencies: + css-tree: 1.1.2 + dev: true + + /csstype/3.1.1: + resolution: { integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== } + dev: false + + /cyclist/1.0.1: + resolution: { integrity: sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A== } + dev: true + + /d3-color/1.4.1: + resolution: { integrity: sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q== } + dev: false + + /d3-dispatch/2.0.0: + resolution: { integrity: sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA== } + dev: false + + /d3-ease/1.0.7: + resolution: { integrity: sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ== } + dev: false + + /d3-force/2.1.1: + resolution: { integrity: sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew== } + dependencies: + d3-dispatch: 2.0.0 + d3-quadtree: 2.0.0 + d3-timer: 2.0.0 + dev: false + + /d3-interpolate/1.4.0: + resolution: { integrity: sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA== } + dependencies: + d3-color: 1.4.1 + dev: false + + /d3-quadtree/2.0.0: + resolution: { integrity: sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw== } + dev: false + + /d3-timer/1.0.10: + resolution: { integrity: sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw== } + dev: false + + /d3-timer/2.0.0: + resolution: { integrity: sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA== } + dev: false + + /dagre/0.8.5: + resolution: { integrity: sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw== } + dependencies: + graphlib: 2.1.8 + lodash: 4.17.21 + dev: false + + /dargs/7.0.0: + resolution: { integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== } + engines: { node: '>=8' } + dev: true + + /dashdash/1.14.1: + resolution: { integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== } + engines: { node: '>=0.10' } + dependencies: + assert-plus: 1.0.0 + dev: true + + /date-fns/1.30.1: + resolution: { integrity: sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== } + dev: true + + /dayjs/1.10.4: + resolution: { integrity: sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== } + dev: false + + /de-indent/1.0.2: + resolution: { integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg== } + dev: true + + /debug/2.6.9: + resolution: { integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + + /debug/2.6.9_supports-color@6.1.0: + resolution: { integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + supports-color: 6.1.0 + dev: true + + /debug/3.2.7: + resolution: { integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + + /debug/3.2.7_supports-color@6.1.0: + resolution: { integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + supports-color: 6.1.0 + dev: true + + /debug/4.3.2: + resolution: { integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== } + engines: { node: '>=6.0' } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /debug/4.3.2_supports-color@6.1.0: + resolution: { integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== } + engines: { node: '>=6.0' } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 6.1.0 + dev: true + + /decamelize-keys/1.1.0: + resolution: { integrity: sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg== } + engines: { node: '>=0.10.0' } + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + dev: true + + /decamelize/1.2.0: + resolution: { integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== } + engines: { node: '>=0.10.0' } + dev: true + + /decode-uri-component/0.2.0: + resolution: { integrity: sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== } + engines: { node: '>=0.10' } + dev: true + + /dedent/0.7.0: + resolution: { integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== } + dev: true + + /deep-equal/1.1.1: + resolution: { integrity: sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== } + dependencies: + is-arguments: 1.1.0 + is-date-object: 1.0.2 + is-regex: 1.1.2 + object-is: 1.1.5 + object-keys: 1.1.1 + regexp.prototype.flags: 1.3.1 + dev: true + + /deep-is/0.1.3: + resolution: { integrity: sha512-GtxAN4HvBachZzm4OnWqc45ESpUCMwkYcsjnsPs23FwJbsO+k4t0k9bQCgOmzIlpHO28+WPK/KRbRk0DDHuuDw== } + dev: true + + /deepmerge/1.3.2: + resolution: { integrity: sha512-qjMjTrk+RKv/sp4RPDpV5CnKhxjFI9p+GkLBOls5A8EEElldYWCWA9zceAkmfd0xIo2aU1nxiaLFoiya2sb6Cg== } + engines: { node: '>=0.10.0' } + dev: true + + /deepmerge/1.5.2: + resolution: { integrity: sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ== } + engines: { node: '>=0.10.0' } + + /default-gateway/4.2.0: + resolution: { integrity: sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== } + engines: { node: '>=6' } + dependencies: + execa: 1.0.0 + ip-regex: 2.1.0 + dev: true + + /default-gateway/5.0.5: + resolution: { integrity: sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA== } + engines: { node: ^8.12.0 || >=9.7.0 } + dependencies: + execa: 3.4.0 + dev: true + + /defaults/1.0.3: + resolution: { integrity: sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA== } + dependencies: + clone: 1.0.4 + dev: true + + /define-properties/1.1.3: + resolution: { integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== } + engines: { node: '>= 0.4' } + dependencies: + object-keys: 1.1.1 + dev: true + + /define-property/0.2.5: + resolution: { integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== } + engines: { node: '>=0.10.0' } + dependencies: + is-descriptor: 0.1.6 + dev: true + + /define-property/1.0.0: + resolution: { integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== } + engines: { node: '>=0.10.0' } + dependencies: + is-descriptor: 1.0.2 + dev: true + + /define-property/2.0.2: + resolution: { integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== } + engines: { node: '>=0.10.0' } + dependencies: + is-descriptor: 1.0.2 + isobject: 3.0.1 + dev: true + + /del/3.0.0: + resolution: { integrity: sha512-7yjqSoVSlJzA4t/VUwazuEagGeANEKB3f/aNI//06pfKgwoCb7f6Q1gETN1sZzYaj6chTQ0AhIwDiPdfOjko4A== } + engines: { node: '>=4' } + dependencies: + globby: 6.1.0 + is-path-cwd: 1.0.0 + is-path-in-cwd: 1.0.1 + p-map: 1.2.0 + pify: 3.0.0 + rimraf: 2.7.1 + dev: true + + /del/4.1.1: + resolution: { integrity: sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== } + engines: { node: '>=6' } + dependencies: + '@types/glob': 7.1.3 + globby: 6.1.0 + is-path-cwd: 2.2.0 + is-path-in-cwd: 2.1.0 + p-map: 2.1.0 + pify: 4.0.1 + rimraf: 2.7.1 + dev: true + + /delayed-stream/1.0.0: + resolution: { integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== } + engines: { node: '>=0.4.0' } + dev: true + + /delegate/3.2.0: + resolution: { integrity: sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw== } + dev: false + + /depd/1.1.2: + resolution: { integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== } + engines: { node: '>= 0.6' } + dev: true + + /des.js/1.0.1: + resolution: { integrity: sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== } + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: true + + /destroy/1.0.4: + resolution: { integrity: sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg== } + dev: true + + /detect-browser/5.3.0: + resolution: { integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w== } + dev: false + + /detect-node/2.0.5: + resolution: { integrity: sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw== } + dev: true + + /diff/4.0.2: + resolution: { integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== } + engines: { node: '>=0.3.1' } + dev: true + + /diffie-hellman/5.0.3: + resolution: { integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== } + dependencies: + bn.js: 4.12.0 + miller-rabin: 4.0.1 + randombytes: 2.1.0 + dev: true + + /dir-glob/2.2.2: + resolution: { integrity: sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== } + engines: { node: '>=4' } + dependencies: + path-type: 3.0.0 + dev: true + + /dns-equal/1.0.0: + resolution: { integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== } + dev: true + + /dns-packet/1.3.1: + resolution: { integrity: sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== } + dependencies: + ip: 1.1.5 + safe-buffer: 5.2.1 + dev: true + + /dns-txt/2.0.2: + resolution: { integrity: sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ== } + dependencies: + buffer-indexof: 1.1.1 + dev: true + + /doctrine/1.5.0: + resolution: { integrity: sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg== } + engines: { node: '>=0.10.0' } + dependencies: + esutils: 2.0.3 + isarray: 1.0.0 + dev: true + + /doctrine/3.0.0: + resolution: { integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== } + engines: { node: '>=6.0.0' } + dependencies: + esutils: 2.0.3 + dev: true + + /dom-converter/0.2.0: + resolution: { integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== } + dependencies: + utila: 0.4.0 + dev: true + + /dom-serializer/0.2.2: + resolution: { integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== } + dependencies: + domelementtype: 2.2.0 + entities: 2.2.0 + dev: true + + /dom-serializer/1.3.2: + resolution: { integrity: sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== } + dependencies: + domelementtype: 2.2.0 + domhandler: 4.2.0 + entities: 2.2.0 + dev: true + + /domain-browser/1.2.0: + resolution: { integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== } + engines: { node: '>=0.4', npm: '>=1.2' } + dev: true + + /domelementtype/1.3.1: + resolution: { integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== } + dev: true + + /domelementtype/2.2.0: + resolution: { integrity: sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== } + dev: true + + /domhandler/2.4.2: + resolution: { integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== } + dependencies: + domelementtype: 1.3.1 + dev: true + + /domhandler/4.2.0: + resolution: { integrity: sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA== } + engines: { node: '>= 4' } + dependencies: + domelementtype: 2.2.0 + dev: true + + /domready/1.0.8: + resolution: { integrity: sha512-uIzsOJUNk+AdGE9a6VDeessoMCzF8RrZvJCX/W8QtyfgdR6Uofn/MvRonih3OtCO79b2VDzDOymuiABrQ4z3XA== } + dev: true + + /domutils/1.7.0: + resolution: { integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== } + dependencies: + dom-serializer: 0.2.2 + domelementtype: 1.3.1 + dev: true + + /domutils/2.6.0: + resolution: { integrity: sha512-y0BezHuy4MDYxh6OvolXYsH+1EMGmFbwv5FKW7ovwMG6zTPWqNPq3WF9ayZssFq+UlKdffGLbOEaghNdaOm1WA== } + dependencies: + dom-serializer: 1.3.2 + domelementtype: 2.2.0 + domhandler: 4.2.0 + dev: true + + /dot-prop/5.3.0: + resolution: { integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== } + engines: { node: '>=8' } + dependencies: + is-obj: 2.0.0 + dev: true + + /dotenv-expand/5.1.0: + resolution: { integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== } + dev: true + + /dotenv/8.2.0: + resolution: { integrity: sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== } + engines: { node: '>=8' } + dev: true + + /duplexer/0.1.2: + resolution: { integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== } + dev: true + + /duplexify/3.7.1: + resolution: { integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== } + dependencies: + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 2.3.7 + stream-shift: 1.0.1 + dev: true + + /easy-stack/1.0.1: + resolution: { integrity: sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w== } + engines: { node: '>=6.0.0' } + dev: true + + /ecc-jsbn/0.1.2: + resolution: { integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== } + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + dev: true + + /echarts-liquidfill/3.1.0_echarts@5.3.1: + resolution: { integrity: sha512-5Dlqs/jTsdTUAsd+K5LPLLTgrbbNORUSBQyk8PSy1Mg2zgHDWm83FmvA4s0ooNepCJojFYRITTQ4GU1UUSKYLw== } + peerDependencies: + echarts: ^5.0.1 + dependencies: + echarts: 5.3.1 + dev: false + + /echarts/5.3.1: + resolution: { integrity: sha512-nWdlbgX3OVY0hpqncSvp0gDt1FRSKWn7lsWEH+PHmfCuvE0QmSw17pczQvm8AvawnLEkmf1Cts7YwQJZNC0AEQ== } + dependencies: + tslib: 2.3.0 + zrender: 5.3.1 + dev: false + + /ee-first/1.1.1: + resolution: { integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== } + dev: true + + /ejs/2.7.4: + resolution: { integrity: sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== } + engines: { node: '>=0.10.0' } + requiresBuild: true + dev: true + + /electron-to-chromium/1.3.734: + resolution: { integrity: sha512-iQF2mjPZ6zNNq45kbJ6MYZYCBNdv2JpGiJC/lVx4tGJWi9MNg73KkL9sWGN4X4I/CP2SBLWsT8nPADZZpAHIyw== } + dev: true + + /elegant-spinner/1.0.1: + resolution: { integrity: sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ== } + engines: { node: '>=0.10.0' } + dev: true + + /element-resize-detector/1.2.3: + resolution: { integrity: sha512-+dhNzUgLpq9ol5tyhoG7YLoXL3ssjfFW+0gpszXPwRU6NjGr1fVHMEAF8fVzIiRJq57Nre0RFeIjJwI8Nh2NmQ== } + dependencies: + batch-processor: 1.0.0 + dev: false + + /element-ui/2.13.0_vue@2.6.14: + resolution: { integrity: sha512-KYsHWsBXYbLELS8cdfvgJTOMSUby3UEjvsPV1V1VmgJ/DdkOAS4z3MiOrPxrT9w2Cc5lZ4eVSQiGhYFR5NVChw== } + peerDependencies: + vue: ^2.5.17 + dependencies: + async-validator: 1.8.5 + babel-helper-vue-jsx-merge-props: 2.0.3 + deepmerge: 1.5.2 + normalize-wheel: 1.0.1 + resize-observer-polyfill: 1.5.1 + throttle-debounce: 1.1.0 + vue: 2.6.14 + dev: false + + /element-ui/2.15.1_vue@2.6.14: + resolution: { integrity: sha512-TqlScAKGH97XndSScUDeEHIzL1x7yg7DvQdKPEOUdiDcyIz3y3FJJBlpHYaJT96FOn1xpIcUZb+I2FJeU9EcrQ== } + peerDependencies: + vue: ^2.5.17 + dependencies: + async-validator: 1.8.5 + babel-helper-vue-jsx-merge-props: 2.0.3 + deepmerge: 1.5.2 + normalize-wheel: 1.0.1 + resize-observer-polyfill: 1.5.1 + throttle-debounce: 1.1.0 + vue: 2.6.14 + dev: false + + /elliptic/6.5.4: + resolution: { integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== } + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: true + + /emoji-regex/7.0.3: + resolution: { integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== } + dev: true + + /emoji-regex/8.0.0: + resolution: { integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== } + dev: true + + /emojis-list/2.1.0: + resolution: { integrity: sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng== } + engines: { node: '>= 0.10' } + dev: true + + /emojis-list/3.0.0: + resolution: { integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== } + engines: { node: '>= 4' } + + /encodeurl/1.0.2: + resolution: { integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== } + engines: { node: '>= 0.8' } + dev: true + + /end-of-stream/1.4.4: + resolution: { integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== } + dependencies: + once: 1.4.0 + dev: true + + /enhanced-resolve/0.9.1: + resolution: { integrity: sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw== } + engines: { node: '>=0.6' } + dependencies: + graceful-fs: 4.2.6 + memory-fs: 0.2.0 + tapable: 0.1.10 + dev: true + + /enhanced-resolve/4.5.0: + resolution: { integrity: sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== } + engines: { node: '>=6.9.0' } + dependencies: + graceful-fs: 4.2.6 + memory-fs: 0.5.0 + tapable: 1.1.3 + dev: true + + /entities/1.1.2: + resolution: { integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== } + dev: true + + /entities/2.2.0: + resolution: { integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== } + dev: true + + /errno/0.1.8: + resolution: { integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== } + hasBin: true + dependencies: + prr: 1.0.1 + dev: true + + /error-ex/1.3.2: + resolution: { integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== } + dependencies: + is-arrayish: 0.2.1 + dev: true + + /error-stack-parser/2.0.6: + resolution: { integrity: sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== } + dependencies: + stackframe: 1.2.0 + dev: true + + /es-abstract/1.18.0: + resolution: { integrity: sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + es-to-primitive: 1.2.1 + function-bind: 1.1.1 + get-intrinsic: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.2 + is-callable: 1.2.3 + is-negative-zero: 2.0.1 + is-regex: 1.1.2 + is-string: 1.0.5 + object-inspect: 1.9.0 + object-keys: 1.1.1 + object.assign: 4.1.2 + string.prototype.trimend: 1.0.4 + string.prototype.trimstart: 1.0.4 + unbox-primitive: 1.0.0 + dev: true + + /es-to-primitive/1.2.1: + resolution: { integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== } + engines: { node: '>= 0.4' } + dependencies: + is-callable: 1.2.3 + is-date-object: 1.0.2 + is-symbol: 1.0.3 + dev: true + + /esbuild/0.12.29: + resolution: { integrity: sha512-w/XuoBCSwepyiZtIRsKsetiLDUVGPVw1E/R3VTFSecIy8UR7Cq3SOtwKHJMFoVqqVG36aGkzh4e8BvpO1Fdc7g== } + hasBin: true + requiresBuild: true + dev: true + + /escalade/3.1.1: + resolution: { integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== } + engines: { node: '>=6' } + dev: true + + /escape-html/1.0.3: + resolution: { integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== } + dev: true + + /escape-string-regexp/1.0.5: + resolution: { integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== } + engines: { node: '>=0.8.0' } + dev: true + + /eslint-config-standard/14.1.1_qyawu2d3xgr7ylgq3z5dwgxn44: + resolution: { integrity: sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg== } + peerDependencies: + eslint: '>=6.2.2' + eslint-plugin-import: '>=2.18.0' + eslint-plugin-node: '>=9.1.0' + eslint-plugin-promise: '>=4.2.1' + eslint-plugin-standard: '>=4.0.0' + dependencies: + eslint: 6.8.0 + eslint-plugin-import: 2.22.1_tbglwmj7t2rhd43mvxmptakoay + eslint-plugin-node: 11.1.0_eslint@6.8.0 + eslint-plugin-promise: 4.3.1 + eslint-plugin-standard: 4.1.0_eslint@6.8.0 + dev: true + + /eslint-import-resolver-node/0.3.4: + resolution: { integrity: sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== } + dependencies: + debug: 2.6.9 + resolve: 1.20.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-import-resolver-webpack/0.12.2_5r6sr333lc7gkp2zt7fcegg6vi: + resolution: { integrity: sha512-7Jnm4YAoNNkvqPaZkKdIHsKGmv8/uNnYC5QsXkiSodvX4XEEfH2AKOna98FK52fCDXm3q4HzuX+7pRMKkJ64EQ== } + peerDependencies: + eslint-plugin-import: '>=1.4.0' + webpack: '>=1.11.0' + dependencies: + array-find: 1.0.0 + debug: 2.6.9 + enhanced-resolve: 0.9.1 + eslint-plugin-import: 2.22.1_tbglwmj7t2rhd43mvxmptakoay + find-root: 1.1.0 + has: 1.0.3 + interpret: 1.4.0 + lodash: 4.17.21 + node-libs-browser: 2.2.1 + resolve: 1.20.0 + semver: 5.7.1 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-loader/2.2.1_pfvmeq6opgydpezktw7j2dwffi: + resolution: { integrity: sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg== } + deprecated: This loader has been deprecated. Please use eslint-webpack-plugin + peerDependencies: + eslint: '>=1.6.0 <7.0.0' + webpack: '>=2.0.0 <5.0.0' + dependencies: + eslint: 6.8.0 + loader-fs-cache: 1.0.3 + loader-utils: 1.4.2 + object-assign: 4.1.1 + object-hash: 1.3.1 + rimraf: 2.7.1 + webpack: 4.46.0 + dev: true + + /eslint-module-utils/2.6.0_cch7oag2xabt66xpirhjznaddy: + resolution: { integrity: sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== } + engines: { node: '>=4' } + peerDependencies: + '@typescript-eslint/parser': '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 2.34.0_hejjmlztrvmnsks456jx6n7lwi + debug: 2.6.9 + eslint-import-resolver-node: 0.3.4 + pkg-dir: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-es/3.0.1_eslint@6.8.0: + resolution: { integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== } + engines: { node: '>=8.10.0' } + peerDependencies: + eslint: '>=4.19.1' + dependencies: + eslint: 6.8.0 + eslint-utils: 2.1.0 + regexpp: 3.1.0 + dev: true + + /eslint-plugin-import/2.22.1_tbglwmj7t2rhd43mvxmptakoay: + resolution: { integrity: sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== } + engines: { node: '>=4' } + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 2.34.0_hejjmlztrvmnsks456jx6n7lwi + array-includes: 3.1.3 + array.prototype.flat: 1.2.4 + contains-path: 0.1.0 + debug: 2.6.9 + doctrine: 1.5.0 + eslint: 6.8.0 + eslint-import-resolver-node: 0.3.4 + eslint-module-utils: 2.6.0_cch7oag2xabt66xpirhjznaddy + has: 1.0.3 + minimatch: 3.0.4 + object.values: 1.1.3 + read-pkg-up: 2.0.0 + resolve: 1.20.0 + tsconfig-paths: 3.9.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-node/11.1.0_eslint@6.8.0: + resolution: { integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== } + engines: { node: '>=8.10.0' } + peerDependencies: + eslint: '>=5.16.0' + dependencies: + eslint: 6.8.0 + eslint-plugin-es: 3.0.1_eslint@6.8.0 + eslint-utils: 2.1.0 + ignore: 5.1.8 + minimatch: 3.0.4 + resolve: 1.20.0 + semver: 6.3.0 + dev: true + + /eslint-plugin-promise/4.3.1: + resolution: { integrity: sha512-bY2sGqyptzFBDLh/GMbAxfdJC+b0f23ME63FOE4+Jao0oZ3E1LEwFtWJX/1pGMJLiTtrSSern2CRM/g+dfc0eQ== } + engines: { node: '>=6' } + dev: true + + /eslint-plugin-standard/4.1.0_eslint@6.8.0: + resolution: { integrity: sha512-ZL7+QRixjTR6/528YNGyDotyffm5OQst/sGxKDwGb9Uqs4In5Egi4+jbobhqJoyoCM6/7v/1A5fhQ7ScMtDjaQ== } + peerDependencies: + eslint: '>=5.0.0' + dependencies: + eslint: 6.8.0 + dev: true + + /eslint-plugin-vue/6.2.2_eslint@6.8.0: + resolution: { integrity: sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ== } + engines: { node: '>=8.10' } + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 + dependencies: + eslint: 6.8.0 + natural-compare: 1.4.0 + semver: 5.7.1 + vue-eslint-parser: 7.6.0_eslint@6.8.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-scope/4.0.3: + resolution: { integrity: sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== } + engines: { node: '>=4.0.0' } + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope/5.1.1: + resolution: { integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== } + engines: { node: '>=8.0.0' } + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-utils/1.4.3: + resolution: { integrity: sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== } + engines: { node: '>=6' } + dependencies: + eslint-visitor-keys: 1.3.0 + dev: true + + /eslint-utils/2.1.0: + resolution: { integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== } + engines: { node: '>=6' } + dependencies: + eslint-visitor-keys: 1.3.0 + dev: true + + /eslint-visitor-keys/1.3.0: + resolution: { integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== } + engines: { node: '>=4' } + dev: true + + /eslint/6.8.0: + resolution: { integrity: sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== } + engines: { node: ^8.10.0 || ^10.13.0 || >=11.10.1 } + hasBin: true + dependencies: + '@babel/code-frame': 7.12.13 + ajv: 6.12.6 + chalk: 2.4.2 + cross-spawn: 6.0.5 + debug: 4.3.2 + doctrine: 3.0.0 + eslint-scope: 5.1.1 + eslint-utils: 1.4.3 + eslint-visitor-keys: 1.3.0 + espree: 6.2.1 + esquery: 1.4.0 + esutils: 2.0.3 + file-entry-cache: 5.0.1 + functional-red-black-tree: 1.0.1 + glob-parent: 5.1.2 + globals: 12.4.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + inquirer: 7.3.3 + is-glob: 4.0.1 + js-yaml: 3.14.1 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.3.0 + lodash: 4.17.21 + minimatch: 3.0.4 + mkdirp: 0.5.5 + natural-compare: 1.4.0 + optionator: 0.8.3 + progress: 2.0.3 + regexpp: 2.0.1 + semver: 6.3.0 + strip-ansi: 5.2.0 + strip-json-comments: 3.1.1 + table: 5.4.6 + text-table: 0.2.0 + v8-compile-cache: 2.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree/6.2.1: + resolution: { integrity: sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== } + engines: { node: '>=6.0.0' } + dependencies: + acorn: 7.4.1 + acorn-jsx: 5.3.1_acorn@7.4.1 + eslint-visitor-keys: 1.3.0 + dev: true + + /esprima/4.0.1: + resolution: { integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== } + engines: { node: '>=4' } + hasBin: true + dev: true + + /esquery/1.4.0: + resolution: { integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== } + engines: { node: '>=0.10' } + dependencies: + estraverse: 5.2.0 + dev: true + + /esrecurse/4.3.0: + resolution: { integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== } + engines: { node: '>=4.0' } + dependencies: + estraverse: 5.2.0 + dev: true + + /estraverse/4.3.0: + resolution: { integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== } + engines: { node: '>=4.0' } + dev: true + + /estraverse/5.2.0: + resolution: { integrity: sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== } + engines: { node: '>=4.0' } + dev: true + + /estree-walker/2.0.2: + resolution: { integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== } + dev: true + + /esutils/2.0.3: + resolution: { integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== } + engines: { node: '>=0.10.0' } + dev: true + + /etag/1.8.1: + resolution: { integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== } + engines: { node: '>= 0.6' } + dev: true + + /event-pubsub/4.3.0: + resolution: { integrity: sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ== } + engines: { node: '>=4.0.0' } + dev: true + + /eventemitter3/4.0.7: + resolution: { integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== } + dev: true + + /events/3.3.0: + resolution: { integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== } + engines: { node: '>=0.8.x' } + dev: true + + /eventsource/1.1.0: + resolution: { integrity: sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg== } + engines: { node: '>=0.12.0' } + dependencies: + original: 1.0.2 + dev: true + + /evp_bytestokey/1.0.3: + resolution: { integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== } + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + dev: true + + /execa/0.8.0: + resolution: { integrity: sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA== } + engines: { node: '>=4' } + dependencies: + cross-spawn: 5.1.0 + get-stream: 3.0.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.3 + strip-eof: 1.0.0 + dev: true + + /execa/1.0.0: + resolution: { integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== } + engines: { node: '>=6' } + dependencies: + cross-spawn: 6.0.5 + get-stream: 4.1.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.3 + strip-eof: 1.0.0 + dev: true + + /execa/3.4.0: + resolution: { integrity: sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== } + engines: { node: ^8.12.0 || >=9.7.0 } + dependencies: + cross-spawn: 7.0.3 + get-stream: 5.2.0 + human-signals: 1.1.1 + is-stream: 2.0.0 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + p-finally: 2.0.1 + signal-exit: 3.0.3 + strip-final-newline: 2.0.0 + dev: true + + /expand-brackets/2.1.4: + resolution: { integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== } + engines: { node: '>=0.10.0' } + dependencies: + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /expand-brackets/2.1.4_supports-color@6.1.0: + resolution: { integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== } + engines: { node: '>=0.10.0' } + dependencies: + debug: 2.6.9_supports-color@6.1.0 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2_supports-color@6.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /express/4.17.1: + resolution: { integrity: sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== } + engines: { node: '>= 0.10.0' } + dependencies: + accepts: 1.3.7 + array-flatten: 1.1.1 + body-parser: 1.19.0 + content-disposition: 0.5.3 + content-type: 1.0.4 + cookie: 0.4.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 1.1.2 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.1.2 + fresh: 0.5.2 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.3.0 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.6 + qs: 6.7.0 + range-parser: 1.2.1 + safe-buffer: 5.1.2 + send: 0.17.1 + serve-static: 1.14.1 + setprototypeof: 1.1.1 + statuses: 1.5.0 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /express/4.17.1_supports-color@6.1.0: + resolution: { integrity: sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== } + engines: { node: '>= 0.10.0' } + dependencies: + accepts: 1.3.7 + array-flatten: 1.1.1 + body-parser: 1.19.0_supports-color@6.1.0 + content-disposition: 0.5.3 + content-type: 1.0.4 + cookie: 0.4.0 + cookie-signature: 1.0.6 + debug: 2.6.9_supports-color@6.1.0 + depd: 1.1.2 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.1.2_supports-color@6.1.0 + fresh: 0.5.2 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.3.0 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.6 + qs: 6.7.0 + range-parser: 1.2.1 + safe-buffer: 5.1.2 + send: 0.17.1_supports-color@6.1.0 + serve-static: 1.14.1_supports-color@6.1.0 + setprototypeof: 1.1.1 + statuses: 1.5.0 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /extend-shallow/2.0.1: + resolution: { integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== } + engines: { node: '>=0.10.0' } + dependencies: + is-extendable: 0.1.1 + dev: true + + /extend-shallow/3.0.2: + resolution: { integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== } + engines: { node: '>=0.10.0' } + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + dev: true + + /extend/3.0.2: + resolution: { integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== } + dev: true + + /external-editor/3.1.0: + resolution: { integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== } + engines: { node: '>=4' } + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + + /extglob/2.0.4: + resolution: { integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== } + engines: { node: '>=0.10.0' } + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /extglob/2.0.4_supports-color@6.1.0: + resolution: { integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== } + engines: { node: '>=0.10.0' } + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4_supports-color@6.1.0 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2_supports-color@6.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /extsprintf/1.3.0: + resolution: { integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== } + engines: { '0': node >=0.6.0 } + dev: true + + /extsprintf/1.4.0: + resolution: { integrity: sha512-6NW8DZ8pWBc5NbGYUiqqccj9dXnuSzilZYqprdKJBZsQodGH9IyUoFOGxIWVDcBzHMb8ET24aqx9p66tZEWZkA== } + engines: { '0': node >=0.6.0 } + dev: true + + /fast-deep-equal/3.1.3: + resolution: { integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== } + + /fast-glob/2.2.7: + resolution: { integrity: sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== } + engines: { node: '>=4.0.0' } + dependencies: + '@mrmlnc/readdir-enhanced': 2.2.1 + '@nodelib/fs.stat': 1.1.3 + glob-parent: 3.1.0 + is-glob: 4.0.1 + merge2: 1.4.1 + micromatch: 3.1.10 + transitivePeerDependencies: + - supports-color + dev: true + + /fast-json-stable-stringify/2.1.0: + resolution: { integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== } + + /fast-levenshtein/2.0.6: + resolution: { integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== } + dev: true + + /faye-websocket/0.11.3: + resolution: { integrity: sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== } + engines: { node: '>=0.8.0' } + dependencies: + websocket-driver: 0.7.4 + dev: true + + /fecha/4.2.3: + resolution: { integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== } + dev: false + + /figgy-pudding/3.5.2: + resolution: { integrity: sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== } + dev: true + + /figures/1.7.0: + resolution: { integrity: sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ== } + engines: { node: '>=0.10.0' } + dependencies: + escape-string-regexp: 1.0.5 + object-assign: 4.1.1 + dev: true + + /figures/2.0.0: + resolution: { integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== } + engines: { node: '>=4' } + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /figures/3.2.0: + resolution: { integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== } + engines: { node: '>=8' } + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /file-entry-cache/5.0.1: + resolution: { integrity: sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== } + engines: { node: '>=4' } + dependencies: + flat-cache: 2.0.1 + dev: true + + /file-loader/4.3.0_webpack@4.46.0: + resolution: { integrity: sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== } + engines: { node: '>= 8.9.0' } + peerDependencies: + webpack: ^4.0.0 + dependencies: + loader-utils: 1.4.2 + schema-utils: 2.7.1 + webpack: 4.46.0 + dev: true + + /file-uri-to-path/1.0.0: + resolution: { integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== } + requiresBuild: true + dev: true + optional: true + + /filesize/3.6.1: + resolution: { integrity: sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== } + engines: { node: '>= 0.4.0' } + dev: true + + /fill-range/4.0.0: + resolution: { integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== } + engines: { node: '>=0.10.0' } + dependencies: + extend-shallow: 2.0.1 + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range: 2.1.1 + dev: true + + /fill-range/7.0.1: + resolution: { integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== } + engines: { node: '>=8' } + dependencies: + to-regex-range: 5.0.1 + dev: true + + /finalhandler/1.1.2: + resolution: { integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== } + engines: { node: '>= 0.8' } + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /finalhandler/1.1.2_supports-color@6.1.0: + resolution: { integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== } + engines: { node: '>= 0.8' } + dependencies: + debug: 2.6.9_supports-color@6.1.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /find-cache-dir/0.1.1: + resolution: { integrity: sha512-Z9XSBoNE7xQiV6MSgPuCfyMokH2K7JdpRkOYE1+mu3d4BFJtx3GW+f6Bo4q8IX6rlf5MYbLBKW0pjl2cWdkm2A== } + engines: { node: '>=0.10.0' } + dependencies: + commondir: 1.0.1 + mkdirp: 0.5.5 + pkg-dir: 1.0.0 + dev: true + + /find-cache-dir/2.1.0: + resolution: { integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== } + engines: { node: '>=6' } + dependencies: + commondir: 1.0.1 + make-dir: 2.1.0 + pkg-dir: 3.0.0 + dev: true + + /find-cache-dir/3.3.1: + resolution: { integrity: sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== } + engines: { node: '>=8' } + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + dev: true + + /find-root/1.1.0: + resolution: { integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== } + dev: true + + /find-up/1.1.2: + resolution: { integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== } + engines: { node: '>=0.10.0' } + dependencies: + path-exists: 2.1.0 + pinkie-promise: 2.0.1 + dev: true + + /find-up/2.1.0: + resolution: { integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== } + engines: { node: '>=4' } + dependencies: + locate-path: 2.0.0 + dev: true + + /find-up/3.0.0: + resolution: { integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== } + engines: { node: '>=6' } + dependencies: + locate-path: 3.0.0 + dev: true + + /find-up/4.1.0: + resolution: { integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== } + engines: { node: '>=8' } + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /find-up/5.0.0: + resolution: { integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== } + engines: { node: '>=10' } + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache/2.0.1: + resolution: { integrity: sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== } + engines: { node: '>=4' } + dependencies: + flatted: 2.0.2 + rimraf: 2.6.3 + write: 1.0.3 + dev: true + + /flatted/2.0.2: + resolution: { integrity: sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== } + dev: true + + /flush-write-stream/1.1.1: + resolution: { integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== } + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.7 + dev: true + + /fn-name/2.0.1: + resolution: { integrity: sha512-oIDB1rXf3BUnn00bh2jVM0byuqr94rBh6g7ZfdKcbmp1we2GQtPzKdloyvBXHs+q3fvxB8EqX5ecFba3RwCSjA== } + engines: { node: '>=0.10.0' } + dev: true + + /follow-redirects/1.13.3: + resolution: { integrity: sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA== } + engines: { node: '>=4.0' } + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + /for-in/1.0.2: + resolution: { integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== } + engines: { node: '>=0.10.0' } + dev: true + + /forever-agent/0.6.1: + resolution: { integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== } + dev: true + + /fork-ts-checker-webpack-plugin/3.1.1_zdvo64nkvyqkp3vqjwxlvouqsa: + resolution: { integrity: sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== } + engines: { node: '>=6.11.5', yarn: '>=1.0.0' } + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + dependencies: + babel-code-frame: 6.26.0 + chalk: 2.4.2 + chokidar: 3.5.3 + eslint: 6.8.0 + micromatch: 3.1.10 + minimatch: 3.0.4 + semver: 5.7.1 + tapable: 1.1.3 + typescript: 3.9.9 + vue-template-compiler: 2.6.14 + webpack: 4.46.0 + worker-rpc: 0.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /form-data/2.3.3: + resolution: { integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== } + engines: { node: '>= 0.12' } + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.29 + dev: true + + /forwarded/0.1.2: + resolution: { integrity: sha512-Ua9xNhH0b8pwE3yRbFfXJvfdWF0UHNCdeyb2sbi9Ul/M+r3PTdrz7Cv4SCfZRMjmzEM9PhraqfZFbGTIg3OMyA== } + engines: { node: '>= 0.6' } + dev: true + + /fragment-cache/0.2.1: + resolution: { integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== } + engines: { node: '>=0.10.0' } + dependencies: + map-cache: 0.2.2 + dev: true + + /fresh/0.5.2: + resolution: { integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== } + engines: { node: '>= 0.6' } + dev: true + + /from2/2.3.0: + resolution: { integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== } + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.7 + dev: true + + /fs-extra/10.1.0: + resolution: { integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== } + engines: { node: '>=12' } + dependencies: + graceful-fs: 4.2.6 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs-extra/7.0.1: + resolution: { integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== } + engines: { node: '>=6 <7 || >=8' } + dependencies: + graceful-fs: 4.2.6 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + + /fs-extra/9.1.0: + resolution: { integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== } + engines: { node: '>=10' } + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.6 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs-minipass/2.1.0: + resolution: { integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== } + engines: { node: '>= 8' } + dependencies: + minipass: 3.1.3 + dev: true + + /fs-write-stream-atomic/1.0.10: + resolution: { integrity: sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA== } + dependencies: + graceful-fs: 4.2.6 + iferr: 0.1.5 + imurmurhash: 0.1.4 + readable-stream: 2.3.7 + dev: true + + /fs.realpath/1.0.0: + resolution: { integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== } + dev: true + + /fsevents/1.2.13: + resolution: { integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== } + engines: { node: '>= 4.0' } + os: [darwin] + deprecated: The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2 + requiresBuild: true + dependencies: + bindings: 1.5.0 + nan: 2.15.0 + dev: true + optional: true + + /fsevents/2.3.2: + resolution: { integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind/1.1.1: + resolution: { integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== } + + /functional-red-black-tree/1.0.1: + resolution: { integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== } + dev: true + + /g-status/2.0.2: + resolution: { integrity: sha512-kQoE9qH+T1AHKgSSD0Hkv98bobE90ILQcXAF4wvGgsr7uFqNvwmh8j+Lq3l0RVt3E3HjSbv2B9biEGcEtpHLCA== } + engines: { node: '>=6' } + dependencies: + arrify: 1.0.1 + matcher: 1.1.1 + simple-git: 1.132.0 + transitivePeerDependencies: + - supports-color + dev: true + + /gensync/1.0.0-beta.2: + resolution: { integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== } + engines: { node: '>=6.9.0' } + dev: true + + /get-caller-file/2.0.5: + resolution: { integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== } + engines: { node: 6.* || 8.* || >= 10.* } + dev: true + + /get-intrinsic/1.1.1: + resolution: { integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== } + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.2 + + /get-own-enumerable-property-symbols/3.0.2: + resolution: { integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== } + dev: true + + /get-stdin/6.0.0: + resolution: { integrity: sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== } + engines: { node: '>=4' } + dev: true + + /get-stdin/8.0.0: + resolution: { integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== } + engines: { node: '>=10' } + dev: true + + /get-stream/3.0.0: + resolution: { integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ== } + engines: { node: '>=4' } + dev: true + + /get-stream/4.1.0: + resolution: { integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== } + engines: { node: '>=6' } + dependencies: + pump: 3.0.0 + dev: true + + /get-stream/5.2.0: + resolution: { integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== } + engines: { node: '>=8' } + dependencies: + pump: 3.0.0 + dev: true + + /get-value/2.0.6: + resolution: { integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== } + engines: { node: '>=0.10.0' } + dev: true + + /getpass/0.1.7: + resolution: { integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== } + dependencies: + assert-plus: 1.0.0 + dev: true + + /git-raw-commits/2.0.10: + resolution: { integrity: sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ== } + engines: { node: '>=10' } + hasBin: true + dependencies: + dargs: 7.0.0 + lodash: 4.17.21 + meow: 8.1.2 + split2: 3.2.2 + through2: 4.0.2 + dev: true + + /gl-matrix/3.4.3: + resolution: { integrity: sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA== } + dev: false + + /glob-parent/3.1.0: + resolution: { integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== } + dependencies: + is-glob: 3.1.0 + path-dirname: 1.0.2 + dev: true + + /glob-parent/5.1.2: + resolution: { integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== } + engines: { node: '>= 6' } + dependencies: + is-glob: 4.0.1 + dev: true + + /glob-to-regexp/0.3.0: + resolution: { integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig== } + dev: true + + /glob/7.0.6: + resolution: { integrity: sha512-f8c0rE8JiCxpa52kWPAOa3ZaYEnzofDzCQLCn3Vdk0Z5OVLq3BsRFJI4S4ykpeVW6QMGBUkMeUpoEgWnMTnw5Q== } + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.0.4 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob/7.1.6: + resolution: { integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== } + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.0.4 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /global-dirs/0.1.1: + resolution: { integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg== } + engines: { node: '>=4' } + dependencies: + ini: 1.3.8 + dev: true + + /globals/11.12.0: + resolution: { integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== } + engines: { node: '>=4' } + dev: true + + /globals/12.4.0: + resolution: { integrity: sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== } + engines: { node: '>=8' } + dependencies: + type-fest: 0.8.1 + dev: true + + /globals/9.18.0: + resolution: { integrity: sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== } + engines: { node: '>=0.10.0' } + dev: true + + /globby/6.1.0: + resolution: { integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw== } + engines: { node: '>=0.10.0' } + dependencies: + array-union: 1.0.2 + glob: 7.1.6 + object-assign: 4.1.1 + pify: 2.3.0 + pinkie-promise: 2.0.1 + dev: true + + /globby/7.1.1: + resolution: { integrity: sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g== } + engines: { node: '>=4' } + dependencies: + array-union: 1.0.2 + dir-glob: 2.2.2 + glob: 7.1.6 + ignore: 3.3.10 + pify: 3.0.0 + slash: 1.0.0 + dev: true + + /globby/9.2.0: + resolution: { integrity: sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== } + engines: { node: '>=6' } + dependencies: + '@types/glob': 7.1.3 + array-union: 1.0.2 + dir-glob: 2.2.2 + fast-glob: 2.2.7 + glob: 7.1.6 + ignore: 4.0.6 + pify: 4.0.1 + slash: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /good-listener/1.2.2: + resolution: { integrity: sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw== } + dependencies: + delegate: 3.2.0 + dev: false + + /graceful-fs/4.2.6: + resolution: { integrity: sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== } + dev: true + + /graphlib/2.1.8: + resolution: { integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A== } + dependencies: + lodash: 4.17.21 + dev: false + + /gzip-size/5.1.1: + resolution: { integrity: sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== } + engines: { node: '>=6' } + dependencies: + duplexer: 0.1.2 + pify: 4.0.1 + dev: true + + /handle-thing/2.0.1: + resolution: { integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== } + dev: true + + /har-schema/2.0.0: + resolution: { integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== } + engines: { node: '>=4' } + dev: true + + /har-validator/5.1.5: + resolution: { integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== } + engines: { node: '>=6' } + deprecated: this library is no longer supported + dependencies: + ajv: 6.12.6 + har-schema: 2.0.0 + dev: true + + /hard-rejection/2.1.0: + resolution: { integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== } + engines: { node: '>=6' } + dev: true + + /has-ansi/2.0.0: + resolution: { integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== } + engines: { node: '>=0.10.0' } + dependencies: + ansi-regex: 2.1.1 + dev: true + + /has-bigints/1.0.1: + resolution: { integrity: sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== } + dev: true + + /has-flag/1.0.0: + resolution: { integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA== } + engines: { node: '>=0.10.0' } + dev: true + + /has-flag/3.0.0: + resolution: { integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== } + engines: { node: '>=4' } + dev: true + + /has-flag/4.0.0: + resolution: { integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== } + engines: { node: '>=8' } + dev: true + + /has-symbols/1.0.2: + resolution: { integrity: sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== } + engines: { node: '>= 0.4' } + + /has-value/0.3.1: + resolution: { integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== } + engines: { node: '>=0.10.0' } + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + dev: true + + /has-value/1.0.0: + resolution: { integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== } + engines: { node: '>=0.10.0' } + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + dev: true + + /has-values/0.1.4: + resolution: { integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== } + engines: { node: '>=0.10.0' } + dev: true + + /has-values/1.0.0: + resolution: { integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== } + engines: { node: '>=0.10.0' } + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + dev: true + + /has/1.0.3: + resolution: { integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== } + engines: { node: '>= 0.4.0' } + dependencies: + function-bind: 1.1.1 + + /hash-base/3.1.0: + resolution: { integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== } + engines: { node: '>=4' } + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.0 + safe-buffer: 5.2.1 + dev: true + + /hash-sum/1.0.2: + resolution: { integrity: sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA== } + dev: true + + /hash-sum/2.0.0: + resolution: { integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg== } + dev: true + + /hash.js/1.1.7: + resolution: { integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== } + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: true + + /he/1.2.0: + resolution: { integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== } + hasBin: true + dev: true + + /hex-color-regex/1.1.0: + resolution: { integrity: sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== } + dev: true + + /highlight.js/10.7.1: + resolution: { integrity: sha512-S6G97tHGqJ/U8DsXcEdnACbirtbx58Bx9CzIVeYli8OuswCfYI/LsXH2EiGcoGio1KAC3x4mmUwulOllJ2ZyRA== } + dev: true + + /hmac-drbg/1.0.1: + resolution: { integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== } + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: true + + /hoopy/0.1.4: + resolution: { integrity: sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== } + engines: { node: '>= 6.0.0' } + dev: true + + /hosted-git-info/2.8.8: + resolution: { integrity: sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== } + dev: true + + /hosted-git-info/4.0.1: + resolution: { integrity: sha512-eT7NrxAsppPRQEBSwKSosReE+v8OzABwEScQYk5d4uxaEPlzxTIku7LINXtBGalthkLhJnq5lBI89PfK43zAKg== } + engines: { node: '>=10' } + dependencies: + lru-cache: 6.0.0 + dev: true + + /hpack.js/2.1.6: + resolution: { integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== } + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.7 + wbuf: 1.7.3 + dev: true + + /hsl-regex/1.0.0: + resolution: { integrity: sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A== } + dev: true + + /hsla-regex/1.0.0: + resolution: { integrity: sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA== } + dev: true + + /html-comment-regex/1.1.2: + resolution: { integrity: sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== } + dev: true + + /html-entities/1.4.0: + resolution: { integrity: sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== } + dev: true + + /html-minifier/3.5.21: + resolution: { integrity: sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== } + engines: { node: '>=4' } + hasBin: true + dependencies: + camel-case: 3.0.0 + clean-css: 4.2.3 + commander: 2.17.1 + he: 1.2.0 + param-case: 2.1.1 + relateurl: 0.2.7 + uglify-js: 3.4.10 + dev: true + + /html-tags/2.0.0: + resolution: { integrity: sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g== } + engines: { node: '>=4' } + dev: true + + /html-tags/3.1.0: + resolution: { integrity: sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== } + engines: { node: '>=8' } + dev: true + + /html-webpack-plugin/3.2.0_webpack@4.46.0: + resolution: { integrity: sha512-Br4ifmjQojUP4EmHnRBoUIYcZ9J7M4bTMcm7u6xoIAIuq2Nte4TzXX0533owvkQKQD1WeMTTTyD4Ni4QKxS0Bg== } + engines: { node: '>=6.9' } + deprecated: 3.x is no longer supported + peerDependencies: + webpack: ^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 + dependencies: + html-minifier: 3.5.21 + loader-utils: 0.2.17 + lodash: 4.17.21 + pretty-error: 2.1.2 + tapable: 1.1.3 + toposort: 1.0.7 + util.promisify: 1.0.0 + webpack: 4.46.0 + dev: true + + /htmlparser2/3.10.1: + resolution: { integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== } + dependencies: + domelementtype: 1.3.1 + domhandler: 2.4.2 + domutils: 1.7.0 + entities: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + + /http-deceiver/1.2.7: + resolution: { integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== } + dev: true + + /http-errors/1.6.3: + resolution: { integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== } + engines: { node: '>= 0.6' } + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + dev: true + + /http-errors/1.7.2: + resolution: { integrity: sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== } + engines: { node: '>= 0.6' } + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.1 + statuses: 1.5.0 + toidentifier: 1.0.0 + dev: true + + /http-errors/1.7.3: + resolution: { integrity: sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== } + engines: { node: '>= 0.6' } + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.1.1 + statuses: 1.5.0 + toidentifier: 1.0.0 + dev: true + + /http-parser-js/0.5.3: + resolution: { integrity: sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== } + dev: true + + /http-proxy-middleware/0.19.1_xwktanctkdp2ue56r3exixdqpa: + resolution: { integrity: sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== } + engines: { node: '>=4.0.0' } + dependencies: + http-proxy: 1.18.1_debug@4.3.2 + is-glob: 4.0.1 + lodash: 4.17.21 + micromatch: 3.1.10_supports-color@6.1.0 + transitivePeerDependencies: + - debug + - supports-color + dev: true + + /http-proxy/1.18.1_debug@4.3.2: + resolution: { integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== } + engines: { node: '>=8.0.0' } + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.13.3 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + dev: true + + /http-signature/1.2.0: + resolution: { integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== } + engines: { node: '>=0.8', npm: '>=1.3.7' } + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.1 + sshpk: 1.16.1 + dev: true + + /https-browserify/1.0.0: + resolution: { integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== } + dev: true + + /human-signals/1.1.1: + resolution: { integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== } + engines: { node: '>=8.12.0' } + dev: true + + /husky/1.3.1: + resolution: { integrity: sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg== } + engines: { node: '>=6' } + hasBin: true + requiresBuild: true + dependencies: + cosmiconfig: 5.2.1 + execa: 1.0.0 + find-up: 3.0.0 + get-stdin: 6.0.0 + is-ci: 2.0.0 + pkg-dir: 3.0.0 + please-upgrade-node: 3.2.0 + read-pkg: 4.0.1 + run-node: 1.0.0 + slash: 2.0.0 + dev: true + + /iconv-lite/0.4.24: + resolution: { integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== } + engines: { node: '>=0.10.0' } + dependencies: + safer-buffer: 2.1.2 + dev: true + + /icss-utils/4.1.1: + resolution: { integrity: sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== } + engines: { node: '>= 6' } + dependencies: + postcss: 7.0.35 + dev: true + + /ieee754/1.2.1: + resolution: { integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== } + dev: true + + /iferr/0.1.5: + resolution: { integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== } + dev: true + + /ignore/3.3.10: + resolution: { integrity: sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== } + dev: true + + /ignore/4.0.6: + resolution: { integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== } + engines: { node: '>= 4' } + dev: true + + /ignore/5.1.8: + resolution: { integrity: sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== } + engines: { node: '>= 4' } + dev: true + + /image-size/0.5.5: + resolution: { integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== } + engines: { node: '>=0.10.0' } + hasBin: true + dev: true + + /import-cwd/2.1.0: + resolution: { integrity: sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg== } + engines: { node: '>=4' } + dependencies: + import-from: 2.1.0 + dev: true + + /import-fresh/2.0.0: + resolution: { integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== } + engines: { node: '>=4' } + dependencies: + caller-path: 2.0.0 + resolve-from: 3.0.0 + dev: true + + /import-fresh/3.3.0: + resolution: { integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== } + engines: { node: '>=6' } + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /import-from/2.1.0: + resolution: { integrity: sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w== } + engines: { node: '>=4' } + dependencies: + resolve-from: 3.0.0 + dev: true + + /import-local/2.0.0: + resolution: { integrity: sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== } + engines: { node: '>=6' } + hasBin: true + dependencies: + pkg-dir: 3.0.0 + resolve-cwd: 2.0.0 + dev: true + + /imurmurhash/0.1.4: + resolution: { integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== } + engines: { node: '>=0.8.19' } + dev: true + + /increase-memory-limit/1.0.7: + resolution: { integrity: sha512-ozyn+HHAPD9VxMT1U50A7G8XXlktUWhnnEDYSeDYnQjKsNrBWHqq6XfEA0uhMdDPD+q/7rXWlzF1CbXX/c1LiQ== } + hasBin: true + dependencies: + glob: 7.1.6 + dev: true + + /indent-string/3.2.0: + resolution: { integrity: sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ== } + engines: { node: '>=4' } + dev: true + + /indent-string/4.0.0: + resolution: { integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== } + engines: { node: '>=8' } + dev: true + + /indexes-of/1.0.1: + resolution: { integrity: sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA== } + dev: true + + /infer-owner/1.0.4: + resolution: { integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== } + dev: true + + /inflight/1.0.6: + resolution: { integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== } + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits/2.0.1: + resolution: { integrity: sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA== } + dev: true + + /inherits/2.0.3: + resolution: { integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== } + dev: true + + /inherits/2.0.4: + resolution: { integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== } + dev: true + + /ini/1.3.8: + resolution: { integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== } + dev: true + + /inquirer/7.3.3: + resolution: { integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== } + engines: { node: '>=8.0.0' } + dependencies: + ansi-escapes: 4.3.1 + chalk: 4.1.1 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + run-async: 2.4.1 + rxjs: 6.6.6 + string-width: 4.2.2 + strip-ansi: 6.0.0 + through: 2.3.8 + dev: true + + /insert-css/2.0.0: + resolution: { integrity: sha512-xGq5ISgcUP5cvGkS2MMFLtPDBtrtQPSFfC6gA6U8wHKqfjTIMZLZNxOItQnoSjdOzlXOLU/yD32RKC4SvjNbtA== } + dev: false + + /internal-ip/4.3.0: + resolution: { integrity: sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== } + engines: { node: '>=6' } + dependencies: + default-gateway: 4.2.0 + ipaddr.js: 1.9.1 + dev: true + + /interpret/1.4.0: + resolution: { integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== } + engines: { node: '>= 0.10' } + dev: true + + /invariant/2.2.4: + resolution: { integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== } + dependencies: + loose-envify: 1.4.0 + dev: true + + /ip-regex/2.1.0: + resolution: { integrity: sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw== } + engines: { node: '>=4' } + dev: true + + /ip/1.1.5: + resolution: { integrity: sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA== } + dev: true + + /ipaddr.js/1.9.1: + resolution: { integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== } + engines: { node: '>= 0.10' } + dev: true + + /is-absolute-url/2.1.0: + resolution: { integrity: sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg== } + engines: { node: '>=0.10.0' } + dev: true + + /is-absolute-url/3.0.3: + resolution: { integrity: sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== } + engines: { node: '>=8' } + dev: true + + /is-accessor-descriptor/0.1.6: + resolution: { integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== } + engines: { node: '>=0.10.0' } + dependencies: + kind-of: 3.2.2 + dev: true + + /is-accessor-descriptor/1.0.0: + resolution: { integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== } + engines: { node: '>=0.10.0' } + dependencies: + kind-of: 6.0.3 + dev: true + + /is-any-array/2.0.0: + resolution: { integrity: sha512-WdPV58rT3aOWXvvyuBydnCq4S2BM1Yz8shKxlEpk/6x+GX202XRvXOycEFtNgnHVLoc46hpexPFx8Pz1/sMS0w== } + dev: false + + /is-arguments/1.1.0: + resolution: { integrity: sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + dev: true + + /is-arrayish/0.2.1: + resolution: { integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== } + dev: true + + /is-arrayish/0.3.2: + resolution: { integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== } + + /is-bigint/1.0.1: + resolution: { integrity: sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== } + dev: true + + /is-binary-path/1.0.1: + resolution: { integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== } + engines: { node: '>=0.10.0' } + dependencies: + binary-extensions: 1.13.1 + dev: true + + /is-binary-path/2.1.0: + resolution: { integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== } + engines: { node: '>=8' } + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-boolean-object/1.1.0: + resolution: { integrity: sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + dev: true + + /is-buffer/1.1.6: + resolution: { integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== } + dev: true + + /is-callable/1.2.3: + resolution: { integrity: sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== } + engines: { node: '>= 0.4' } + dev: true + + /is-ci/1.2.1: + resolution: { integrity: sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== } + hasBin: true + dependencies: + ci-info: 1.6.0 + dev: true + + /is-ci/2.0.0: + resolution: { integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== } + hasBin: true + dependencies: + ci-info: 2.0.0 + dev: true + + /is-color-stop/1.1.0: + resolution: { integrity: sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA== } + dependencies: + css-color-names: 0.0.4 + hex-color-regex: 1.1.0 + hsl-regex: 1.0.0 + hsla-regex: 1.0.0 + rgb-regex: 1.0.1 + rgba-regex: 1.0.0 + dev: true + + /is-core-module/2.2.0: + resolution: { integrity: sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== } + dependencies: + has: 1.0.3 + dev: true + + /is-data-descriptor/0.1.4: + resolution: { integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== } + engines: { node: '>=0.10.0' } + dependencies: + kind-of: 3.2.2 + dev: true + + /is-data-descriptor/1.0.0: + resolution: { integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== } + engines: { node: '>=0.10.0' } + dependencies: + kind-of: 6.0.3 + dev: true + + /is-date-object/1.0.2: + resolution: { integrity: sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== } + engines: { node: '>= 0.4' } + dev: true + + /is-descriptor/0.1.6: + resolution: { integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== } + engines: { node: '>=0.10.0' } + dependencies: + is-accessor-descriptor: 0.1.6 + is-data-descriptor: 0.1.4 + kind-of: 5.1.0 + dev: true + + /is-descriptor/1.0.2: + resolution: { integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== } + engines: { node: '>=0.10.0' } + dependencies: + is-accessor-descriptor: 1.0.0 + is-data-descriptor: 1.0.0 + kind-of: 6.0.3 + dev: true + + /is-directory/0.3.1: + resolution: { integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== } + engines: { node: '>=0.10.0' } + dev: true + + /is-docker/2.1.1: + resolution: { integrity: sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== } + engines: { node: '>=8' } + hasBin: true + dev: true + + /is-extendable/0.1.1: + resolution: { integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== } + engines: { node: '>=0.10.0' } + dev: true + + /is-extendable/1.0.1: + resolution: { integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== } + engines: { node: '>=0.10.0' } + dependencies: + is-plain-object: 2.0.4 + dev: true + + /is-extglob/2.1.1: + resolution: { integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== } + engines: { node: '>=0.10.0' } + dev: true + + /is-fullwidth-code-point/1.0.0: + resolution: { integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== } + engines: { node: '>=0.10.0' } + dependencies: + number-is-nan: 1.0.1 + dev: true + + /is-fullwidth-code-point/2.0.0: + resolution: { integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== } + engines: { node: '>=4' } + dev: true + + /is-fullwidth-code-point/3.0.0: + resolution: { integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== } + engines: { node: '>=8' } + dev: true + + /is-glob/3.1.0: + resolution: { integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== } + engines: { node: '>=0.10.0' } + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-glob/4.0.1: + resolution: { integrity: sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== } + engines: { node: '>=0.10.0' } + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-interactive/1.0.0: + resolution: { integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== } + engines: { node: '>=8' } + dev: true + + /is-negative-zero/2.0.1: + resolution: { integrity: sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== } + engines: { node: '>= 0.4' } + dev: true + + /is-number-object/1.0.4: + resolution: { integrity: sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== } + engines: { node: '>= 0.4' } + dev: true + + /is-number/3.0.0: + resolution: { integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== } + engines: { node: '>=0.10.0' } + dependencies: + kind-of: 3.2.2 + dev: true + + /is-number/7.0.0: + resolution: { integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== } + engines: { node: '>=0.12.0' } + dev: true + + /is-obj/1.0.1: + resolution: { integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== } + engines: { node: '>=0.10.0' } + dev: true + + /is-obj/2.0.0: + resolution: { integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== } + engines: { node: '>=8' } + dev: true + + /is-observable/1.1.0: + resolution: { integrity: sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== } + engines: { node: '>=4' } + dependencies: + symbol-observable: 1.2.0 + dev: true + + /is-path-cwd/1.0.0: + resolution: { integrity: sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw== } + engines: { node: '>=0.10.0' } + dev: true + + /is-path-cwd/2.2.0: + resolution: { integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== } + engines: { node: '>=6' } + dev: true + + /is-path-in-cwd/1.0.1: + resolution: { integrity: sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== } + engines: { node: '>=0.10.0' } + dependencies: + is-path-inside: 1.0.1 + dev: true + + /is-path-in-cwd/2.1.0: + resolution: { integrity: sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== } + engines: { node: '>=6' } + dependencies: + is-path-inside: 2.1.0 + dev: true + + /is-path-inside/1.0.1: + resolution: { integrity: sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g== } + engines: { node: '>=0.10.0' } + dependencies: + path-is-inside: 1.0.2 + dev: true + + /is-path-inside/2.1.0: + resolution: { integrity: sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== } + engines: { node: '>=6' } + dependencies: + path-is-inside: 1.0.2 + dev: true + + /is-plain-obj/1.1.0: + resolution: { integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== } + engines: { node: '>=0.10.0' } + dev: true + + /is-plain-object/2.0.4: + resolution: { integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== } + engines: { node: '>=0.10.0' } + dependencies: + isobject: 3.0.1 + dev: true + + /is-promise/2.2.2: + resolution: { integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== } + dev: true + + /is-regex/1.1.2: + resolution: { integrity: sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + has-symbols: 1.0.2 + dev: true + + /is-regexp/1.0.0: + resolution: { integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== } + engines: { node: '>=0.10.0' } + dev: true + + /is-resolvable/1.1.0: + resolution: { integrity: sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== } + dev: true + + /is-stream/1.1.0: + resolution: { integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== } + engines: { node: '>=0.10.0' } + dev: true + + /is-stream/2.0.0: + resolution: { integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== } + engines: { node: '>=8' } + dev: true + + /is-string/1.0.5: + resolution: { integrity: sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== } + engines: { node: '>= 0.4' } + dev: true + + /is-svg/3.0.0: + resolution: { integrity: sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== } + engines: { node: '>=4' } + dependencies: + html-comment-regex: 1.1.2 + dev: true + + /is-symbol/1.0.3: + resolution: { integrity: sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== } + engines: { node: '>= 0.4' } + dependencies: + has-symbols: 1.0.2 + dev: true + + /is-text-path/1.0.1: + resolution: { integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w== } + engines: { node: '>=0.10.0' } + dependencies: + text-extensions: 1.9.0 + dev: true + + /is-typedarray/1.0.0: + resolution: { integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== } + dev: true + + /is-unicode-supported/0.1.0: + resolution: { integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== } + engines: { node: '>=10' } + dev: true + + /is-windows/1.0.2: + resolution: { integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== } + engines: { node: '>=0.10.0' } + dev: true + + /is-wsl/1.1.0: + resolution: { integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== } + engines: { node: '>=4' } + dev: true + + /is-wsl/2.2.0: + resolution: { integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== } + engines: { node: '>=8' } + dependencies: + is-docker: 2.1.1 + dev: true + + /isarray/0.0.1: + resolution: { integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== } + dev: true + + /isarray/1.0.0: + resolution: { integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== } + dev: true + + /isexe/2.0.0: + resolution: { integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== } + dev: true + + /isobject/2.1.0: + resolution: { integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== } + engines: { node: '>=0.10.0' } + dependencies: + isarray: 1.0.0 + dev: true + + /isobject/3.0.1: + resolution: { integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== } + engines: { node: '>=0.10.0' } + dev: true + + /isstream/0.1.2: + resolution: { integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== } + dev: true + + /javascript-stringify/2.0.1: + resolution: { integrity: sha512-yV+gqbd5vaOYjqlbk16EG89xB5udgjqQF3C5FAORDg4f/IS1Yc5ERCv5e/57yBcfJYw05V5JyIXabhwb75Xxow== } + dev: true + + /jest-worker/25.5.0: + resolution: { integrity: sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== } + engines: { node: '>= 8.3' } + dependencies: + merge-stream: 2.0.0 + supports-color: 7.2.0 + dev: true + + /js-base64/2.6.4: + resolution: { integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== } + dev: true + + /js-cookie/2.2.1: + resolution: { integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ== } + dev: false + + /js-message/1.0.7: + resolution: { integrity: sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA== } + engines: { node: '>=0.6.0' } + dev: true + + /js-queue/2.0.2: + resolution: { integrity: sha512-pbKLsbCfi7kriM3s1J4DDCo7jQkI58zPLHi0heXPzPlj0hjUsm+FesPUbE0DSbIVIK503A36aUBoCN7eMFedkA== } + engines: { node: '>=1.0.0' } + dependencies: + easy-stack: 1.0.1 + dev: true + + /js-tokens/3.0.2: + resolution: { integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg== } + dev: true + + /js-tokens/4.0.0: + resolution: { integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== } + dev: true + + /js-yaml/3.14.1: + resolution: { integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== } + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /jsbn/0.1.1: + resolution: { integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== } + dev: true + + /jsesc/0.5.0: + resolution: { integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== } + hasBin: true + dev: true + + /jsesc/2.5.2: + resolution: { integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== } + engines: { node: '>=4' } + hasBin: true + dev: true + + /json-parse-better-errors/1.0.2: + resolution: { integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== } + dev: true + + /json-parse-even-better-errors/2.3.1: + resolution: { integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== } + dev: true + + /json-schema-traverse/0.4.1: + resolution: { integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== } + + /json-schema/0.2.3: + resolution: { integrity: sha512-a3xHnILGMtk+hDOqNwHzF6e2fNbiMrXZvxKQiEv2MlgQP+pjIOzqAmKYD2mDpXYE/44M7g+n9p2bKkYWDUcXCQ== } + dev: true + + /json-stable-stringify-without-jsonify/1.0.1: + resolution: { integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== } + dev: true + + /json-stringify-safe/5.0.1: + resolution: { integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== } + dev: true + + /json3/3.3.3: + resolution: { integrity: sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== } + dev: true + + /json5/0.5.1: + resolution: { integrity: sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== } + hasBin: true + dev: true + + /json5/1.0.1: + resolution: { integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== } + hasBin: true + dependencies: + minimist: 1.2.5 + dev: true + + /json5/2.2.0: + resolution: { integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== } + engines: { node: '>=6' } + hasBin: true + dependencies: + minimist: 1.2.5 + + /jsonfile/4.0.0: + resolution: { integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== } + optionalDependencies: + graceful-fs: 4.2.6 + dev: true + + /jsonfile/6.1.0: + resolution: { integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== } + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.6 + dev: true + + /jsonparse/1.3.1: + resolution: { integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== } + engines: { '0': node >= 0.2.0 } + dev: true + + /jsprim/1.4.1: + resolution: { integrity: sha512-4Dj8Rf+fQ+/Pn7C5qeEX02op1WfOss3PKTE9Nsop3Dx+6UPxlm1dr/og7o2cRa5hNN07CACr4NFzRLtj/rjWog== } + engines: { '0': node >=0.6.0 } + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.2.3 + verror: 1.10.0 + dev: true + + /killable/1.0.1: + resolution: { integrity: sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== } + dev: true + + /kind-of/3.2.2: + resolution: { integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== } + engines: { node: '>=0.10.0' } + dependencies: + is-buffer: 1.1.6 + dev: true + + /kind-of/4.0.0: + resolution: { integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== } + engines: { node: '>=0.10.0' } + dependencies: + is-buffer: 1.1.6 + dev: true + + /kind-of/5.1.0: + resolution: { integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== } + engines: { node: '>=0.10.0' } + dev: true + + /kind-of/6.0.3: + resolution: { integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== } + engines: { node: '>=0.10.0' } + dev: true + + /launch-editor-middleware/2.2.1: + resolution: { integrity: sha512-s0UO2/gEGiCgei3/2UN3SMuUj1phjQN8lcpnvgLSz26fAzNWPQ6Nf/kF5IFClnfU2ehp6LrmKdMU/beveO+2jg== } + dependencies: + launch-editor: 2.2.1 + dev: true + + /launch-editor/2.2.1: + resolution: { integrity: sha512-On+V7K2uZK6wK7x691ycSUbLD/FyKKelArkbaAMSSJU8JmqmhwN2+mnJDNINuJWSrh2L0kDk+ZQtbC/gOWUwLw== } + dependencies: + chalk: 2.4.2 + shell-quote: 1.7.2 + dev: true + + /levn/0.3.0: + resolution: { integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== } + engines: { node: '>= 0.8.0' } + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + dev: true + + /lines-and-columns/1.1.6: + resolution: { integrity: sha512-8ZmlJFVK9iCmtLz19HpSsR8HaAMWBT284VMNednLwlIMDP2hJDCIhUp0IZ2xUcZ+Ob6BM0VvCSJwzASDM45NLQ== } + dev: true + + /lint-staged/8.2.1: + resolution: { integrity: sha512-n0tDGR/rTCgQNwXnUf/eWIpPNddGWxC32ANTNYsj2k02iZb7Cz5ox2tytwBu+2r0zDXMEMKw7Y9OD/qsav561A== } + hasBin: true + dependencies: + chalk: 2.4.2 + commander: 2.20.3 + cosmiconfig: 5.2.1 + debug: 3.2.7 + dedent: 0.7.0 + del: 3.0.0 + execa: 1.0.0 + g-status: 2.0.2 + is-glob: 4.0.1 + is-windows: 1.0.2 + listr: 0.14.3 + listr-update-renderer: 0.5.0_listr@0.14.3 + lodash: 4.17.21 + log-symbols: 2.2.0 + micromatch: 3.1.10 + npm-which: 3.0.1 + p-map: 1.2.0 + path-is-inside: 1.0.2 + pify: 3.0.0 + please-upgrade-node: 3.2.0 + staged-git-files: 1.1.2 + string-argv: 0.0.2 + stringify-object: 3.3.0 + yup: 0.27.0 + transitivePeerDependencies: + - supports-color + - zen-observable + - zenObservable + dev: true + + /listr-silent-renderer/1.1.1: + resolution: { integrity: sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA== } + engines: { node: '>=4' } + dev: true + + /listr-update-renderer/0.5.0_listr@0.14.3: + resolution: { integrity: sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== } + engines: { node: '>=6' } + peerDependencies: + listr: ^0.14.2 + dependencies: + chalk: 1.1.3 + cli-truncate: 0.2.1 + elegant-spinner: 1.0.1 + figures: 1.7.0 + indent-string: 3.2.0 + listr: 0.14.3 + log-symbols: 1.0.2 + log-update: 2.3.0 + strip-ansi: 3.0.1 + dev: true + + /listr-verbose-renderer/0.5.0: + resolution: { integrity: sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== } + engines: { node: '>=4' } + dependencies: + chalk: 2.4.2 + cli-cursor: 2.1.0 + date-fns: 1.30.1 + figures: 2.0.0 + dev: true + + /listr/0.14.3: + resolution: { integrity: sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== } + engines: { node: '>=6' } + dependencies: + '@samverschueren/stream-to-observable': 0.3.1_rxjs@6.6.6 + is-observable: 1.1.0 + is-promise: 2.2.2 + is-stream: 1.1.0 + listr-silent-renderer: 1.1.1 + listr-update-renderer: 0.5.0_listr@0.14.3 + listr-verbose-renderer: 0.5.0 + p-map: 2.1.0 + rxjs: 6.6.6 + transitivePeerDependencies: + - zen-observable + - zenObservable + dev: true + + /load-json-file/2.0.0: + resolution: { integrity: sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ== } + engines: { node: '>=4' } + dependencies: + graceful-fs: 4.2.6 + parse-json: 2.2.0 + pify: 2.3.0 + strip-bom: 3.0.0 + dev: true + + /loader-fs-cache/1.0.3: + resolution: { integrity: sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA== } + dependencies: + find-cache-dir: 0.1.1 + mkdirp: 0.5.5 + dev: true + + /loader-runner/2.4.0: + resolution: { integrity: sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== } + engines: { node: '>=4.3.0 <5.0.0 || >=5.10' } + dev: true + + /loader-utils/0.2.17: + resolution: { integrity: sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug== } + dependencies: + big.js: 3.2.0 + emojis-list: 2.1.0 + json5: 0.5.1 + object-assign: 4.1.1 + dev: true + + /loader-utils/1.4.2: + resolution: { integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== } + engines: { node: '>=4.0.0' } + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 1.0.1 + dev: true + + /loader-utils/2.0.4: + resolution: { integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== } + engines: { node: '>=8.9.0' } + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.0 + dev: false + + /locate-path/2.0.0: + resolution: { integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== } + engines: { node: '>=4' } + dependencies: + p-locate: 2.0.0 + path-exists: 3.0.0 + dev: true + + /locate-path/3.0.0: + resolution: { integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== } + engines: { node: '>=6' } + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + dev: true + + /locate-path/5.0.0: + resolution: { integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== } + engines: { node: '>=8' } + dependencies: + p-locate: 4.1.0 + dev: true + + /locate-path/6.0.0: + resolution: { integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== } + engines: { node: '>=10' } + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash-es/4.17.21: + resolution: { integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== } + dev: false + + /lodash.debounce/4.0.8: + resolution: { integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== } + dev: true + + /lodash.defaultsdeep/4.6.1: + resolution: { integrity: sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA== } + dev: true + + /lodash.kebabcase/4.1.1: + resolution: { integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== } + dev: true + + /lodash.mapvalues/4.6.0: + resolution: { integrity: sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ== } + dev: true + + /lodash.memoize/4.1.2: + resolution: { integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== } + dev: true + + /lodash.transform/4.6.0: + resolution: { integrity: sha512-LO37ZnhmBVx0GvOU/caQuipEh4GN82TcWv3yHlebGDgOxbxiwwzW5Pcx2AcvpIv2WmvmSMoC492yQFNhy/l/UQ== } + dev: true + + /lodash.uniq/4.5.0: + resolution: { integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== } + dev: true + + /lodash/4.11.2: + resolution: { integrity: sha512-kzYAjjUS0vKRLVcNZgK2k7NJOT5cQoFO3w8ddED6mDBdgu3AIL9xhAktXJ5Dm6GD1x+eqqyu1wKAzEt8Uq77NQ== } + dev: true + + /lodash/4.17.21: + resolution: { integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== } + + /log-symbols/1.0.2: + resolution: { integrity: sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ== } + engines: { node: '>=0.10.0' } + dependencies: + chalk: 1.1.3 + dev: true + + /log-symbols/2.2.0: + resolution: { integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== } + engines: { node: '>=4' } + dependencies: + chalk: 2.4.2 + dev: true + + /log-symbols/4.1.0: + resolution: { integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== } + engines: { node: '>=10' } + dependencies: + chalk: 4.1.1 + is-unicode-supported: 0.1.0 + dev: true + + /log-update/2.3.0: + resolution: { integrity: sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg== } + engines: { node: '>=4' } + dependencies: + ansi-escapes: 3.2.0 + cli-cursor: 2.1.0 + wrap-ansi: 3.0.1 + dev: true + + /loglevel/1.7.1: + resolution: { integrity: sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== } + engines: { node: '>= 0.6.0' } + dev: true + + /loose-envify/1.4.0: + resolution: { integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== } + hasBin: true + dependencies: + js-tokens: 4.0.0 + dev: true + + /lower-case/1.1.4: + resolution: { integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA== } + dev: true + + /lru-cache/4.1.5: + resolution: { integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== } + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + dev: true + + /lru-cache/5.1.1: + resolution: { integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== } + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache/6.0.0: + resolution: { integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== } + engines: { node: '>=10' } + dependencies: + yallist: 4.0.0 + dev: true + + /magic-string/0.25.7: + resolution: { integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== } + dependencies: + sourcemap-codec: 1.4.8 + dev: true + + /make-dir/2.1.0: + resolution: { integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== } + engines: { node: '>=6' } + dependencies: + pify: 4.0.1 + semver: 5.7.1 + dev: true + + /make-dir/3.1.0: + resolution: { integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== } + engines: { node: '>=8' } + dependencies: + semver: 6.3.0 + dev: true + + /map-cache/0.2.2: + resolution: { integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== } + engines: { node: '>=0.10.0' } + dev: true + + /map-obj/1.0.1: + resolution: { integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== } + engines: { node: '>=0.10.0' } + dev: true + + /map-obj/4.2.0: + resolution: { integrity: sha512-NAq0fCmZYGz9UFEQyndp7sisrow4GroyGeKluyKC/chuITZsPyOyC1UJZPJlVFImhXdROIP5xqouRLThT3BbpQ== } + engines: { node: '>=8' } + dev: true + + /map-visit/1.0.0: + resolution: { integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== } + engines: { node: '>=0.10.0' } + dependencies: + object-visit: 1.0.1 + dev: true + + /matcher/1.1.1: + resolution: { integrity: sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg== } + engines: { node: '>=4' } + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /md5.js/1.3.5: + resolution: { integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== } + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /mdn-data/2.0.14: + resolution: { integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== } + dev: true + + /mdn-data/2.0.4: + resolution: { integrity: sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== } + dev: true + + /media-typer/0.3.0: + resolution: { integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== } + engines: { node: '>= 0.6' } + dev: true + + /memory-fs/0.2.0: + resolution: { integrity: sha512-+y4mDxU4rvXXu5UDSGCGNiesFmwCHuefGMoPCO1WYucNYj7DsLqrFaa2fXVI0H+NNiPTwwzKwspn9yTZqUGqng== } + dev: true + + /memory-fs/0.4.1: + resolution: { integrity: sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ== } + dependencies: + errno: 0.1.8 + readable-stream: 2.3.7 + dev: true + + /memory-fs/0.5.0: + resolution: { integrity: sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== } + engines: { node: '>=4.3.0 <5.0.0 || >=5.10' } + dependencies: + errno: 0.1.8 + readable-stream: 2.3.7 + dev: true + + /meow/8.1.2: + resolution: { integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== } + engines: { node: '>=10' } + dependencies: + '@types/minimist': 1.2.1 + camelcase-keys: 6.2.2 + decamelize-keys: 1.1.0 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.2 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.0 + type-fest: 0.18.1 + yargs-parser: 20.2.7 + dev: true + + /merge-descriptors/1.0.1: + resolution: { integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== } + dev: true + + /merge-options/1.0.1: + resolution: { integrity: sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg== } + engines: { node: '>=4' } + dependencies: + is-plain-obj: 1.1.0 + dev: true + + /merge-source-map/1.1.0: + resolution: { integrity: sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== } + dependencies: + source-map: 0.6.1 + dev: true + + /merge-stream/2.0.0: + resolution: { integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== } + dev: true + + /merge2/1.4.1: + resolution: { integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== } + engines: { node: '>= 8' } + dev: true + + /methods/1.1.2: + resolution: { integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== } + engines: { node: '>= 0.6' } + dev: true + + /microevent.ts/0.1.1: + resolution: { integrity: sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== } + dev: true + + /micromatch/3.1.0: + resolution: { integrity: sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g== } + engines: { node: '>=0.10.0' } + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 1.0.0 + extend-shallow: 2.0.1 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 5.1.0 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /micromatch/3.1.10: + resolution: { integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== } + engines: { node: '>=0.10.0' } + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /micromatch/3.1.10_supports-color@6.1.0: + resolution: { integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== } + engines: { node: '>=0.10.0' } + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2_supports-color@6.1.0 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4_supports-color@6.1.0 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13_supports-color@6.1.0 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2_supports-color@6.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /micromatch/4.0.2: + resolution: { integrity: sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== } + engines: { node: '>=8' } + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /miller-rabin/4.0.1: + resolution: { integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== } + hasBin: true + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + dev: true + + /mime-db/1.46.0: + resolution: { integrity: sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ== } + engines: { node: '>= 0.6' } + + /mime-types/2.1.29: + resolution: { integrity: sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ== } + engines: { node: '>= 0.6' } + dependencies: + mime-db: 1.46.0 + + /mime/1.6.0: + resolution: { integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== } + engines: { node: '>=4' } + hasBin: true + dev: true + + /mime/2.5.2: + resolution: { integrity: sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== } + engines: { node: '>=4.0.0' } + hasBin: true + dev: true + + /mimic-fn/1.2.0: + resolution: { integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== } + engines: { node: '>=4' } + dev: true + + /mimic-fn/2.1.0: + resolution: { integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== } + engines: { node: '>=6' } + dev: true + + /min-indent/1.0.1: + resolution: { integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== } + engines: { node: '>=4' } + dev: true + + /mini-css-extract-plugin/0.9.0_webpack@4.46.0: + resolution: { integrity: sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== } + engines: { node: '>= 6.9.0' } + peerDependencies: + webpack: ^4.4.0 + dependencies: + loader-utils: 1.4.2 + normalize-url: 1.9.1 + schema-utils: 1.0.0 + webpack: 4.46.0 + webpack-sources: 1.4.3 + dev: true + + /minimalistic-assert/1.0.1: + resolution: { integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== } + dev: true + + /minimalistic-crypto-utils/1.0.1: + resolution: { integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== } + dev: true + + /minimatch/3.0.4: + resolution: { integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== } + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimist-options/4.1.0: + resolution: { integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== } + engines: { node: '>= 6' } + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + dev: true + + /minimist/1.2.5: + resolution: { integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== } + + /minipass-collect/1.0.2: + resolution: { integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== } + engines: { node: '>= 8' } + dependencies: + minipass: 3.1.3 + dev: true + + /minipass-flush/1.0.5: + resolution: { integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== } + engines: { node: '>= 8' } + dependencies: + minipass: 3.1.3 + dev: true + + /minipass-pipeline/1.2.4: + resolution: { integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== } + engines: { node: '>=8' } + dependencies: + minipass: 3.1.3 + dev: true + + /minipass/3.1.3: + resolution: { integrity: sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== } + engines: { node: '>=8' } + dependencies: + yallist: 4.0.0 + dev: true + + /mississippi/3.0.0: + resolution: { integrity: sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== } + engines: { node: '>=4.0.0' } + dependencies: + concat-stream: 1.6.2 + duplexify: 3.7.1 + end-of-stream: 1.4.4 + flush-write-stream: 1.1.1 + from2: 2.3.0 + parallel-transform: 1.2.0 + pump: 3.0.0 + pumpify: 1.5.1 + stream-each: 1.2.3 + through2: 2.0.5 + dev: true + + /mitt/1.1.2: + resolution: { integrity: sha512-3btxP0O9iGADGWAkteQ8mzDtEspZqu4I32y4GZYCV5BrwtzdcRpF4dQgNdJadCrbBx7Lu6Sq9AVrerMHR0Hkmw== } + dev: true + + /mixin-deep/1.3.2: + resolution: { integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== } + engines: { node: '>=0.10.0' } + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + dev: true + + /mkdirp/0.5.5: + resolution: { integrity: sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== } + hasBin: true + dependencies: + minimist: 1.2.5 + dev: true + + /ml-array-max/1.2.4: + resolution: { integrity: sha512-BlEeg80jI0tW6WaPyGxf5Sa4sqvcyY6lbSn5Vcv44lp1I2GR6AWojfUvLnGTNsIXrZ8uqWmo8VcG1WpkI2ONMQ== } + dependencies: + is-any-array: 2.0.0 + dev: false + + /ml-array-min/1.2.3: + resolution: { integrity: sha512-VcZ5f3VZ1iihtrGvgfh/q0XlMobG6GQ8FsNyQXD3T+IlstDv85g8kfV0xUG1QPRO/t21aukaJowDzMTc7j5V6Q== } + dependencies: + is-any-array: 2.0.0 + dev: false + + /ml-array-rescale/1.3.7: + resolution: { integrity: sha512-48NGChTouvEo9KBctDfHC3udWnQKNKEWN0ziELvY3KG25GR5cA8K8wNVzracsqSW1QEkAXjTNx+ycgAv06/1mQ== } + dependencies: + is-any-array: 2.0.0 + ml-array-max: 1.2.4 + ml-array-min: 1.2.3 + dev: false + + /ml-matrix/6.10.4: + resolution: { integrity: sha512-rUyEhfNPzqFsltYwvjNeYQXlYEaVea3KgzcJKJteQUj2WVAGFx9fLNRjtMR9mg2B6bd5buxlmkZmxM4hmO+SKg== } + dependencies: + is-any-array: 2.0.0 + ml-array-rescale: 1.3.7 + dev: false + + /move-concurrently/1.0.1: + resolution: { integrity: sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ== } + dependencies: + aproba: 1.2.0 + copy-concurrently: 1.0.5 + fs-write-stream-atomic: 1.0.10 + mkdirp: 0.5.5 + rimraf: 2.7.1 + run-queue: 1.0.3 + dev: true + + /ms/2.0.0: + resolution: { integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== } + dev: true + + /ms/2.1.1: + resolution: { integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== } + dev: true + + /ms/2.1.2: + resolution: { integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== } + dev: true + + /ms/2.1.3: + resolution: { integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== } + dev: true + + /multicast-dns-service-types/1.1.0: + resolution: { integrity: sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ== } + dev: true + + /multicast-dns/6.2.3: + resolution: { integrity: sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== } + hasBin: true + dependencies: + dns-packet: 1.3.1 + thunky: 1.1.0 + dev: true + + /mute-stream/0.0.8: + resolution: { integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== } + dev: true + + /mz/2.7.0: + resolution: { integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== } + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: true + + /nan/2.15.0: + resolution: { integrity: sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== } + requiresBuild: true + dev: true + optional: true + + /nanoid/3.3.6: + resolution: { integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + hasBin: true + dev: true + + /nanomatch/1.2.13: + resolution: { integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== } + engines: { node: '>=0.10.0' } + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /nanomatch/1.2.13_supports-color@6.1.0: + resolution: { integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== } + engines: { node: '>=0.10.0' } + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2_supports-color@6.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /natural-compare/1.4.0: + resolution: { integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== } + dev: true + + /negotiator/0.6.2: + resolution: { integrity: sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== } + engines: { node: '>= 0.6' } + dev: true + + /neo-async/2.6.2: + resolution: { integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== } + dev: true + + /nice-try/1.0.5: + resolution: { integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== } + dev: true + + /no-case/2.3.2: + resolution: { integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== } + dependencies: + lower-case: 1.1.4 + dev: true + + /node-forge/0.10.0: + resolution: { integrity: sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== } + engines: { node: '>= 6.0.0' } + dev: true + + /node-ipc/9.1.4: + resolution: { integrity: sha512-A+f0mn2KxUt1uRTSd5ktxQUsn2OEhj5evo7NUi/powBzMSZ0vocdzDjlq9QN2v3LH6CJi3e5xAenpZ1QwU5A8g== } + engines: { node: '>=8.0.0' } + dependencies: + event-pubsub: 4.3.0 + js-message: 1.0.7 + js-queue: 2.0.2 + dev: true + + /node-libs-browser/2.2.1: + resolution: { integrity: sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== } + dependencies: + assert: 1.5.0 + browserify-zlib: 0.2.0 + buffer: 4.9.2 + console-browserify: 1.2.0 + constants-browserify: 1.0.0 + crypto-browserify: 3.12.0 + domain-browser: 1.2.0 + events: 3.3.0 + https-browserify: 1.0.0 + os-browserify: 0.3.0 + path-browserify: 0.0.1 + process: 0.11.10 + punycode: 1.4.1 + querystring-es3: 0.2.1 + readable-stream: 2.3.7 + stream-browserify: 2.0.2 + stream-http: 2.8.3 + string_decoder: 1.3.0 + timers-browserify: 2.0.12 + tty-browserify: 0.0.0 + url: 0.11.0 + util: 0.11.1 + vm-browserify: 1.1.2 + dev: true + + /node-releases/1.1.71: + resolution: { integrity: sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== } + dev: true + + /normalize-package-data/2.5.0: + resolution: { integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== } + dependencies: + hosted-git-info: 2.8.8 + resolve: 1.20.0 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-package-data/3.0.2: + resolution: { integrity: sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg== } + engines: { node: '>=10' } + dependencies: + hosted-git-info: 4.0.1 + resolve: 1.20.0 + semver: 7.3.4 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-path/1.0.0: + resolution: { integrity: sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA== } + engines: { node: '>=0.10.0' } + dev: true + + /normalize-path/2.1.1: + resolution: { integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== } + engines: { node: '>=0.10.0' } + dependencies: + remove-trailing-separator: 1.1.0 + dev: true + + /normalize-path/3.0.0: + resolution: { integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== } + engines: { node: '>=0.10.0' } + dev: true + + /normalize-range/0.1.2: + resolution: { integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== } + engines: { node: '>=0.10.0' } + dev: true + + /normalize-url/1.9.1: + resolution: { integrity: sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ== } + engines: { node: '>=4' } + dependencies: + object-assign: 4.1.1 + prepend-http: 1.0.4 + query-string: 4.3.4 + sort-keys: 1.1.2 + dev: true + + /normalize-url/3.3.0: + resolution: { integrity: sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== } + engines: { node: '>=6' } + dev: true + + /normalize-wheel/1.0.1: + resolution: { integrity: sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA== } + dev: false + + /npm-path/2.0.4: + resolution: { integrity: sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw== } + engines: { node: '>=0.8' } + hasBin: true + dependencies: + which: 1.3.1 + dev: true + + /npm-run-path/2.0.2: + resolution: { integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== } + engines: { node: '>=4' } + dependencies: + path-key: 2.0.1 + dev: true + + /npm-run-path/4.0.1: + resolution: { integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== } + engines: { node: '>=8' } + dependencies: + path-key: 3.1.1 + dev: true + + /npm-which/3.0.1: + resolution: { integrity: sha512-CM8vMpeFQ7MAPin0U3wzDhSGV0hMHNwHU0wjo402IVizPDrs45jSfSuoC+wThevY88LQti8VvaAnqYAeVy3I1A== } + engines: { node: '>=4.2.0' } + hasBin: true + dependencies: + commander: 2.20.3 + npm-path: 2.0.4 + which: 1.3.1 + dev: true + + /nprogress/0.2.0: + resolution: { integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== } + dev: false + + /nth-check/1.0.2: + resolution: { integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== } + dependencies: + boolbase: 1.0.0 + dev: true + + /nth-check/2.0.0: + resolution: { integrity: sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q== } + dependencies: + boolbase: 1.0.0 + dev: true + + /num2fraction/1.2.2: + resolution: { integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg== } + dev: true + + /number-is-nan/1.0.1: + resolution: { integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== } + engines: { node: '>=0.10.0' } + dev: true + + /oauth-sign/0.9.0: + resolution: { integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== } + dev: true + + /object-assign/4.1.1: + resolution: { integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== } + engines: { node: '>=0.10.0' } + dev: true + + /object-copy/0.1.0: + resolution: { integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== } + engines: { node: '>=0.10.0' } + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + dev: true + + /object-hash/1.3.1: + resolution: { integrity: sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== } + engines: { node: '>= 0.10.0' } + dev: true + + /object-inspect/1.9.0: + resolution: { integrity: sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== } + + /object-is/1.1.5: + resolution: { integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + dev: true + + /object-keys/1.1.1: + resolution: { integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== } + engines: { node: '>= 0.4' } + dev: true + + /object-visit/1.0.1: + resolution: { integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== } + engines: { node: '>=0.10.0' } + dependencies: + isobject: 3.0.1 + dev: true + + /object.assign/4.1.2: + resolution: { integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + has-symbols: 1.0.2 + object-keys: 1.1.1 + dev: true + + /object.getownpropertydescriptors/2.1.2: + resolution: { integrity: sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== } + engines: { node: '>= 0.8' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + es-abstract: 1.18.0 + dev: true + + /object.pick/1.3.0: + resolution: { integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== } + engines: { node: '>=0.10.0' } + dependencies: + isobject: 3.0.1 + dev: true + + /object.values/1.1.3: + resolution: { integrity: sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw== } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + es-abstract: 1.18.0 + has: 1.0.3 + dev: true + + /obuf/1.1.2: + resolution: { integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== } + dev: true + + /on-finished/2.3.0: + resolution: { integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== } + engines: { node: '>= 0.8' } + dependencies: + ee-first: 1.1.1 + dev: true + + /on-headers/1.0.2: + resolution: { integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== } + engines: { node: '>= 0.8' } + dev: true + + /once/1.4.0: + resolution: { integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== } + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime/2.0.1: + resolution: { integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== } + engines: { node: '>=4' } + dependencies: + mimic-fn: 1.2.0 + dev: true + + /onetime/5.1.2: + resolution: { integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== } + engines: { node: '>=6' } + dependencies: + mimic-fn: 2.1.0 + dev: true + + /open/6.4.0: + resolution: { integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== } + engines: { node: '>=8' } + dependencies: + is-wsl: 1.1.0 + dev: true + + /opener/1.5.2: + resolution: { integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== } + hasBin: true + dev: true + + /opn/5.5.0: + resolution: { integrity: sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== } + engines: { node: '>=4' } + dependencies: + is-wsl: 1.1.0 + dev: true + + /optionator/0.8.3: + resolution: { integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== } + engines: { node: '>= 0.8.0' } + dependencies: + deep-is: 0.1.3 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.3 + dev: true + + /ora/3.4.0: + resolution: { integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg== } + engines: { node: '>=6' } + dependencies: + chalk: 2.4.2 + cli-cursor: 2.1.0 + cli-spinners: 2.6.0 + log-symbols: 2.2.0 + strip-ansi: 5.2.0 + wcwidth: 1.0.1 + dev: true + + /ora/5.4.0: + resolution: { integrity: sha512-1StwyXQGoU6gdjYkyVcqOLnVlbKj+6yPNNOxJVgpt9t4eksKjiriiHuxktLYkgllwk+D6MbC4ihH84L1udRXPg== } + engines: { node: '>=10' } + dependencies: + bl: 4.1.0 + chalk: 4.1.1 + cli-cursor: 3.1.0 + cli-spinners: 2.6.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 + dev: true + + /original/1.0.2: + resolution: { integrity: sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== } + dependencies: + url-parse: 1.5.1 + dev: true + + /os-browserify/0.3.0: + resolution: { integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== } + dev: true + + /os-tmpdir/1.0.2: + resolution: { integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== } + engines: { node: '>=0.10.0' } + dev: true + + /p-finally/1.0.0: + resolution: { integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== } + engines: { node: '>=4' } + dev: true + + /p-finally/2.0.1: + resolution: { integrity: sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== } + engines: { node: '>=8' } + dev: true + + /p-limit/1.3.0: + resolution: { integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== } + engines: { node: '>=4' } + dependencies: + p-try: 1.0.0 + dev: true + + /p-limit/2.3.0: + resolution: { integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== } + engines: { node: '>=6' } + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit/3.1.0: + resolution: { integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== } + engines: { node: '>=10' } + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate/2.0.0: + resolution: { integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== } + engines: { node: '>=4' } + dependencies: + p-limit: 1.3.0 + dev: true + + /p-locate/3.0.0: + resolution: { integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== } + engines: { node: '>=6' } + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate/4.1.0: + resolution: { integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== } + engines: { node: '>=8' } + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate/5.0.0: + resolution: { integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== } + engines: { node: '>=10' } + dependencies: + p-limit: 3.1.0 + dev: true + + /p-map/1.2.0: + resolution: { integrity: sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== } + engines: { node: '>=4' } + dev: true + + /p-map/2.1.0: + resolution: { integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== } + engines: { node: '>=6' } + dev: true + + /p-map/3.0.0: + resolution: { integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== } + engines: { node: '>=8' } + dependencies: + aggregate-error: 3.1.0 + dev: true + + /p-retry/3.0.1: + resolution: { integrity: sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== } + engines: { node: '>=6' } + dependencies: + retry: 0.12.0 + dev: true + + /p-try/1.0.0: + resolution: { integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== } + engines: { node: '>=4' } + dev: true + + /p-try/2.2.0: + resolution: { integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== } + engines: { node: '>=6' } + dev: true + + /pako/1.0.11: + resolution: { integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== } + dev: true + + /parallel-transform/1.2.0: + resolution: { integrity: sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== } + dependencies: + cyclist: 1.0.1 + inherits: 2.0.4 + readable-stream: 2.3.7 + dev: true + + /param-case/2.1.1: + resolution: { integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w== } + dependencies: + no-case: 2.3.2 + dev: true + + /parent-module/1.0.1: + resolution: { integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== } + engines: { node: '>=6' } + dependencies: + callsites: 3.1.0 + dev: true + + /parse-asn1/5.1.6: + resolution: { integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== } + dependencies: + asn1.js: 5.4.1 + browserify-aes: 1.2.0 + evp_bytestokey: 1.0.3 + pbkdf2: 3.1.1 + safe-buffer: 5.2.1 + dev: true + + /parse-json/2.2.0: + resolution: { integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== } + engines: { node: '>=0.10.0' } + dependencies: + error-ex: 1.3.2 + dev: true + + /parse-json/4.0.0: + resolution: { integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== } + engines: { node: '>=4' } + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + dev: true + + /parse-json/5.2.0: + resolution: { integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== } + engines: { node: '>=8' } + dependencies: + '@babel/code-frame': 7.12.13 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.1.6 + dev: true + + /parse5-htmlparser2-tree-adapter/6.0.1: + resolution: { integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== } + dependencies: + parse5: 6.0.1 + dev: true + + /parse5/5.1.1: + resolution: { integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== } + dev: true + + /parse5/6.0.1: + resolution: { integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== } + dev: true + + /parseurl/1.3.3: + resolution: { integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== } + engines: { node: '>= 0.8' } + dev: true + + /pascalcase/0.1.1: + resolution: { integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== } + engines: { node: '>=0.10.0' } + dev: true + + /path-browserify/0.0.1: + resolution: { integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== } + dev: true + + /path-dirname/1.0.2: + resolution: { integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== } + dev: true + + /path-exists/2.1.0: + resolution: { integrity: sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== } + engines: { node: '>=0.10.0' } + dependencies: + pinkie-promise: 2.0.1 + dev: true + + /path-exists/3.0.0: + resolution: { integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== } + engines: { node: '>=4' } + dev: true + + /path-exists/4.0.0: + resolution: { integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== } + engines: { node: '>=8' } + dev: true + + /path-is-absolute/1.0.1: + resolution: { integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== } + engines: { node: '>=0.10.0' } + dev: true + + /path-is-inside/1.0.2: + resolution: { integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== } + dev: true + + /path-key/2.0.1: + resolution: { integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== } + engines: { node: '>=4' } + dev: true + + /path-key/3.1.1: + resolution: { integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== } + engines: { node: '>=8' } + dev: true + + /path-parse/1.0.6: + resolution: { integrity: sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== } + dev: true + + /path-to-regexp/0.1.7: + resolution: { integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== } + dev: true + + /path-type/2.0.0: + resolution: { integrity: sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ== } + engines: { node: '>=4' } + dependencies: + pify: 2.3.0 + dev: true + + /path-type/3.0.0: + resolution: { integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== } + engines: { node: '>=4' } + dependencies: + pify: 3.0.0 + dev: true + + /path-type/4.0.0: + resolution: { integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== } + engines: { node: '>=8' } + dev: true + + /pbkdf2/3.1.1: + resolution: { integrity: sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== } + engines: { node: '>=0.12' } + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + + /performance-now/2.1.0: + resolution: { integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== } + dev: true + + /picocolors/1.0.0: + resolution: { integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== } + dev: true + + /picomatch/2.3.1: + resolution: { integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== } + engines: { node: '>=8.6' } + dev: true + + /pify/2.3.0: + resolution: { integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== } + engines: { node: '>=0.10.0' } + dev: true + + /pify/3.0.0: + resolution: { integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== } + engines: { node: '>=4' } + dev: true + + /pify/4.0.1: + resolution: { integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== } + engines: { node: '>=6' } + dev: true + + /pinkie-promise/2.0.1: + resolution: { integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== } + engines: { node: '>=0.10.0' } + dependencies: + pinkie: 2.0.4 + dev: true + + /pinkie/2.0.4: + resolution: { integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== } + engines: { node: '>=0.10.0' } + dev: true + + /pkg-dir/1.0.0: + resolution: { integrity: sha512-c6pv3OE78mcZ92ckebVDqg0aWSoKhOTbwCV6qbCWMk546mAL9pZln0+QsN/yQ7fkucd4+yJPLrCBXNt8Ruk+Eg== } + engines: { node: '>=0.10.0' } + dependencies: + find-up: 1.1.2 + dev: true + + /pkg-dir/2.0.0: + resolution: { integrity: sha512-ojakdnUgL5pzJYWw2AIDEupaQCX5OPbM688ZevubICjdIX01PRSYKqm33fJoCOJBRseYCTUlQRnBNX+Pchaejw== } + engines: { node: '>=4' } + dependencies: + find-up: 2.1.0 + dev: true + + /pkg-dir/3.0.0: + resolution: { integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== } + engines: { node: '>=6' } + dependencies: + find-up: 3.0.0 + dev: true + + /pkg-dir/4.2.0: + resolution: { integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== } + engines: { node: '>=8' } + dependencies: + find-up: 4.1.0 + dev: true + + /please-upgrade-node/3.2.0: + resolution: { integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== } + dependencies: + semver-compare: 1.0.0 + dev: true + + /pnp-webpack-plugin/1.6.4_typescript@3.9.9: + resolution: { integrity: sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== } + engines: { node: '>=6' } + dependencies: + ts-pnp: 1.2.0_typescript@3.9.9 + transitivePeerDependencies: + - typescript + dev: true + + /portfinder/1.0.28: + resolution: { integrity: sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== } + engines: { node: '>= 0.12.0' } + dependencies: + async: 2.6.3 + debug: 3.2.7 + mkdirp: 0.5.5 + transitivePeerDependencies: + - supports-color + dev: true + + /portfinder/1.0.28_supports-color@6.1.0: + resolution: { integrity: sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== } + engines: { node: '>= 0.12.0' } + dependencies: + async: 2.6.3 + debug: 3.2.7_supports-color@6.1.0 + mkdirp: 0.5.5 + transitivePeerDependencies: + - supports-color + dev: true + + /posix-character-classes/0.1.1: + resolution: { integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== } + engines: { node: '>=0.10.0' } + dev: true + + /postcss-calc/7.0.5: + resolution: { integrity: sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== } + dependencies: + postcss: 7.0.35 + postcss-selector-parser: 6.0.4 + postcss-value-parser: 4.1.0 + dev: true + + /postcss-colormin/4.0.3: + resolution: { integrity: sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== } + engines: { node: '>=6.9.0' } + dependencies: + browserslist: 4.16.3 + color: 3.1.3 + has: 1.0.3 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-convert-values/4.0.1: + resolution: { integrity: sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== } + engines: { node: '>=6.9.0' } + dependencies: + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-discard-comments/4.0.2: + resolution: { integrity: sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== } + engines: { node: '>=6.9.0' } + dependencies: + postcss: 7.0.35 + dev: true + + /postcss-discard-duplicates/4.0.2: + resolution: { integrity: sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== } + engines: { node: '>=6.9.0' } + dependencies: + postcss: 7.0.35 + dev: true + + /postcss-discard-empty/4.0.1: + resolution: { integrity: sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== } + engines: { node: '>=6.9.0' } + dependencies: + postcss: 7.0.35 + dev: true + + /postcss-discard-overridden/4.0.1: + resolution: { integrity: sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== } + engines: { node: '>=6.9.0' } + dependencies: + postcss: 7.0.35 + dev: true + + /postcss-load-config/2.1.2: + resolution: { integrity: sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== } + engines: { node: '>= 4' } + dependencies: + cosmiconfig: 5.2.1 + import-cwd: 2.1.0 + dev: true + + /postcss-loader/3.0.0: + resolution: { integrity: sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== } + engines: { node: '>= 6' } + dependencies: + loader-utils: 1.4.2 + postcss: 7.0.35 + postcss-load-config: 2.1.2 + schema-utils: 1.0.0 + dev: true + + /postcss-merge-longhand/4.0.11: + resolution: { integrity: sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== } + engines: { node: '>=6.9.0' } + dependencies: + css-color-names: 0.0.4 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + stylehacks: 4.0.3 + dev: true + + /postcss-merge-rules/4.0.3: + resolution: { integrity: sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== } + engines: { node: '>=6.9.0' } + dependencies: + browserslist: 4.16.3 + caniuse-api: 3.0.0 + cssnano-util-same-parent: 4.0.1 + postcss: 7.0.35 + postcss-selector-parser: 3.1.2 + vendors: 1.0.4 + dev: true + + /postcss-minify-font-values/4.0.2: + resolution: { integrity: sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== } + engines: { node: '>=6.9.0' } + dependencies: + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-minify-gradients/4.0.2: + resolution: { integrity: sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== } + engines: { node: '>=6.9.0' } + dependencies: + cssnano-util-get-arguments: 4.0.0 + is-color-stop: 1.1.0 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-minify-params/4.0.2: + resolution: { integrity: sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== } + engines: { node: '>=6.9.0' } + dependencies: + alphanum-sort: 1.0.2 + browserslist: 4.16.3 + cssnano-util-get-arguments: 4.0.0 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + uniqs: 2.0.0 + dev: true + + /postcss-minify-selectors/4.0.2: + resolution: { integrity: sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== } + engines: { node: '>=6.9.0' } + dependencies: + alphanum-sort: 1.0.2 + has: 1.0.3 + postcss: 7.0.35 + postcss-selector-parser: 3.1.2 + dev: true + + /postcss-modules-extract-imports/2.0.0: + resolution: { integrity: sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== } + engines: { node: '>= 6' } + dependencies: + postcss: 7.0.35 + dev: true + + /postcss-modules-local-by-default/3.0.3: + resolution: { integrity: sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== } + engines: { node: '>= 6' } + dependencies: + icss-utils: 4.1.1 + postcss: 7.0.35 + postcss-selector-parser: 6.0.4 + postcss-value-parser: 4.1.0 + dev: true + + /postcss-modules-scope/2.2.0: + resolution: { integrity: sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== } + engines: { node: '>= 6' } + dependencies: + postcss: 7.0.35 + postcss-selector-parser: 6.0.4 + dev: true + + /postcss-modules-values/3.0.0: + resolution: { integrity: sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== } + dependencies: + icss-utils: 4.1.1 + postcss: 7.0.35 + dev: true + + /postcss-normalize-charset/4.0.1: + resolution: { integrity: sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== } + engines: { node: '>=6.9.0' } + dependencies: + postcss: 7.0.35 + dev: true + + /postcss-normalize-display-values/4.0.2: + resolution: { integrity: sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== } + engines: { node: '>=6.9.0' } + dependencies: + cssnano-util-get-match: 4.0.0 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-positions/4.0.2: + resolution: { integrity: sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== } + engines: { node: '>=6.9.0' } + dependencies: + cssnano-util-get-arguments: 4.0.0 + has: 1.0.3 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-repeat-style/4.0.2: + resolution: { integrity: sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== } + engines: { node: '>=6.9.0' } + dependencies: + cssnano-util-get-arguments: 4.0.0 + cssnano-util-get-match: 4.0.0 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-string/4.0.2: + resolution: { integrity: sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== } + engines: { node: '>=6.9.0' } + dependencies: + has: 1.0.3 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-timing-functions/4.0.2: + resolution: { integrity: sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== } + engines: { node: '>=6.9.0' } + dependencies: + cssnano-util-get-match: 4.0.0 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-unicode/4.0.1: + resolution: { integrity: sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== } + engines: { node: '>=6.9.0' } + dependencies: + browserslist: 4.16.3 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-url/4.0.1: + resolution: { integrity: sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== } + engines: { node: '>=6.9.0' } + dependencies: + is-absolute-url: 2.1.0 + normalize-url: 3.3.0 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-whitespace/4.0.2: + resolution: { integrity: sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== } + engines: { node: '>=6.9.0' } + dependencies: + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-ordered-values/4.1.2: + resolution: { integrity: sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== } + engines: { node: '>=6.9.0' } + dependencies: + cssnano-util-get-arguments: 4.0.0 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-prefix-selector/1.9.0: + resolution: { integrity: sha512-tTUHUNP+/Qfgg+fvbljUIeLs1ijICWb8+CT3bZM2joE2pkd+EnuBzSfZNHY2RMmozNRp44yEFv+I+6IIiLcoCg== } + dependencies: + postcss: 7.0.35 + dev: true + + /postcss-reduce-initial/4.0.3: + resolution: { integrity: sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== } + engines: { node: '>=6.9.0' } + dependencies: + browserslist: 4.16.3 + caniuse-api: 3.0.0 + has: 1.0.3 + postcss: 7.0.35 + dev: true + + /postcss-reduce-transforms/4.0.2: + resolution: { integrity: sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== } + engines: { node: '>=6.9.0' } + dependencies: + cssnano-util-get-match: 4.0.0 + has: 1.0.3 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-selector-parser/3.1.2: + resolution: { integrity: sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== } + engines: { node: '>=8' } + dependencies: + dot-prop: 5.3.0 + indexes-of: 1.0.1 + uniq: 1.0.1 + dev: true + + /postcss-selector-parser/6.0.4: + resolution: { integrity: sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== } + engines: { node: '>=4' } + dependencies: + cssesc: 3.0.0 + indexes-of: 1.0.1 + uniq: 1.0.1 + util-deprecate: 1.0.2 + dev: true + + /postcss-svgo/4.0.2: + resolution: { integrity: sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== } + engines: { node: '>=6.9.0' } + dependencies: + is-svg: 3.0.0 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + svgo: 1.3.2 + dev: true + + /postcss-unique-selectors/4.0.1: + resolution: { integrity: sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== } + engines: { node: '>=6.9.0' } + dependencies: + alphanum-sort: 1.0.2 + postcss: 7.0.35 + uniqs: 2.0.0 + dev: true + + /postcss-value-parser/3.3.1: + resolution: { integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== } + dev: true + + /postcss-value-parser/4.1.0: + resolution: { integrity: sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== } + dev: true + + /postcss/5.2.18: + resolution: { integrity: sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== } + engines: { node: '>=0.12' } + dependencies: + chalk: 1.1.3 + js-base64: 2.6.4 + source-map: 0.5.7 + supports-color: 3.2.3 + dev: true + + /postcss/7.0.35: + resolution: { integrity: sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== } + engines: { node: '>=6.0.0' } + dependencies: + chalk: 2.4.2 + source-map: 0.6.1 + supports-color: 6.1.0 + dev: true + + /postcss/8.4.31: + resolution: { integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== } + engines: { node: ^10 || ^12 || >=14 } + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + + /posthtml-parser/0.2.1: + resolution: { integrity: sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw== } + dependencies: + htmlparser2: 3.10.1 + isobject: 2.1.0 + dev: true + + /posthtml-rename-id/1.0.12: + resolution: { integrity: sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw== } + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /posthtml-render/1.3.1: + resolution: { integrity: sha512-eSToKjNLu0FiF76SSGMHjOFXYzAc/CJqi677Sq6hYvcvFCBtD6de/W5l+0IYPf7ypscqAfjCttxvTdMJt5Gj8Q== } + engines: { node: '>=10' } + dev: true + + /posthtml-svg-mode/1.0.3: + resolution: { integrity: sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ== } + dependencies: + merge-options: 1.0.1 + posthtml: 0.9.2 + posthtml-parser: 0.2.1 + posthtml-render: 1.3.1 + dev: true + + /posthtml/0.9.2: + resolution: { integrity: sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q== } + engines: { node: '>=0.10.0' } + dependencies: + posthtml-parser: 0.2.1 + posthtml-render: 1.3.1 + dev: true + + /prelude-ls/1.1.2: + resolution: { integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== } + engines: { node: '>= 0.8.0' } + dev: true + + /prepend-http/1.0.4: + resolution: { integrity: sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg== } + engines: { node: '>=0.10.0' } + dev: true + + /prettier/1.19.1: + resolution: { integrity: sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== } + engines: { node: '>=4' } + hasBin: true + requiresBuild: true + dev: true + optional: true + + /prettier/2.3.0: + resolution: { integrity: sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w== } + engines: { node: '>=10.13.0' } + hasBin: true + dev: true + + /pretty-error/2.1.2: + resolution: { integrity: sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== } + dependencies: + lodash: 4.17.21 + renderkid: 2.0.5 + dev: true + + /private/0.1.8: + resolution: { integrity: sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== } + engines: { node: '>= 0.6' } + dev: true + + /process-nextick-args/2.0.1: + resolution: { integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== } + dev: true + + /process/0.11.10: + resolution: { integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== } + engines: { node: '>= 0.6.0' } + dev: true + + /progress/2.0.3: + resolution: { integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== } + engines: { node: '>=0.4.0' } + dev: true + + /promise-inflight/1.0.1: + resolution: { integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== } + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + dev: true + + /property-expr/1.5.1: + resolution: { integrity: sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g== } + dev: true + + /proxy-addr/2.0.6: + resolution: { integrity: sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== } + engines: { node: '>= 0.10' } + dependencies: + forwarded: 0.1.2 + ipaddr.js: 1.9.1 + dev: true + + /prr/1.0.1: + resolution: { integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== } + dev: true + + /pseudomap/1.0.2: + resolution: { integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== } + dev: true + + /psl/1.8.0: + resolution: { integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== } + dev: true + + /public-encrypt/4.0.3: + resolution: { integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== } + dependencies: + bn.js: 4.12.0 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + parse-asn1: 5.1.6 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + dev: true + + /pump/2.0.1: + resolution: { integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== } + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + + /pump/3.0.0: + resolution: { integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== } + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + + /pumpify/1.5.1: + resolution: { integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== } + dependencies: + duplexify: 3.7.1 + inherits: 2.0.4 + pump: 2.0.1 + dev: true + + /punycode/1.3.2: + resolution: { integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== } + dev: true + + /punycode/1.4.1: + resolution: { integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== } + dev: true + + /punycode/2.1.1: + resolution: { integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== } + engines: { node: '>=6' } + + /q/1.5.1: + resolution: { integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== } + engines: { node: '>=0.6.0', teleport: '>=0.2.0' } + dev: true + + /qs/6.10.0: + resolution: { integrity: sha512-yjACOWijC6L/kmPZZAsVBNY2zfHSIbpdpL977quseu56/8BZ2LoF5axK2bGhbzhVKt7V9xgWTtpyLbxwIoER0Q== } + engines: { node: '>=0.6' } + dependencies: + side-channel: 1.0.4 + dev: false + + /qs/6.5.2: + resolution: { integrity: sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== } + engines: { node: '>=0.6' } + dev: true + + /qs/6.7.0: + resolution: { integrity: sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== } + engines: { node: '>=0.6' } + dev: true + + /query-string/4.3.4: + resolution: { integrity: sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q== } + engines: { node: '>=0.10.0' } + dependencies: + object-assign: 4.1.1 + strict-uri-encode: 1.1.0 + dev: true + + /querystring-es3/0.2.1: + resolution: { integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== } + engines: { node: '>=0.4.x' } + dev: true + + /querystring/0.2.0: + resolution: { integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== } + engines: { node: '>=0.4.x' } + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + dev: true + + /querystring/0.2.1: + resolution: { integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== } + engines: { node: '>=0.4.x' } + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + dev: true + + /querystringify/2.2.0: + resolution: { integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== } + dev: true + + /quick-lru/4.0.1: + resolution: { integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== } + engines: { node: '>=8' } + dev: true + + /randombytes/2.1.0: + resolution: { integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== } + dependencies: + safe-buffer: 5.2.1 + dev: true + + /randomfill/1.0.4: + resolution: { integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== } + dependencies: + randombytes: 2.1.0 + safe-buffer: 5.2.1 + dev: true + + /range-parser/1.2.1: + resolution: { integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== } + engines: { node: '>= 0.6' } + dev: true + + /raw-body/2.4.0: + resolution: { integrity: sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== } + engines: { node: '>= 0.8' } + dependencies: + bytes: 3.1.0 + http-errors: 1.7.2 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: true + + /read-pkg-up/2.0.0: + resolution: { integrity: sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w== } + engines: { node: '>=4' } + dependencies: + find-up: 2.1.0 + read-pkg: 2.0.0 + dev: true + + /read-pkg-up/7.0.1: + resolution: { integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== } + engines: { node: '>=8' } + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: true + + /read-pkg/2.0.0: + resolution: { integrity: sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA== } + engines: { node: '>=4' } + dependencies: + load-json-file: 2.0.0 + normalize-package-data: 2.5.0 + path-type: 2.0.0 + dev: true + + /read-pkg/4.0.1: + resolution: { integrity: sha512-+UBirHHDm5J+3WDmLBZYSklRYg82nMlz+enn+GMZ22nSR2f4bzxmhso6rzQW/3mT2PVzpzDTiYIZahk8UmZ44w== } + engines: { node: '>=6' } + dependencies: + normalize-package-data: 2.5.0 + parse-json: 4.0.0 + pify: 3.0.0 + dev: true + + /read-pkg/5.2.0: + resolution: { integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== } + engines: { node: '>=8' } + dependencies: + '@types/normalize-package-data': 2.4.0 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + dev: true + + /readable-stream/1.0.34: + resolution: { integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== } + dependencies: + core-util-is: 1.0.2 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + dev: true + + /readable-stream/2.3.7: + resolution: { integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== } + dependencies: + core-util-is: 1.0.2 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: true + + /readable-stream/3.6.0: + resolution: { integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== } + engines: { node: '>= 6' } + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /readdirp/2.2.1: + resolution: { integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== } + engines: { node: '>=0.10' } + dependencies: + graceful-fs: 4.2.6 + micromatch: 3.1.10 + readable-stream: 2.3.7 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /readdirp/2.2.1_supports-color@6.1.0: + resolution: { integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== } + engines: { node: '>=0.10' } + dependencies: + graceful-fs: 4.2.6 + micromatch: 3.1.10_supports-color@6.1.0 + readable-stream: 2.3.7 + transitivePeerDependencies: + - supports-color + dev: true + + /readdirp/3.6.0: + resolution: { integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== } + engines: { node: '>=8.10.0' } + dependencies: + picomatch: 2.3.1 + dev: true + + /redent/3.0.0: + resolution: { integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== } + engines: { node: '>=8' } + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + dev: true + + /regenerate-unicode-properties/8.2.0: + resolution: { integrity: sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== } + engines: { node: '>=4' } + dependencies: + regenerate: 1.4.2 + dev: true + + /regenerate/1.4.2: + resolution: { integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== } + dev: true + + /regenerator-runtime/0.11.1: + resolution: { integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== } + + /regenerator-runtime/0.13.11: + resolution: { integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== } + + /regenerator-transform/0.10.1: + resolution: { integrity: sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== } + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + private: 0.1.8 + dev: true + + /regenerator-transform/0.14.5: + resolution: { integrity: sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== } + dependencies: + '@babel/runtime': 7.13.10 + dev: true + + /regex-not/1.0.2: + resolution: { integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== } + engines: { node: '>=0.10.0' } + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + dev: true + + /regexp.prototype.flags/1.3.1: + resolution: { integrity: sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + dev: true + + /regexpp/2.0.1: + resolution: { integrity: sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== } + engines: { node: '>=6.5.0' } + dev: true + + /regexpp/3.1.0: + resolution: { integrity: sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== } + engines: { node: '>=8' } + dev: true + + /regexpu-core/2.0.0: + resolution: { integrity: sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ== } + dependencies: + regenerate: 1.4.2 + regjsgen: 0.2.0 + regjsparser: 0.1.5 + dev: true + + /regexpu-core/4.7.1: + resolution: { integrity: sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== } + engines: { node: '>=4' } + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 8.2.0 + regjsgen: 0.5.2 + regjsparser: 0.6.7 + unicode-match-property-ecmascript: 1.0.4 + unicode-match-property-value-ecmascript: 1.2.0 + dev: true + + /regjsgen/0.2.0: + resolution: { integrity: sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g== } + dev: true + + /regjsgen/0.5.2: + resolution: { integrity: sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== } + dev: true + + /regjsparser/0.1.5: + resolution: { integrity: sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw== } + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + + /regjsparser/0.6.7: + resolution: { integrity: sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ== } + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + + /relateurl/0.2.7: + resolution: { integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== } + engines: { node: '>= 0.10' } + dev: true + + /remove-trailing-separator/1.1.0: + resolution: { integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== } + dev: true + + /renderkid/2.0.5: + resolution: { integrity: sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ== } + dependencies: + css-select: 2.1.0 + dom-converter: 0.2.0 + htmlparser2: 3.10.1 + lodash: 4.17.21 + strip-ansi: 3.0.1 + dev: true + + /repeat-element/1.1.3: + resolution: { integrity: sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== } + engines: { node: '>=0.10.0' } + dev: true + + /repeat-string/1.6.1: + resolution: { integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== } + engines: { node: '>=0.10' } + dev: true + + /request/2.88.2: + resolution: { integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== } + engines: { node: '>= 6' } + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + dependencies: + aws-sign2: 0.7.0 + aws4: 1.11.0 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.29 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.2 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + dev: true + + /require-directory/2.1.1: + resolution: { integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== } + engines: { node: '>=0.10.0' } + dev: true + + /require-main-filename/2.0.0: + resolution: { integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== } + dev: true + + /requires-port/1.0.0: + resolution: { integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== } + dev: true + + /resize-observer-polyfill/1.5.1: + resolution: { integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== } + dev: false + + /resolve-cwd/2.0.0: + resolution: { integrity: sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg== } + engines: { node: '>=4' } + dependencies: + resolve-from: 3.0.0 + dev: true + + /resolve-from/3.0.0: + resolution: { integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== } + engines: { node: '>=4' } + dev: true + + /resolve-from/4.0.0: + resolution: { integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== } + engines: { node: '>=4' } + dev: true + + /resolve-from/5.0.0: + resolution: { integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== } + engines: { node: '>=8' } + dev: true + + /resolve-global/1.0.0: + resolution: { integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw== } + engines: { node: '>=8' } + dependencies: + global-dirs: 0.1.1 + dev: true + + /resolve-url/0.2.1: + resolution: { integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== } + deprecated: https://github.com/lydell/resolve-url#deprecated + dev: true + + /resolve/1.20.0: + resolution: { integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== } + dependencies: + is-core-module: 2.2.0 + path-parse: 1.0.6 + dev: true + + /restore-cursor/2.0.0: + resolution: { integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== } + engines: { node: '>=4' } + dependencies: + onetime: 2.0.1 + signal-exit: 3.0.3 + dev: true + + /restore-cursor/3.1.0: + resolution: { integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== } + engines: { node: '>=8' } + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.3 + dev: true + + /ret/0.1.15: + resolution: { integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== } + engines: { node: '>=0.12' } + dev: true + + /retry/0.12.0: + resolution: { integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== } + engines: { node: '>= 4' } + dev: true + + /rgb-regex/1.0.1: + resolution: { integrity: sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w== } + dev: true + + /rgba-regex/1.0.0: + resolution: { integrity: sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg== } + dev: true + + /rimraf/2.6.3: + resolution: { integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== } + hasBin: true + dependencies: + glob: 7.1.6 + dev: true + + /rimraf/2.7.1: + resolution: { integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== } + hasBin: true + dependencies: + glob: 7.1.6 + dev: true + + /ripemd160/2.0.2: + resolution: { integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== } + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + dev: true + + /rollup/2.48.0: + resolution: { integrity: sha512-wl9ZSSSsi5579oscSDYSzGn092tCS076YB+TQrzsGuSfYyJeep8eEWj0eaRjuC5McuMNmcnR8icBqiE/FWNB1A== } + engines: { node: '>=10.0.0' } + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /run-async/2.4.1: + resolution: { integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== } + engines: { node: '>=0.12.0' } + dev: true + + /run-node/1.0.0: + resolution: { integrity: sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A== } + engines: { node: '>=4' } + hasBin: true + dev: true + + /run-queue/1.0.3: + resolution: { integrity: sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg== } + dependencies: + aproba: 1.2.0 + dev: true + + /rxjs/6.6.6: + resolution: { integrity: sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg== } + engines: { npm: '>=2.0.0' } + dependencies: + tslib: 1.14.1 + dev: true + + /safe-buffer/5.1.2: + resolution: { integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== } + dev: true + + /safe-buffer/5.2.1: + resolution: { integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== } + dev: true + + /safe-regex/1.1.0: + resolution: { integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== } + dependencies: + ret: 0.1.15 + dev: true + + /safer-buffer/2.1.2: + resolution: { integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== } + dev: true + + /sass-loader/8.0.2_sass@1.32.8: + resolution: { integrity: sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ== } + engines: { node: '>= 8.9.0' } + peerDependencies: + fibers: '>= 3.1.0' + node-sass: ^4.0.0 + sass: ^1.3.0 + webpack: ^4.36.0 || ^5.0.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + dependencies: + clone-deep: 4.0.1 + loader-utils: 1.4.2 + neo-async: 2.6.2 + sass: 1.32.8 + schema-utils: 2.7.1 + semver: 6.3.0 + dev: true + + /sass/1.32.8: + resolution: { integrity: sha512-Sl6mIeGpzjIUZqvKnKETfMf0iDAswD9TNlv13A7aAF3XZlRPMq4VvJWBC2N2DXbp94MQVdNSFG6LfF/iOXrPHQ== } + engines: { node: '>=8.9.0' } + hasBin: true + dependencies: + chokidar: 3.5.3 + dev: true + + /sax/1.2.4: + resolution: { integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== } + dev: true + + /schema-utils/1.0.0: + resolution: { integrity: sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== } + engines: { node: '>= 4' } + dependencies: + ajv: 6.12.6 + ajv-errors: 1.0.1_ajv@6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: true + + /schema-utils/2.7.1: + resolution: { integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== } + engines: { node: '>= 8.9.0' } + dependencies: + '@types/json-schema': 7.0.11 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: true + + /schema-utils/3.1.1: + resolution: { integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== } + engines: { node: '>= 10.13.0' } + dependencies: + '@types/json-schema': 7.0.11 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: false + + /scp2/0.5.0: + resolution: { integrity: sha512-HzPWuOHM/qVjVYhjmgfBKyUXQsI+9+SdI5l+5E0S98bUHirf1NoTynfrAPb0kr0oJKg/JFdFSlZwq7FnqLttvw== } + hasBin: true + dependencies: + async: 0.9.2 + glob: 7.0.6 + lodash: 4.11.2 + ssh2: 0.4.15 + dev: true + + /select-hose/2.0.0: + resolution: { integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== } + dev: true + + /select/1.1.2: + resolution: { integrity: sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA== } + dev: false + + /selfsigned/1.10.8: + resolution: { integrity: sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w== } + dependencies: + node-forge: 0.10.0 + dev: true + + /semver-compare/1.0.0: + resolution: { integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== } + dev: true + + /semver/5.7.1: + resolution: { integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== } + hasBin: true + dev: true + + /semver/6.3.0: + resolution: { integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== } + hasBin: true + dev: true + + /semver/7.0.0: + resolution: { integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== } + hasBin: true + dev: true + + /semver/7.3.2: + resolution: { integrity: sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== } + engines: { node: '>=10' } + hasBin: true + dev: true + + /semver/7.3.4: + resolution: { integrity: sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== } + engines: { node: '>=10' } + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /send/0.17.1: + resolution: { integrity: sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== } + engines: { node: '>= 0.8.0' } + dependencies: + debug: 2.6.9 + depd: 1.1.2 + destroy: 1.0.4 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 1.7.3 + mime: 1.6.0 + ms: 2.1.1 + on-finished: 2.3.0 + range-parser: 1.2.1 + statuses: 1.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /send/0.17.1_supports-color@6.1.0: + resolution: { integrity: sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== } + engines: { node: '>= 0.8.0' } + dependencies: + debug: 2.6.9_supports-color@6.1.0 + depd: 1.1.2 + destroy: 1.0.4 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 1.7.3 + mime: 1.6.0 + ms: 2.1.1 + on-finished: 2.3.0 + range-parser: 1.2.1 + statuses: 1.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /serialize-javascript/4.0.0: + resolution: { integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== } + dependencies: + randombytes: 2.1.0 + dev: true + + /serve-index/1.9.1_supports-color@6.1.0: + resolution: { integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== } + engines: { node: '>= 0.8.0' } + dependencies: + accepts: 1.3.7 + batch: 0.6.1 + debug: 2.6.9_supports-color@6.1.0 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.29 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /serve-static/1.14.1: + resolution: { integrity: sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== } + engines: { node: '>= 0.8.0' } + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.17.1 + transitivePeerDependencies: + - supports-color + dev: true + + /serve-static/1.14.1_supports-color@6.1.0: + resolution: { integrity: sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== } + engines: { node: '>= 0.8.0' } + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.17.1_supports-color@6.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /set-blocking/2.0.0: + resolution: { integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== } + dev: true + + /set-value/2.0.1: + resolution: { integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== } + engines: { node: '>=0.10.0' } + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + dev: true + + /setimmediate/1.0.5: + resolution: { integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== } + dev: true + + /setprototypeof/1.1.0: + resolution: { integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== } + dev: true + + /setprototypeof/1.1.1: + resolution: { integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== } + dev: true + + /sha.js/2.4.11: + resolution: { integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== } + hasBin: true + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /shallow-clone/3.0.1: + resolution: { integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== } + engines: { node: '>=8' } + dependencies: + kind-of: 6.0.3 + dev: true + + /shebang-command/1.2.0: + resolution: { integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== } + engines: { node: '>=0.10.0' } + dependencies: + shebang-regex: 1.0.0 + dev: true + + /shebang-command/2.0.0: + resolution: { integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== } + engines: { node: '>=8' } + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex/1.0.0: + resolution: { integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== } + engines: { node: '>=0.10.0' } + dev: true + + /shebang-regex/3.0.0: + resolution: { integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== } + engines: { node: '>=8' } + dev: true + + /shell-quote/1.7.2: + resolution: { integrity: sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== } + dev: true + + /side-channel/1.0.4: + resolution: { integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.1 + object-inspect: 1.9.0 + dev: false + + /signal-exit/3.0.3: + resolution: { integrity: sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== } + dev: true + + /simple-git/1.132.0: + resolution: { integrity: sha512-xauHm1YqCTom1sC9eOjfq3/9RKiUA9iPnxBbrY2DdL8l4ADMu0jjM5l5lphQP5YWNqAL2aXC/OeuQ76vHtW5fg== } + dependencies: + debug: 4.3.2 + transitivePeerDependencies: + - supports-color + dev: true + + /simple-swizzle/0.2.2: + resolution: { integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== } + dependencies: + is-arrayish: 0.3.2 + + /slash/1.0.0: + resolution: { integrity: sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== } + engines: { node: '>=0.10.0' } + dev: true + + /slash/2.0.0: + resolution: { integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== } + engines: { node: '>=6' } + dev: true + + /slash/3.0.0: + resolution: { integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== } + engines: { node: '>=8' } + dev: true + + /slice-ansi/0.0.4: + resolution: { integrity: sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw== } + engines: { node: '>=0.10.0' } + dev: true + + /slice-ansi/2.1.0: + resolution: { integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== } + engines: { node: '>=6' } + dependencies: + ansi-styles: 3.2.1 + astral-regex: 1.0.0 + is-fullwidth-code-point: 2.0.0 + dev: true + + /snapdragon-node/2.1.1: + resolution: { integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== } + engines: { node: '>=0.10.0' } + dependencies: + define-property: 1.0.0 + isobject: 3.0.1 + snapdragon-util: 3.0.1 + dev: true + + /snapdragon-util/3.0.1: + resolution: { integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== } + engines: { node: '>=0.10.0' } + dependencies: + kind-of: 3.2.2 + dev: true + + /snapdragon/0.8.2: + resolution: { integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== } + engines: { node: '>=0.10.0' } + dependencies: + base: 0.11.2 + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /snapdragon/0.8.2_supports-color@6.1.0: + resolution: { integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== } + engines: { node: '>=0.10.0' } + dependencies: + base: 0.11.2 + debug: 2.6.9_supports-color@6.1.0 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /sockjs-client/1.5.0_supports-color@6.1.0: + resolution: { integrity: sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q== } + dependencies: + debug: 3.2.7_supports-color@6.1.0 + eventsource: 1.1.0 + faye-websocket: 0.11.3 + inherits: 2.0.4 + json3: 3.3.3 + url-parse: 1.5.1 + transitivePeerDependencies: + - supports-color + dev: true + + /sockjs/0.3.21: + resolution: { integrity: sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== } + dependencies: + faye-websocket: 0.11.3 + uuid: 3.4.0 + websocket-driver: 0.7.4 + dev: true + + /sort-keys/1.1.2: + resolution: { integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg== } + engines: { node: '>=0.10.0' } + dependencies: + is-plain-obj: 1.1.0 + dev: true + + /sortablejs/1.10.2: + resolution: { integrity: sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A== } + dev: false + + /source-list-map/2.0.1: + resolution: { integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== } + dev: true + + /source-map-js/1.0.2: + resolution: { integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== } + engines: { node: '>=0.10.0' } + dev: true + + /source-map-resolve/0.5.3: + resolution: { integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== } + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.0 + resolve-url: 0.2.1 + source-map-url: 0.4.1 + urix: 0.1.0 + dev: true + + /source-map-support/0.5.19: + resolution: { integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== } + dependencies: + buffer-from: 1.1.1 + source-map: 0.6.1 + dev: true + + /source-map-url/0.4.1: + resolution: { integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== } + deprecated: See https://github.com/lydell/source-map-url#deprecated + dev: true + + /source-map/0.5.7: + resolution: { integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== } + engines: { node: '>=0.10.0' } + dev: true + + /source-map/0.6.1: + resolution: { integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== } + engines: { node: '>=0.10.0' } + dev: true + + /sourcemap-codec/1.4.8: + resolution: { integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== } + dev: true + + /spdx-correct/3.1.1: + resolution: { integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== } + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.7 + dev: true + + /spdx-exceptions/2.3.0: + resolution: { integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== } + dev: true + + /spdx-expression-parse/3.0.1: + resolution: { integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== } + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.7 + dev: true + + /spdx-license-ids/3.0.7: + resolution: { integrity: sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== } + dev: true + + /spdy-transport/3.0.0_supports-color@6.1.0: + resolution: { integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== } + dependencies: + debug: 4.3.2_supports-color@6.1.0 + detect-node: 2.0.5 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.0 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + dev: true + + /spdy/4.0.2_supports-color@6.1.0: + resolution: { integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== } + engines: { node: '>=6.0.0' } + dependencies: + debug: 4.3.2_supports-color@6.1.0 + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0_supports-color@6.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /split-string/3.1.0: + resolution: { integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== } + engines: { node: '>=0.10.0' } + dependencies: + extend-shallow: 3.0.2 + dev: true + + /split2/3.2.2: + resolution: { integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== } + dependencies: + readable-stream: 3.6.0 + dev: true + + /sprintf-js/1.0.3: + resolution: { integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== } + dev: true + + /ssh2-streams/0.0.23: + resolution: { integrity: sha512-llhegJ0WOuEZQoWvh+ZB/ZQpJNjuDVPVAh+UjIsi0YLM7GeKPX7xMnh5LJtjOBAChumuUg7hNfIUfKjrxfNNYg== } + engines: { node: '>=0.8.7' } + dependencies: + asn1: 0.2.4 + readable-stream: 1.0.34 + streamsearch: 0.1.2 + dev: true + + /ssh2/0.4.15: + resolution: { integrity: sha512-/KEtwbNly4LtP92bBfgY4RCj8YAvKaXg89nLaCINNMu1X5d++W5DOZz+yX2xwjlSmdw8we7AC9LYnAzBkA4OwA== } + engines: { node: '>=0.8.7' } + dependencies: + readable-stream: 1.0.34 + ssh2-streams: 0.0.23 + dev: true + + /sshpk/1.16.1: + resolution: { integrity: sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== } + engines: { node: '>=0.10.0' } + hasBin: true + dependencies: + asn1: 0.2.4 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + dev: true + + /ssri/6.0.1: + resolution: { integrity: sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== } + dependencies: + figgy-pudding: 3.5.2 + dev: true + + /ssri/7.1.0: + resolution: { integrity: sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== } + engines: { node: '>= 8' } + dependencies: + figgy-pudding: 3.5.2 + minipass: 3.1.3 + dev: true + + /stable/0.1.8: + resolution: { integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== } + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + dev: true + + /stackframe/1.2.0: + resolution: { integrity: sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA== } + dev: true + + /staged-git-files/1.1.2: + resolution: { integrity: sha512-0Eyrk6uXW6tg9PYkhi/V/J4zHp33aNyi2hOCmhFLqLTIhbgqWn5jlSzI+IU0VqrZq6+DbHcabQl/WP6P3BG0QA== } + hasBin: true + dev: true + + /static-extend/0.1.2: + resolution: { integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== } + engines: { node: '>=0.10.0' } + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + dev: true + + /statuses/1.5.0: + resolution: { integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== } + engines: { node: '>= 0.6' } + dev: true + + /stream-browserify/2.0.2: + resolution: { integrity: sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== } + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.7 + dev: true + + /stream-each/1.2.3: + resolution: { integrity: sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== } + dependencies: + end-of-stream: 1.4.4 + stream-shift: 1.0.1 + dev: true + + /stream-http/2.8.3: + resolution: { integrity: sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== } + dependencies: + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 2.3.7 + to-arraybuffer: 1.0.1 + xtend: 4.0.2 + dev: true + + /stream-shift/1.0.1: + resolution: { integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== } + dev: true + + /streamsearch/0.1.2: + resolution: { integrity: sha512-jos8u++JKm0ARcSUTAZXOVC0mSox7Bhn6sBgty73P1f3JGf7yG2clTbBNHUdde/kdvP2FESam+vM6l8jBrNxHA== } + engines: { node: '>=0.8.0' } + dev: true + + /strict-uri-encode/1.1.0: + resolution: { integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== } + engines: { node: '>=0.10.0' } + dev: true + + /string-argv/0.0.2: + resolution: { integrity: sha512-p6/Mqq0utTQWUeGMi/m0uBtlLZEwXSY3+mXzeRRqw7fz5ezUb28Wr0R99NlfbWaMmL/jCyT9be4jpn7Yz8IO8w== } + engines: { node: '>=0.6.19' } + dev: true + + /string-width/1.0.2: + resolution: { integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== } + engines: { node: '>=0.10.0' } + dependencies: + code-point-at: 1.1.0 + is-fullwidth-code-point: 1.0.0 + strip-ansi: 3.0.1 + dev: true + + /string-width/2.1.1: + resolution: { integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== } + engines: { node: '>=4' } + dependencies: + is-fullwidth-code-point: 2.0.0 + strip-ansi: 4.0.0 + dev: true + + /string-width/3.1.0: + resolution: { integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== } + engines: { node: '>=6' } + dependencies: + emoji-regex: 7.0.3 + is-fullwidth-code-point: 2.0.0 + strip-ansi: 5.2.0 + dev: true + + /string-width/4.2.2: + resolution: { integrity: sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== } + engines: { node: '>=8' } + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.0 + dev: true + + /string.prototype.trimend/1.0.4: + resolution: { integrity: sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + dev: true + + /string.prototype.trimstart/1.0.4: + resolution: { integrity: sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + dev: true + + /string_decoder/0.10.31: + resolution: { integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== } + dev: true + + /string_decoder/1.1.1: + resolution: { integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== } + dependencies: + safe-buffer: 5.1.2 + dev: true + + /string_decoder/1.3.0: + resolution: { integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== } + dependencies: + safe-buffer: 5.2.1 + dev: true + + /stringify-object/3.3.0: + resolution: { integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== } + engines: { node: '>=4' } + dependencies: + get-own-enumerable-property-symbols: 3.0.2 + is-obj: 1.0.1 + is-regexp: 1.0.0 + dev: true + + /strip-ansi/3.0.1: + resolution: { integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== } + engines: { node: '>=0.10.0' } + dependencies: + ansi-regex: 2.1.1 + dev: true + + /strip-ansi/4.0.0: + resolution: { integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== } + engines: { node: '>=4' } + dependencies: + ansi-regex: 3.0.0 + dev: true + + /strip-ansi/5.2.0: + resolution: { integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== } + engines: { node: '>=6' } + dependencies: + ansi-regex: 4.1.0 + dev: true + + /strip-ansi/6.0.0: + resolution: { integrity: sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== } + engines: { node: '>=8' } + dependencies: + ansi-regex: 5.0.0 + dev: true + + /strip-bom/3.0.0: + resolution: { integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== } + engines: { node: '>=4' } + dev: true + + /strip-eof/1.0.0: + resolution: { integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== } + engines: { node: '>=0.10.0' } + dev: true + + /strip-final-newline/2.0.0: + resolution: { integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== } + engines: { node: '>=6' } + dev: true + + /strip-indent/2.0.0: + resolution: { integrity: sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA== } + engines: { node: '>=4' } + dev: true + + /strip-indent/3.0.0: + resolution: { integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== } + engines: { node: '>=8' } + dependencies: + min-indent: 1.0.1 + dev: true + + /strip-json-comments/3.1.1: + resolution: { integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== } + engines: { node: '>=8' } + dev: true + + /stylehacks/4.0.3: + resolution: { integrity: sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== } + engines: { node: '>=6.9.0' } + dependencies: + browserslist: 4.16.3 + postcss: 7.0.35 + postcss-selector-parser: 3.1.2 + dev: true + + /supports-color/2.0.0: + resolution: { integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== } + engines: { node: '>=0.8.0' } + dev: true + + /supports-color/3.2.3: + resolution: { integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A== } + engines: { node: '>=0.8.0' } + dependencies: + has-flag: 1.0.0 + dev: true + + /supports-color/5.5.0: + resolution: { integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== } + engines: { node: '>=4' } + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color/6.1.0: + resolution: { integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== } + engines: { node: '>=6' } + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color/7.2.0: + resolution: { integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== } + engines: { node: '>=8' } + dependencies: + has-flag: 4.0.0 + dev: true + + /svg-baker-runtime/1.4.7: + resolution: { integrity: sha512-Zorfwwj5+lWjk/oxwSMsRdS2sPQQdTmmsvaSpzU+i9ZWi3zugHLt6VckWfnswphQP0LmOel3nggpF5nETbt6xw== } + dependencies: + deepmerge: 1.3.2 + mitt: 1.1.2 + svg-baker: 1.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /svg-baker/1.7.0: + resolution: { integrity: sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg== } + dependencies: + bluebird: 3.7.2 + clone: 2.1.2 + he: 1.2.0 + image-size: 0.5.5 + loader-utils: 1.4.2 + merge-options: 1.0.1 + micromatch: 3.1.0 + postcss: 5.2.18 + postcss-prefix-selector: 1.9.0 + posthtml-rename-id: 1.0.12 + posthtml-svg-mode: 1.0.3 + query-string: 4.3.4 + traverse: 0.6.6 + transitivePeerDependencies: + - supports-color + dev: true + + /svg-sprite-loader/6.0.2: + resolution: { integrity: sha512-uh16i2TBfd6QM/nEIMF++e7mJtz1rersRs7vlZYIbwmPnP7jSfRtWflijfnCB4i1YABX7WYsDaDS8k7lcmLIyA== } + engines: { node: '>=6' } + dependencies: + bluebird: 3.7.2 + deepmerge: 1.3.2 + domready: 1.0.8 + escape-string-regexp: 1.0.5 + loader-utils: 1.4.2 + svg-baker: 1.7.0 + svg-baker-runtime: 1.4.7 + url-slug: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /svg-tags/1.0.0: + resolution: { integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA== } + dev: true + + /svgo/1.3.2: + resolution: { integrity: sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== } + engines: { node: '>=4.0.0' } + deprecated: This SVGO version is no longer supported. Upgrade to v2.x.x. + hasBin: true + dependencies: + chalk: 2.4.2 + coa: 2.0.2 + css-select: 2.1.0 + css-select-base-adapter: 0.1.1 + css-tree: 1.0.0-alpha.37 + csso: 4.2.0 + js-yaml: 3.14.1 + mkdirp: 0.5.5 + object.values: 1.1.3 + sax: 1.2.4 + stable: 0.1.8 + unquote: 1.1.1 + util.promisify: 1.0.1 + dev: true + + /svgo/2.3.0: + resolution: { integrity: sha512-fz4IKjNO6HDPgIQxu4IxwtubtbSfGEAJUq/IXyTPIkGhWck/faiiwfkvsB8LnBkKLvSoyNNIY6d13lZprJMc9Q== } + engines: { node: '>=10.13.0' } + hasBin: true + dependencies: + '@trysound/sax': 0.1.1 + chalk: 4.1.1 + commander: 7.2.0 + css-select: 3.1.2 + css-tree: 1.1.2 + csso: 4.2.0 + stable: 0.1.8 + dev: true + + /symbol-observable/1.2.0: + resolution: { integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== } + engines: { node: '>=0.10.0' } + dev: true + + /synchronous-promise/2.0.15: + resolution: { integrity: sha512-k8uzYIkIVwmT+TcglpdN50pS2y1BDcUnBPK9iJeGu0Pl1lOI8pD6wtzgw91Pjpe+RxtTncw32tLxs/R0yNL2Mg== } + dev: true + + /table/5.4.6: + resolution: { integrity: sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== } + engines: { node: '>=6.0.0' } + dependencies: + ajv: 6.12.6 + lodash: 4.17.21 + slice-ansi: 2.1.0 + string-width: 3.1.0 + dev: true + + /tapable/0.1.10: + resolution: { integrity: sha512-jX8Et4hHg57mug1/079yitEKWGB3LCwoxByLsNim89LABq8NqgiX+6iYVOsq0vX8uJHkU+DZ5fnq95f800bEsQ== } + engines: { node: '>=0.6' } + dev: true + + /tapable/1.1.3: + resolution: { integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== } + engines: { node: '>=6' } + dev: true + + /terser-webpack-plugin/1.4.5_webpack@4.46.0: + resolution: { integrity: sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== } + engines: { node: '>= 6.9.0' } + peerDependencies: + webpack: ^4.0.0 + dependencies: + cacache: 12.0.4 + find-cache-dir: 2.1.0 + is-wsl: 1.1.0 + schema-utils: 1.0.0 + serialize-javascript: 4.0.0 + source-map: 0.6.1 + terser: 4.8.0 + webpack: 4.46.0 + webpack-sources: 1.4.3 + worker-farm: 1.7.0 + dev: true + + /terser-webpack-plugin/2.3.8_webpack@4.46.0: + resolution: { integrity: sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w== } + engines: { node: '>= 8.9.0' } + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + cacache: 13.0.1 + find-cache-dir: 3.3.1 + jest-worker: 25.5.0 + p-limit: 2.3.0 + schema-utils: 2.7.1 + serialize-javascript: 4.0.0 + source-map: 0.6.1 + terser: 4.8.0 + webpack: 4.46.0 + webpack-sources: 1.4.3 + transitivePeerDependencies: + - bluebird + dev: true + + /terser/4.8.0: + resolution: { integrity: sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== } + engines: { node: '>=6.0.0' } + hasBin: true + dependencies: + acorn: 8.8.1 + commander: 2.20.3 + source-map: 0.6.1 + source-map-support: 0.5.19 + dev: true + + /text-extensions/1.9.0: + resolution: { integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== } + engines: { node: '>=0.10' } + dev: true + + /text-table/0.2.0: + resolution: { integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== } + dev: true + + /thenify-all/1.6.0: + resolution: { integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== } + engines: { node: '>=0.8' } + dependencies: + thenify: 3.3.1 + dev: true + + /thenify/3.3.1: + resolution: { integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== } + dependencies: + any-promise: 1.3.0 + dev: true + + /thread-loader/2.1.3_webpack@4.46.0: + resolution: { integrity: sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg== } + engines: { node: '>= 6.9.0 <7.0.0 || >= 8.9.0' } + peerDependencies: + webpack: ^2.0.0 || ^3.0.0 || ^4.0.0 + dependencies: + loader-runner: 2.4.0 + loader-utils: 1.4.2 + neo-async: 2.6.2 + webpack: 4.46.0 + dev: true + + /throttle-debounce/1.1.0: + resolution: { integrity: sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg== } + engines: { node: '>=4' } + dev: false + + /through/2.3.8: + resolution: { integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== } + dev: true + + /through2/2.0.5: + resolution: { integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== } + dependencies: + readable-stream: 2.3.7 + xtend: 4.0.2 + dev: true + + /through2/4.0.2: + resolution: { integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== } + dependencies: + readable-stream: 3.6.0 + dev: true + + /thunky/1.1.0: + resolution: { integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== } + dev: true + + /timers-browserify/2.0.12: + resolution: { integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== } + engines: { node: '>=0.6.0' } + dependencies: + setimmediate: 1.0.5 + dev: true + + /timsort/0.3.0: + resolution: { integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== } + dev: true + + /tiny-emitter/2.1.0: + resolution: { integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== } + dev: false + + /tinycolor2/1.4.2: + resolution: { integrity: sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA== } + dev: false + + /tmp/0.0.33: + resolution: { integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== } + engines: { node: '>=0.6.0' } + dependencies: + os-tmpdir: 1.0.2 + dev: true + + /to-arraybuffer/1.0.1: + resolution: { integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== } + dev: true + + /to-fast-properties/1.0.3: + resolution: { integrity: sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og== } + engines: { node: '>=0.10.0' } + dev: true + + /to-fast-properties/2.0.0: + resolution: { integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== } + engines: { node: '>=4' } + dev: true + + /to-object-path/0.3.0: + resolution: { integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== } + engines: { node: '>=0.10.0' } + dependencies: + kind-of: 3.2.2 + dev: true + + /to-regex-range/2.1.1: + resolution: { integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== } + engines: { node: '>=0.10.0' } + dependencies: + is-number: 3.0.0 + repeat-string: 1.6.1 + dev: true + + /to-regex-range/5.0.1: + resolution: { integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== } + engines: { node: '>=8.0' } + dependencies: + is-number: 7.0.0 + dev: true + + /to-regex/3.0.2: + resolution: { integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== } + engines: { node: '>=0.10.0' } + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 + dev: true + + /toidentifier/1.0.0: + resolution: { integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== } + engines: { node: '>=0.6' } + dev: true + + /toposort/1.0.7: + resolution: { integrity: sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg== } + dev: true + + /toposort/2.0.2: + resolution: { integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg== } + dev: true + + /tough-cookie/2.5.0: + resolution: { integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== } + engines: { node: '>=0.8' } + dependencies: + psl: 1.8.0 + punycode: 2.1.1 + dev: true + + /traverse/0.6.6: + resolution: { integrity: sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw== } + dev: true + + /trim-newlines/3.0.0: + resolution: { integrity: sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA== } + engines: { node: '>=8' } + dev: true + + /trim-off-newlines/1.0.1: + resolution: { integrity: sha512-cklgulxoLavCJlZSWdKzEuKFRFwyRUS3h4tfvSo8uSGrtrPNcAHeKmftGuA684vonXdvKgdX6cMKF8SBjywN1w== } + engines: { node: '>=0.10.0' } + dev: true + + /tryer/1.0.1: + resolution: { integrity: sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== } + dev: true + + /ts-loader/6.2.2_typescript@3.9.9: + resolution: { integrity: sha512-HDo5kXZCBml3EUPcc7RlZOV/JGlLHwppTLEHb3SHnr5V7NXD4klMEkrhJe5wgRbaWsSXi+Y1SIBN/K9B6zWGWQ== } + engines: { node: '>=8.6' } + peerDependencies: + typescript: '*' + dependencies: + chalk: 2.4.2 + enhanced-resolve: 4.5.0 + loader-utils: 1.4.2 + micromatch: 4.0.2 + semver: 6.3.0 + typescript: 3.9.9 + dev: true + + /ts-pnp/1.2.0_typescript@3.9.9: + resolution: { integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== } + engines: { node: '>=6' } + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + typescript: 3.9.9 + dev: true + + /tsconfig-paths/3.9.0: + resolution: { integrity: sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== } + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.1 + minimist: 1.2.5 + strip-bom: 3.0.0 + dev: true + + /tslib/1.14.1: + resolution: { integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== } + + /tslib/2.3.0: + resolution: { integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== } + dev: false + + /tslib/2.4.1: + resolution: { integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== } + dev: false + + /tslint/5.20.1_typescript@3.9.9: + resolution: { integrity: sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg== } + engines: { node: '>=4.8.0' } + hasBin: true + peerDependencies: + typescript: '>=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev' + dependencies: + '@babel/code-frame': 7.12.13 + builtin-modules: 1.1.1 + chalk: 2.4.2 + commander: 2.20.3 + diff: 4.0.2 + glob: 7.1.6 + js-yaml: 3.14.1 + minimatch: 3.0.4 + mkdirp: 0.5.5 + resolve: 1.20.0 + semver: 5.7.1 + tslib: 1.14.1 + tsutils: 2.29.0_typescript@3.9.9 + typescript: 3.9.9 + dev: true + + /tsutils/2.29.0_typescript@3.9.9: + resolution: { integrity: sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== } + peerDependencies: + typescript: '>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev' + dependencies: + tslib: 1.14.1 + typescript: 3.9.9 + dev: true + + /tsutils/3.21.0_typescript@3.9.9: + resolution: { integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== } + engines: { node: '>= 6' } + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 3.9.9 + dev: true + + /tty-browserify/0.0.0: + resolution: { integrity: sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== } + dev: true + + /tunnel-agent/0.6.0: + resolution: { integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== } + dependencies: + safe-buffer: 5.2.1 + dev: true + + /tweetnacl/0.14.5: + resolution: { integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== } + dev: true + + /type-check/0.3.2: + resolution: { integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== } + engines: { node: '>= 0.8.0' } + dependencies: + prelude-ls: 1.1.2 + dev: true + + /type-fest/0.11.0: + resolution: { integrity: sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== } + engines: { node: '>=8' } + dev: true + + /type-fest/0.18.1: + resolution: { integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== } + engines: { node: '>=10' } + dev: true + + /type-fest/0.6.0: + resolution: { integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== } + engines: { node: '>=8' } + dev: true + + /type-fest/0.8.1: + resolution: { integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== } + engines: { node: '>=8' } + dev: true + + /type-is/1.6.18: + resolution: { integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== } + engines: { node: '>= 0.6' } + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.29 + dev: true + + /typedarray/0.0.6: + resolution: { integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== } + dev: true + + /typescript/3.9.9: + resolution: { integrity: sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w== } + engines: { node: '>=4.2.0' } + hasBin: true + dev: true + + /uglify-js/3.4.10: + resolution: { integrity: sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== } + engines: { node: '>=0.8.0' } + hasBin: true + dependencies: + commander: 2.19.0 + source-map: 0.6.1 + dev: true + + /unbox-primitive/1.0.0: + resolution: { integrity: sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA== } + dependencies: + function-bind: 1.1.1 + has-bigints: 1.0.1 + has-symbols: 1.0.2 + which-boxed-primitive: 1.0.2 + dev: true + + /unicode-canonical-property-names-ecmascript/1.0.4: + resolution: { integrity: sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== } + engines: { node: '>=4' } + dev: true + + /unicode-match-property-ecmascript/1.0.4: + resolution: { integrity: sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== } + engines: { node: '>=4' } + dependencies: + unicode-canonical-property-names-ecmascript: 1.0.4 + unicode-property-aliases-ecmascript: 1.1.0 + dev: true + + /unicode-match-property-value-ecmascript/1.2.0: + resolution: { integrity: sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== } + engines: { node: '>=4' } + dev: true + + /unicode-property-aliases-ecmascript/1.1.0: + resolution: { integrity: sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== } + engines: { node: '>=4' } + dev: true + + /unidecode/0.1.8: + resolution: { integrity: sha512-SdoZNxCWpN2tXTCrGkPF/0rL2HEq+i2gwRG1ReBvx8/0yTzC3enHfugOf8A9JBShVwwrRIkLX0YcDUGbzjbVCA== } + engines: { node: '>= 0.4.12' } + dev: true + + /union-value/1.0.1: + resolution: { integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== } + engines: { node: '>=0.10.0' } + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + dev: true + + /uniq/1.0.1: + resolution: { integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA== } + dev: true + + /uniqs/2.0.0: + resolution: { integrity: sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ== } + dev: true + + /unique-filename/1.1.1: + resolution: { integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== } + dependencies: + unique-slug: 2.0.2 + dev: true + + /unique-slug/2.0.2: + resolution: { integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== } + dependencies: + imurmurhash: 0.1.4 + dev: true + + /universalify/0.1.2: + resolution: { integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== } + engines: { node: '>= 4.0.0' } + dev: true + + /universalify/2.0.0: + resolution: { integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== } + engines: { node: '>= 10.0.0' } + dev: true + + /unpipe/1.0.0: + resolution: { integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== } + engines: { node: '>= 0.8' } + dev: true + + /unquote/1.1.1: + resolution: { integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg== } + dev: true + + /unset-value/1.0.0: + resolution: { integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== } + engines: { node: '>=0.10.0' } + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + dev: true + + /upath/1.2.0: + resolution: { integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== } + engines: { node: '>=4' } + dev: true + + /upper-case/1.1.3: + resolution: { integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA== } + dev: true + + /uri-js/4.4.1: + resolution: { integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== } + dependencies: + punycode: 2.1.1 + + /urix/0.1.0: + resolution: { integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== } + deprecated: Please see https://github.com/lydell/urix#deprecated + dev: true + + /url-loader/2.3.0_ke5umg2s3o4akbat3qvdol7cby: + resolution: { integrity: sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== } + engines: { node: '>= 8.9.0' } + peerDependencies: + file-loader: '*' + webpack: ^4.0.0 + peerDependenciesMeta: + file-loader: + optional: true + dependencies: + file-loader: 4.3.0_webpack@4.46.0 + loader-utils: 1.4.2 + mime: 2.5.2 + schema-utils: 2.7.1 + webpack: 4.46.0 + dev: true + + /url-loader/4.1.1: + resolution: { integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== } + engines: { node: '>= 10.13.0' } + peerDependencies: + file-loader: '*' + webpack: ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + file-loader: + optional: true + dependencies: + loader-utils: 2.0.4 + mime-types: 2.1.29 + schema-utils: 3.1.1 + dev: false + + /url-parse/1.5.1: + resolution: { integrity: sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q== } + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + dev: true + + /url-slug/2.0.0: + resolution: { integrity: sha512-aiNmSsVgrjCiJ2+KWPferjT46YFKoE8i0YX04BlMVDue022Xwhg/zYlnZ6V9/mP3p8Wj7LEp0myiTkC/p6sxew== } + dependencies: + unidecode: 0.1.8 + dev: true + + /url/0.11.0: + resolution: { integrity: sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== } + dependencies: + punycode: 1.3.2 + querystring: 0.2.0 + dev: true + + /use/3.1.1: + resolution: { integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== } + engines: { node: '>=0.10.0' } + dev: true + + /util-deprecate/1.0.2: + resolution: { integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== } + dev: true + + /util.promisify/1.0.0: + resolution: { integrity: sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== } + dependencies: + define-properties: 1.1.3 + object.getownpropertydescriptors: 2.1.2 + dev: true + + /util.promisify/1.0.1: + resolution: { integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== } + dependencies: + define-properties: 1.1.3 + es-abstract: 1.18.0 + has-symbols: 1.0.2 + object.getownpropertydescriptors: 2.1.2 + dev: true + + /util/0.10.3: + resolution: { integrity: sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ== } + dependencies: + inherits: 2.0.1 + dev: true + + /util/0.11.1: + resolution: { integrity: sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== } + dependencies: + inherits: 2.0.3 + dev: true + + /utila/0.4.0: + resolution: { integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== } + dev: true + + /utils-merge/1.0.1: + resolution: { integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== } + engines: { node: '>= 0.4.0' } + dev: true + + /uuid/3.4.0: + resolution: { integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== } + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + dev: true + + /v8-compile-cache/2.3.0: + resolution: { integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== } + dev: true + + /validate-npm-package-license/3.0.4: + resolution: { integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== } + dependencies: + spdx-correct: 3.1.1 + spdx-expression-parse: 3.0.1 + dev: true + + /vary/1.1.2: + resolution: { integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== } + engines: { node: '>= 0.8' } + dev: true + + /vendors/1.0.4: + resolution: { integrity: sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== } + dev: true + + /verror/1.10.0: + resolution: { integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== } + engines: { '0': node >=0.6.0 } + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.4.0 + dev: true + + /vite-plugin-svg-icons/0.6.2_vite@2.4.1: + resolution: { integrity: sha512-NyctAJPkbKEYlAfuCfGLck9l0lx3zXNKcKCuXFle8S1TmCH/Uqgftxm/PyKjyGoj1Jjwh1CkwY3KLu4C2RWMKQ== } + peerDependencies: + vite: '>=2.0.0' + dependencies: + '@types/svgo': 2.6.4 + cors: 2.8.5 + debug: 4.3.2 + etag: 1.8.1 + fs-extra: 10.1.0 + svg-baker: 1.7.0 + svgo: 2.3.0 + vite: 2.4.1 + transitivePeerDependencies: + - supports-color + dev: true + + /vite-plugin-vue2/1.5.1_vite@2.4.1: + resolution: { integrity: sha512-z7TUaSL3f2XvQWU1YmpxBDyPWwIRwH/6O4RTqsZKTzPfRWpCT2r9Ap84C4+YS1MmbPlrYjgWplCIdJd7I0Vr+A== } + peerDependencies: + vite: ^2.0.0-beta.23 + dependencies: + '@babel/core': 7.14.3 + '@babel/parser': 7.14.3 + '@babel/plugin-transform-typescript': 7.14.3_@babel+core@7.14.3 + '@rollup/pluginutils': 4.1.0_rollup@2.48.0 + '@vue/babel-helper-vue-jsx-merge-props': 1.2.1 + '@vue/babel-preset-jsx': 1.2.4_@babel+core@7.14.3 + '@vue/component-compiler-utils': 3.2.0 + babel-preset-env: 1.7.0 + consolidate: 0.16.0 + debug: 4.3.2 + fs-extra: 9.1.0 + hash-sum: 2.0.0 + magic-string: 0.25.7 + prettier: 2.3.0 + querystring: 0.2.1 + rollup: 2.48.0 + slash: 3.0.0 + vite: 2.4.1 + vue-template-compiler: 2.6.14 + vue-template-es2015-compiler: 1.9.1 + transitivePeerDependencies: + - arc-templates + - atpl + - babel-core + - bracket-template + - coffee-script + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - htmling + - jade + - jazz + - jqtpl + - just + - liquid-node + - liquor + - lodash + - marko + - mote + - mustache + - nunjucks + - plates + - pug + - qejs + - ractive + - razor-tmpl + - react + - react-dom + - slm + - squirrelly + - supports-color + - swig + - swig-templates + - teacup + - templayed + - then-jade + - then-pug + - tinyliquid + - toffee + - twig + - twing + - underscore + - vash + - velocityjs + - walrus + - whiskers + dev: true + + /vite/2.4.1: + resolution: { integrity: sha512-4BpKRis9uxIqPfIEcJ18LTBsamqnDFxTx45CXwagHjNltHa6PFEvf8Pe6OpgIHb0OyWT30OXOSSQvdOaX4OBiQ== } + engines: { node: '>=12.0.0' } + hasBin: true + dependencies: + esbuild: 0.12.29 + postcss: 8.4.31 + resolve: 1.20.0 + rollup: 2.48.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /vm-browserify/1.1.2: + resolution: { integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== } + dev: true + + /vue-class-component/7.2.6_vue@2.6.14: + resolution: { integrity: sha512-+eaQXVrAm/LldalI272PpDe3+i4mPis0ORiMYxF6Ae4hyuCh15W8Idet7wPUEs4N4YptgFHGys4UrgNQOMyO6w== } + peerDependencies: + vue: ^2.0.0 + dependencies: + vue: 2.6.14 + dev: false + + /vue-eslint-parser/7.6.0_eslint@6.8.0: + resolution: { integrity: sha512-QXxqH8ZevBrtiZMZK0LpwaMfevQi9UL7lY6Kcp+ogWHC88AuwUPwwCIzkOUc1LR4XsYAt/F9yHXAB/QoD17QXA== } + engines: { node: '>=8.10' } + peerDependencies: + eslint: '>=5.0.0' + dependencies: + debug: 4.3.2 + eslint: 6.8.0 + eslint-scope: 5.1.1 + eslint-visitor-keys: 1.3.0 + espree: 6.2.1 + esquery: 1.4.0 + lodash: 4.17.21 + transitivePeerDependencies: + - supports-color + dev: true + + /vue-grid-layout/2.3.12: + resolution: { integrity: sha512-x9l4KxfH0MeB4xImanrnnTihksq8LYk3f40hm1sdiTHF2bYM+Xhae6eQsvFWEFwbYq7RVNvB80qwis1vInB+WQ== } + dependencies: + '@interactjs/actions': 1.10.11 + '@interactjs/auto-start': 1.10.11 + '@interactjs/dev-tools': 1.10.11_6cfv4lzikfbo7rn4cjwgiucbha + '@interactjs/interactjs': 1.10.11 + '@interactjs/modifiers': 1.10.11 + element-resize-detector: 1.2.3 + transitivePeerDependencies: + - '@interactjs/core' + - '@interactjs/utils' + dev: false + + /vue-hot-reload-api/2.3.4: + resolution: { integrity: sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== } + dev: true + + /vue-i18n/8.24.1_vue@2.6.14: + resolution: { integrity: sha512-iqM+npjvI9SGOAYkw1Od/y4O74gpvn5WOHeb3K125TmDJssvR62tDMMLIasPmKNbePZ1BMZ6d5jOBsrB/cK8Lw== } + peerDependencies: + vue: ^2 + dependencies: + vue: 2.6.14 + dev: false + + /vue-loader/15.9.6_m6jvttnwtqqy6l4pi5vsxiehsy: + resolution: { integrity: sha512-j0cqiLzwbeImIC6nVIby2o/ABAWhlppyL/m5oJ67R5MloP0hj/DtFgb0Zmq3J9CG7AJ+AXIvHVnJAPBvrLyuDg== } + peerDependencies: + '@vue/compiler-sfc': ^3.0.8 + cache-loader: '*' + css-loader: '*' + vue-template-compiler: '*' + webpack: ^3.0.0 || ^4.1.0 || ^5.0.0-0 + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + cache-loader: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@vue/component-compiler-utils': 3.2.0 + cache-loader: 4.1.0_webpack@4.46.0 + css-loader: 3.6.0_webpack@4.46.0 + hash-sum: 1.0.2 + loader-utils: 1.4.2 + vue-hot-reload-api: 2.3.4 + vue-style-loader: 4.1.3 + vue-template-compiler: 2.6.14 + webpack: 4.46.0 + transitivePeerDependencies: + - arc-templates + - atpl + - babel-core + - bracket-template + - coffee-script + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - htmling + - jade + - jazz + - jqtpl + - just + - liquid-node + - liquor + - lodash + - marko + - mote + - mustache + - nunjucks + - plates + - pug + - qejs + - ractive + - razor-tmpl + - react + - react-dom + - slm + - squirrelly + - swig + - swig-templates + - teacup + - templayed + - then-jade + - then-pug + - tinyliquid + - toffee + - twig + - twing + - underscore + - vash + - velocityjs + - walrus + - whiskers + dev: true + + /vue-property-decorator/8.5.1_vue@2.6.14: + resolution: { integrity: sha512-O6OUN2OMsYTGPvgFtXeBU3jPnX5ffQ9V4I1WfxFQ6dqz6cOUbR3Usou7kgFpfiXDvV7dJQSFcJ5yUPgOtPPm1Q== } + peerDependencies: + vue: '*' + dependencies: + vue: 2.6.14 + vue-class-component: 7.2.6_vue@2.6.14 + dev: false + + /vue-router/3.5.1_vue@2.6.14: + resolution: { integrity: sha512-RRQNLT8Mzr8z7eL4p7BtKvRaTSGdCbTy2+Mm5HTJvLGYSSeG9gDzNasJPP/yOYKLy+/cLG/ftrqq5fvkFwBJEw== } + peerDependencies: + vue: ^2 + dependencies: + vue: 2.6.14 + dev: false + + /vue-style-loader/4.1.3: + resolution: { integrity: sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg== } + dependencies: + hash-sum: 1.0.2 + loader-utils: 1.4.2 + dev: true + + /vue-template-compiler/2.6.14: + resolution: { integrity: sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g== } + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + dev: true + + /vue-template-es2015-compiler/1.9.1: + resolution: { integrity: sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== } + dev: true + + /vue/2.6.14: + resolution: { integrity: sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ== } + + /vue2-animate/1.0.4: + resolution: { integrity: sha512-m0/0scgYOe5k7VcjsH5n6vHyfbI+XyeTyG6cT2LaNxGsh2ub8s8ZG6N3i1+0bJieldNk/awsNBx1EG13IJ7jPQ== } + dev: false + + /vuedraggable/2.24.3: + resolution: { integrity: sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g== } + dependencies: + sortablejs: 1.10.2 + dev: false + + /vuex/3.6.2_vue@2.6.14: + resolution: { integrity: sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw== } + peerDependencies: + vue: ^2.0.0 + dependencies: + vue: 2.6.14 + dev: false + + /wangeditor/4.6.16: + resolution: { integrity: sha512-zWWxTghxVJJwZck+j4k+DqwGzTnsVtGiNe2wFfV1Zv1KsLPVe1A8eq63OaFDFiAwD0klj7I6Y1HkexLGwD1c3w== } + dependencies: + '@babel/runtime': 7.13.10 + '@babel/runtime-corejs3': 7.13.17 + tslib: 2.4.1 + dev: false + + /watchpack-chokidar2/2.0.1: + resolution: { integrity: sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== } + requiresBuild: true + dependencies: + chokidar: 2.1.8 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /watchpack/1.7.5: + resolution: { integrity: sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== } + dependencies: + graceful-fs: 4.2.6 + neo-async: 2.6.2 + optionalDependencies: + chokidar: 3.5.3 + watchpack-chokidar2: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /wbuf/1.7.3: + resolution: { integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== } + dependencies: + minimalistic-assert: 1.0.1 + dev: true + + /wcwidth/1.0.1: + resolution: { integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== } + dependencies: + defaults: 1.0.3 + dev: true + + /webpack-bundle-analyzer/3.9.0: + resolution: { integrity: sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA== } + engines: { node: '>= 6.14.4' } + hasBin: true + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + bfj: 6.1.2 + chalk: 2.4.2 + commander: 2.20.3 + ejs: 2.7.4 + express: 4.17.1 + filesize: 3.6.1 + gzip-size: 5.1.1 + lodash: 4.17.21 + mkdirp: 0.5.5 + opener: 1.5.2 + ws: 6.2.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /webpack-chain/6.5.1: + resolution: { integrity: sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA== } + engines: { node: '>=8' } + dependencies: + deepmerge: 1.5.2 + javascript-stringify: 2.0.1 + dev: true + + /webpack-dev-middleware/3.7.3_webpack@4.46.0: + resolution: { integrity: sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== } + engines: { node: '>= 6' } + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + memory-fs: 0.4.1 + mime: 2.5.2 + mkdirp: 0.5.5 + range-parser: 1.2.1 + webpack: 4.46.0 + webpack-log: 2.0.0 + dev: true + + /webpack-dev-server/3.11.2_webpack@4.46.0: + resolution: { integrity: sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ== } + engines: { node: '>= 6.11.5' } + hasBin: true + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + ansi-html: 0.0.7 + bonjour: 3.5.0 + chokidar: 2.1.8_supports-color@6.1.0 + compression: 1.7.4_supports-color@6.1.0 + connect-history-api-fallback: 1.6.0 + debug: 4.3.2_supports-color@6.1.0 + del: 4.1.1 + express: 4.17.1_supports-color@6.1.0 + html-entities: 1.4.0 + http-proxy-middleware: 0.19.1_xwktanctkdp2ue56r3exixdqpa + import-local: 2.0.0 + internal-ip: 4.3.0 + ip: 1.1.5 + is-absolute-url: 3.0.3 + killable: 1.0.1 + loglevel: 1.7.1 + opn: 5.5.0 + p-retry: 3.0.1 + portfinder: 1.0.28_supports-color@6.1.0 + schema-utils: 1.0.0 + selfsigned: 1.10.8 + semver: 6.3.0 + serve-index: 1.9.1_supports-color@6.1.0 + sockjs: 0.3.21 + sockjs-client: 1.5.0_supports-color@6.1.0 + spdy: 4.0.2_supports-color@6.1.0 + strip-ansi: 3.0.1 + supports-color: 6.1.0 + url: 0.11.0 + webpack: 4.46.0 + webpack-dev-middleware: 3.7.3_webpack@4.46.0 + webpack-log: 2.0.0 + ws: 6.2.1 + yargs: 13.3.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /webpack-log/2.0.0: + resolution: { integrity: sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== } + engines: { node: '>= 6' } + dependencies: + ansi-colors: 3.2.4 + uuid: 3.4.0 + dev: true + + /webpack-merge/4.2.2: + resolution: { integrity: sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== } + dependencies: + lodash: 4.17.21 + dev: true + + /webpack-sources/1.4.3: + resolution: { integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== } + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + dev: true + + /webpack/4.46.0: + resolution: { integrity: sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== } + engines: { node: '>=6.11.5' } + hasBin: true + peerDependencies: + webpack-cli: '*' + webpack-command: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + webpack-command: + optional: true + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-module-context': 1.9.0 + '@webassemblyjs/wasm-edit': 1.9.0 + '@webassemblyjs/wasm-parser': 1.9.0 + acorn: 6.4.2 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + chrome-trace-event: 1.0.2 + enhanced-resolve: 4.5.0 + eslint-scope: 4.0.3 + json-parse-better-errors: 1.0.2 + loader-runner: 2.4.0 + loader-utils: 1.4.2 + memory-fs: 0.4.1 + micromatch: 3.1.10 + mkdirp: 0.5.5 + neo-async: 2.6.2 + node-libs-browser: 2.2.1 + schema-utils: 1.0.0 + tapable: 1.1.3 + terser-webpack-plugin: 1.4.5_webpack@4.46.0 + watchpack: 1.7.5 + webpack-sources: 1.4.3 + transitivePeerDependencies: + - supports-color + dev: true + + /websocket-driver/0.7.4: + resolution: { integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== } + engines: { node: '>=0.8.0' } + dependencies: + http-parser-js: 0.5.3 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + dev: true + + /websocket-extensions/0.1.4: + resolution: { integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== } + engines: { node: '>=0.8.0' } + dev: true + + /which-boxed-primitive/1.0.2: + resolution: { integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== } + dependencies: + is-bigint: 1.0.1 + is-boolean-object: 1.1.0 + is-number-object: 1.0.4 + is-string: 1.0.5 + is-symbol: 1.0.3 + dev: true + + /which-module/2.0.0: + resolution: { integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== } + dev: true + + /which/1.3.1: + resolution: { integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== } + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /which/2.0.2: + resolution: { integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== } + engines: { node: '>= 8' } + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /word-wrap/1.2.3: + resolution: { integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== } + engines: { node: '>=0.10.0' } + dev: true + + /worker-farm/1.7.0: + resolution: { integrity: sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== } + dependencies: + errno: 0.1.8 + dev: true + + /worker-rpc/0.1.1: + resolution: { integrity: sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== } + dependencies: + microevent.ts: 0.1.1 + dev: true + + /wrap-ansi/3.0.1: + resolution: { integrity: sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ== } + engines: { node: '>=4' } + dependencies: + string-width: 2.1.1 + strip-ansi: 4.0.0 + dev: true + + /wrap-ansi/5.1.0: + resolution: { integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== } + engines: { node: '>=6' } + dependencies: + ansi-styles: 3.2.1 + string-width: 3.1.0 + strip-ansi: 5.2.0 + dev: true + + /wrap-ansi/6.2.0: + resolution: { integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== } + engines: { node: '>=8' } + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.2 + strip-ansi: 6.0.0 + dev: true + + /wrap-ansi/7.0.0: + resolution: { integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== } + engines: { node: '>=10' } + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.2 + strip-ansi: 6.0.0 + dev: true + + /wrappy/1.0.2: + resolution: { integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== } + dev: true + + /write/1.0.3: + resolution: { integrity: sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== } + engines: { node: '>=4' } + dependencies: + mkdirp: 0.5.5 + dev: true + + /ws/6.2.1: + resolution: { integrity: sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== } + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dependencies: + async-limiter: 1.0.1 + dev: true + + /xtend/4.0.2: + resolution: { integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== } + engines: { node: '>=0.4' } + dev: true + + /y18n/4.0.1: + resolution: { integrity: sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== } + dev: true + + /y18n/5.0.5: + resolution: { integrity: sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== } + engines: { node: '>=10' } + dev: true + + /yallist/2.1.2: + resolution: { integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== } + dev: true + + /yallist/3.1.1: + resolution: { integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== } + dev: true + + /yallist/4.0.0: + resolution: { integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== } + dev: true + + /yaml/1.10.2: + resolution: { integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== } + engines: { node: '>= 6' } + dev: true + + /yargs-parser/13.1.2: + resolution: { integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== } + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: true + + /yargs-parser/18.1.3: + resolution: { integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== } + engines: { node: '>=6' } + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: true + + /yargs-parser/20.2.7: + resolution: { integrity: sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== } + engines: { node: '>=10' } + dev: true + + /yargs/13.3.2: + resolution: { integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== } + dependencies: + cliui: 5.0.0 + find-up: 3.0.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 3.1.0 + which-module: 2.0.0 + y18n: 4.0.1 + yargs-parser: 13.1.2 + dev: true + + /yargs/15.4.1: + resolution: { integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== } + engines: { node: '>=8' } + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.2 + which-module: 2.0.0 + y18n: 4.0.1 + yargs-parser: 18.1.3 + dev: true + + /yargs/16.2.0: + resolution: { integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== } + engines: { node: '>=10' } + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.2 + y18n: 5.0.5 + yargs-parser: 20.2.7 + dev: true + + /yocto-queue/0.1.0: + resolution: { integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== } + engines: { node: '>=10' } + dev: true + + /yorkie/2.0.0: + resolution: { integrity: sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw== } + engines: { node: '>=4' } + requiresBuild: true + dependencies: + execa: 0.8.0 + is-ci: 1.2.1 + normalize-path: 1.0.0 + strip-indent: 2.0.0 + dev: true + + /yup/0.27.0: + resolution: { integrity: sha512-v1yFnE4+u9za42gG/b/081E7uNW9mUj3qtkmelLbW5YPROZzSH/KUUyJu9Wt8vxFJcT9otL/eZopS0YK1L5yPQ== } + dependencies: + '@babel/runtime': 7.13.10 + fn-name: 2.0.1 + lodash: 4.17.21 + property-expr: 1.5.1 + synchronous-promise: 2.0.15 + toposort: 2.0.2 + dev: true + + /zrender/5.3.1: + resolution: { integrity: sha512-7olqIjy0gWfznKr6vgfnGBk7y4UtdMvdwFmK92vVQsQeDPyzkHW1OlrLEKg6GHz1W5ePf0FeN1q2vkl/HFqhXw== } + dependencies: + tslib: 2.3.0 + dev: false diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..961986e --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,5 @@ +module.exports = { + plugins: { + autoprefixer: {} + } +} diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..130e976 --- /dev/null +++ b/public/index.html @@ -0,0 +1,28 @@ + + + + + + + + 多云集中纳管系统 + + + + + +
+
+
+
+
+
+
+
+
+
+ + + diff --git a/script/index.js b/script/index.js new file mode 100644 index 0000000..9b79c2f --- /dev/null +++ b/script/index.js @@ -0,0 +1,12 @@ +const exec = require('child_process').exec +const params = process.argv[2] +const str = `git subtree ${params || 'pull'} --prefix=src/common http://haijun@58.210.154.140:8888/web/cmp-common.git master --squash` +exec(str, function (err, stdout, stderr) { + if (err) { + console.log('======执行失败=======') + console.log(err) + } else { + console.log('======执行成功=======') + console.log(stdout) + } +}) diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..ad870fb --- /dev/null +++ b/src/App.vue @@ -0,0 +1,53 @@ + + + + diff --git a/src/assets/copy.png b/src/assets/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..520dafdc0a062d430748ce21107e2f03e643ec9e GIT binary patch literal 3329 zcmds4`8U-28y{oFGPY@KHzs|i>|2Sl%V(moFGKcFgm7bWZ^ja1WUE{wp=8FAB|D*z zWh%?4i;yjhVhR^!XC!^+-gEzld(QWV_wzjGdET$rd7tw>@8@~FQ|xSTLI^1Y1OgE< zH#5O=Jmc@h$HTEzF4Z)S;|jy$u#oD0^dbZz_`=)-bR>GNP`#2poR9Q$_{&e^pE0$} zXwZmqs7+|m4pOmJaY-;KaQii|x4#mu=GX<>DuxS@Ma=1vTQB$WAE>!iB@abupDA;5 zqkJi-va5G%X?~2ny*&Nv2VXF~#LQ2BhaoFHAwNM48=ysfHQb5jj>wr|@30SyboJ{q z4s#t~xKJ)xBtRMk#C_(sL*C%!uQVo+YYojfhS$tE4HAMhyoUbF&xM#Ze`io4!-Xj9 zNqua9F$N9zb9&w%HwHJG2=^6WipdJ##)C+Xm(l)X{T2kiCL18*kOqMd&UM?2Kf=loDrS-hKb=pqqlkxIyQ(mzCHFN8nwQk6{+Olv zP>L&sAG6A`LK{_`p$Ch@o1p_$FZ9RWo)0-;vQa^~Uhm4vwa%c6!Q_V&bKjwBPTwVa zkktaHM83i`wc7x>aQo9rxs5hW~3P!_^+hEK^jcYAbD$U^O2Unid zQsB-lavci^+ZKd&_f(kV*QunQ-Ti(n+ysOKAF*s#g~vF_2J~MPjI;W9Jj{LWgT8Oxps=v{BPz3{vHGCr>x}O!KE_4ipk=}>?!D4Cszy5i9fXQbwqq+mUrEpl386e zZ@&%5b4XoRnl*Cg10(%O+Gf3MJIX!ok3#sBzq1>k zg#O(^jCa(BAn+^E#Q6KUB5);L2oo3)CXpTWk1_$d`E#I!FiHErpi%u&&v!Zg);REP z@`>~#WZy((cH5BQ|!H4cv9#uhf=%;pfE=Ed<5}+?KJP8{}5$ zvjp$rwT&KTlRb7{SuNLZQb{T?1qiqXbNIZ%rVWys=%GePS$3#jTc~%=!TF!vU;S%D zzR-xN0+OAEem>n9D4)}CV$W*{*X$k<73=(E4lBQY9!Wi~W!Cz_)B7eWVcK&3{e)x) zGQM~9iYE{dE%f&X6ZV6~4tOS7UWBy;&*~IS}gd-oB$6i8QmgrcV2vlKw`Cghd);eu=nv_~f z_~q)|VJR%wQ0pq~=nf|K9MoM*W_qos|0!I)Uy&EmpIM=lY@YLFzPt*!pgW$=P-Fnu z&qkh^MyL`E$IssJ{igq1&06{9A$ac~Z}dZL-pUJEc#0fE(^r3fcF?E7Hz!CZgyPXu zDd~VjTy9(RaHEjzklA}9d!9;s@H*yi>S|`7VzT9rz?(HMw?KpoB87s&APbt|jaFAu(>1Hfb;sl4acR@6bP_B3X%H0 zA(-_v;`=hIuV>@#VMi4nan{XNQF-6x`ZGib&$16~@VulFc?%3_O&I5m~iZkfM!*Ze_lg$HyAJ}PHFe!5v81m3(R zpiuLbwsg=VYt?_@7*|~BkYelDrf{oxk;o~|wBSL8KTLeXUKT~tCH-et$4Z>HJt+IO zFl$~qTM&tyb>z|2lT7$|>g1$;$*LQr@5LV-QGG4ph9Vzdm%O}g^a%De{;EM_ezJI* zM3KmEO(V@-#s?*QO}WERE{siz%(DTsOhjAqNUJ1kKPo{JDXhP?z1SYn2g0SLuY1~lkW9j zgfX?|jBfdqW#xoRs)Mq?puurqUekBuN{7aMazG;EQVd5G#IXK!2t?%rIUjZY6yd0X zwA=^_YmO=qMJKUA5_va$gYIzcYRCS8pKWl<_J@SUvXm78ZeAk(Z~YP3?8D>Ji!qKt zVWYk4zMwf>qVvSCV(uzhB-VZ*h#R)z3q$o<%xBYw>j}Guy$){;^htLPZ^k=ahZ^fF z>|&FrH3u2rct%FH2nhU`ud|MG^*}C)xYa?g+OQ{%o^xykqXi8E6mXb2%dKVT1XXiw z;ZFJ1@8xqs_);zL0aSy24fv+-_Gb#p>k(Bjw%pCDR1fiQ303CO;^H)wbc{8b^dk^) zIWJ;S1&`d~Q%u&Y_~6Ki6qWv?C{>_vJ(hZ6nnogCk(X&Uy*XL=UJluC?+i&{{cbjL z=0Peh=AOUR#lTd7>leSX5-}5o8AmBZjdS1h**%0?%5glk+yTqZRbF^)TKADN(jWp!NW&#Dv{u`XZK#n zt>Th&LMz^iCJ*VLcf{>5WYvQQT_-v#LFb8mBf9devJK_NQ(jb3IWgd?c_zsqr+d<< z)a_zV%PZI?HGKSyURF{3)rs(-mch@fZ$PVip?uY6X$0vZ~we
a* zETU@F8C|bWv|p|M+1-5Lbx>zzj74)J)shSKI#Cg75N=_Z}3O7)O?y+No}2a5S}MIL$2`0=I{C mojS`&pADNY6aP=j`y$$(3P4oL>r~F424Ze%V^WRvCjSp!aQBD+ literal 0 HcmV?d00001 diff --git a/src/assets/download.png b/src/assets/download.png new file mode 100644 index 0000000000000000000000000000000000000000..9dfbff347512bbdbe231edefcd7e1370cc8fc50a GIT binary patch literal 2045 zcmd6odpy$%AIE>YV8m>i(Pg<*jzjLwAx5U3$1{Y+;;>HBkSI@4ST4;TY#2(9Og%0s zo!UY-G+j2)(#vI}vE!1C<}P=c)Ewveqv!AEzvugYeZQaA>-+hj(nUxxR;=w&0Hu- z;oe#ECsY!&%yQOHHh1>vPYB+&o#NhmWG8*?PgibMXm-@$o64tRvH0h_{QP{~L)w{J-Kt0>1|Hp! zk!3xUQ{6Pq?D5%T}^mfK1US|&?Aj|qN z^Pn31bBg80al2~MoX%ij+PB)DWzT3DJrIsfF}gdpjcI|o>}T;nkflomf>7PawrC6N z<P>3;!~};DPTj zhIlI4)Yk!N{`0_pN#JAg44mH@p$R7Xj;uOl9!S8Cs;OuL-=Q`{H^F587e|AW7)?!0 z1KhQ^NY~7g#5+^5=(U%1w%VGS%d4xa!(L$ScEP8q>FMN{p~mwU{fc6)L4)g}rDs`4 zTw~RKrA#Kf-QC@7)AwXCb>pRJPK{NO*TS*!*#N0anEs2OE{`kDE|iUzwzrdw8{^-? zm1HTa**c}SD4T3nw00PCI&y6PmAL+Z+P*#xhm-QotnV@0+R-s7;%?vtCfo9K{!QL` z+vwuMkm}D>=9IM;7xQ@HSFQ;p-%$1h0lnYa5}>swgO9^`EhTg!3O;wj<-v^`Hb>JbunHGOaG)lySdv^5>ac7K^3* z3-u|~Mobx0{I*Q%SD}uLp5kQd;>@3ZBG>i>6>vCssd`_vB+urAPIrO2Sa=LXZb>$Q zT8sDnP^qWW;_3~ic`^KSr`DAkl@kNEVEpL4n$1)voM;JOUJ^s3U2Pj(;z_4o+*+;5bP&%NRtC@GY6lS&4_3bL zKXO8Vz?H+1%73>ii4{Cc>exvOdTMIw>xO|s-xEmU>?9Fl->--^&S{`#Tai;aB?b)w z8}<5ENim?Dc-?X6VyATPS5_Q=G6}EI75YP4L*SNJ;TdSF7rX{5yaaXZH$Ed!Wa^5#b<(F_Sv>|C zEtq(Wa2`5w6|qQ4K~yY=3_Hf*bTe0Y*K&)g7Fu4dK#6X7X4#<$yK=Q5kCU|QaANnRi^zxnk^WvM z@xiI)8qczKntpCkANP>JN zf{!c~hs=%jf8p@(_)n+GbsPvK0 zc=s3q=`JO(womBA9ZQHzyUun+GC!~~R-t9au)Ln0ktN2+u!9f1m&U);{){?O(JEm_ z5pw8ZrmNdzyNy{YXSC7JXVN-btvys{buR~ro!wHl(OeBH`6NxojlqZy2hoBHgFT1j z6YEM6d1xxOvvr?^DtAq6h^WUIG5)5Pbd7zaN*D3*$!i7=nGu$xkPS5BD(-H5#^?13 zik)n|($kAUIlH`N!w)!%k}Q>-7*iu5*hYh4A82SnT%41IN>?!QUb(5j&NJLr1-1hW z_uxxzW85@r0?i!WO|L+VLo}k}--zl-ckM&?()T51>-A9XlOM6}7!QZn8$W>HxV$iD zWDicL{xzedq2Bx}9Crj7HP*TM?a}ngm%Z)yf)YuP^h!>1b+TQ=*f4oz2YJXjruUwU zGkbq&@Tu)nG0)6 Q+WhAL(Zd(4ai=o>1Yn!2r~m)} literal 0 HcmV?d00001 diff --git a/src/assets/setting.png b/src/assets/setting.png new file mode 100644 index 0000000000000000000000000000000000000000..94bda37ed655f2689ee399f1b1a3333c992ac8fd GIT binary patch literal 5831 zcmW-lWmuHm)4lz<2V z0)<(#=@=9-!Fn@KR#e?(2mP6+^@*3yK*i4yhyAH`MT|AUIdC{aKH z;g8fo{W#}O0GMO6VE0YJY`1N$=i8VDeat)oNVM!}@i z*S|Gi%!K(Uu&tMN9pg5>;=2kCA0HR_b~hg(&iBfOY$KJ`^d@bUN#B^KMMvyGsmH;pe2im;2_?{+v7%fLyBi zLfKFxSWV{4HUHEdgcTN)U5j0I$4)ixJFPeN!2TRB${X7plA$r16i5{=aLaN1?mEsM z?CK%AuYlh(2-VE0U&fCc4|f4mGJKwE&T+O_h-{rh4m0M*5{$5z3$J(&7j2vJ#NYOy0|(LXD03d zwf>Z3o^Y0m8w@cmCBi0Y8GQ!%7D^W=LG|dEFnTT!-`oF72 zU-J-@rHDOv9v{EsRW%L`3cdp9{0&78XWeh~<3mY$13*|zK^YGh*W=6bIGPCCd9Q^w z?+^on|GYr{7{0-IT?6>lyYw{(KqnR^rkDW52fr-u_xYz+o$&G2W@1zy2#{qDj`C#b z4cy0~5hWW4fMp;5%gDXb`H?lSX4LVigFG$pY25V@#8gA94qlB+#=^6v!}t`!2R z`|(1oPTX(yh7YBvmdL6(&VE)f z>L_me?u4lou}uu%d-n_A*D-UJbW5g6)L@7d&<~smnf2a2Q=sn}aHXf)^VF`+68Em> z#oXk<8K<;6L8PRl{2b}X_J91-kJtJuPj9o*+n#iVUbQm&EYOMroUmZ0f=kZ$H{}8E ziimbK1Uog?HsEeej!K+CbnaibW7MFRrHyPkHNa;7BoI2i{rujnPxz!Yg-`*}oRQ8I z`RE?_mU6f3Ab#ie;6;T&C($zqI6i673hQaeM%;B8Og7cYyR}&Q;;~f`<5kp}&Y5Hm z{CorrmKE>QeeH-k-S<69mZJI)2eD6pdvqIg`oF8qE_?v9dOXj!a#Oon=p{jAoBbXB zf=9dBGg;bh*F6p0Q<2@FDI)OXS)1%ZO1&a0kBt*yWuf<(Y9oGl9QDskyKd*_ zPh9X^lZ!#+@Pq#AIdC2$?Z3~Hz72=vpGFSmS2VZKe%N&YZov&b$!HZfHdi~6-M#Co z-NX9WsT2(h?m%*4b_PP0Y4Wa-qZ%k!j}}9h4&&nD_D*TZ zucH2I3z$vIk~GLqbLk4q6e{?|ZJRTcEPJ4_FRIIIW9uHUasCMj!ir`Pwt6_jdhl_t z-rL2`fTVZZpVOBZ?MSg$cJB{TN-7kwIQ)fcc+87u(RF;7R0l*hO-hL*=x- zP9#X*o<`Ii+7MNV@+D#d$tdtq56#%v79QuKi&eNM*V?I2QdFw>zb0ivZ2M{ z-Utp#LSjZwVcZIy_zO8F{A@EN@iba^p|#m-WWd4L^KlUCb5iiBAzPtu2AN5irJD$5 zn{Vy9291`Nwm;p9PA(W`t*8)=u;4V{B8y5z7yqXrI5J8Fh5}EdAA?<*y2Ctsxkx_<&bV3)g!9I5_&#`OV>Gh*JV)Qx`kMj=a31v(N$8Chhg8JEY}!XT;c5QcyB3 ziP+QmNCnKr*ns#n!fx7&A#qz^RFCUeVcjFxM7y3!K`LM zNh7RL()#W0D<(0sF!BbNQIMSMsNBNCGAL9U9-eW0gE!&*znHk(bM)pIP1Lhy&9Wb( z*6KqAr&1uDu8HjiV^2Tc3M~6ygP3bC%9`#IeY%?sf8tgo48lr$%eo*awBv6ZdqOgN zO9qPA?lq?v#b_ka)Xox!r7NU(a&(6f=he`S5X~{WW!G)p^!yjSI_y*h@uNJ7n*MQb zj4w+P3!pRV{$j&DmPS9(a2~`j`R(%Zk_`+08Gy~cp!rX$KB}aFs86hBdQ0ct@E?Xa zv?^S?YyQPVH0)0?=@KhZfi)Bf6PC4eOU_tbY=g5tX91|NYX(QtC6Da7$M6p#{k#a? zak~kq{i^^vlGpPKz^{RI&pPjnJ95&tvmd11(St&tyIoH$^9#Zgq#r7k&Ob~D&DL?A z?1J$(C=2aJknpbj3zPR~84HLLj1{Qp!P>xQX48u%+(x+03y^-iG9d z(l+X$!LKSl24wxUPPk`I&XP;?X zf9?PFosta5>v;YR&r`wfnTY1xARM06fn5ZTB|a)k8rgJ^Z6f^*xM?O~UX9=#-S(h! zm91O&7_?o0QXq@Dbb{cBF8U;)|8P`rl^d!sJ?Ly1r4`I)ch;>hP|%#?d=*8-|KQ^5 zmlKFR%yav|q1p2rgPl@M%1whIE!z0m>rH2ZP|S%|@(BqAxHXMfT3e`pzr+9-=+Lr# zWB7Mvu0l{~rlhrGK#NAP4y^2m!OP(xYz{e}slI3c6FS?fGZ7sc^cR1RRmn~&gN*`B zwcUkl6va1gpF96@!zZpTO1@2uLVnI+p%>_5mALq35F?xz{j4DL?a>2~LpRQ$gNF|v z);`*oE5HG@Y<}0-eSSa64_gF6k+i(LoAM1FRU%G2>UryQmoI@#p&l(!C9F&Gkf((# z{;NKW<%?kSN-!)+P|LGy-ejMC%A+-W+QU>PzeN`ZDWAB(BFPL+x@YDUqwo%yGEb;* z<1Zg*D^yE-di7vg)U4NKOtTLknv$A2Zq@2BeSJJuA{j?&Z*RX`%uC_5W4F`EPxZkV z!Yjd(*1y7IGqtGt`wqXuD(&6AZ$d?ONR=^GK1C+i0KBG*E-b0|nS#_h4bfJoFHG(o zkmUym0te?=d(y!7HyZ~q=R?DziMeDJ`hlxA^~~nD_oH!#JI2kGitm|7t{0n!D6h(X)HS(knMv$@mpDjHlaMZ=u z=mmH()&#UGtT8czV!|ZAv5#?Rys{tf%HdQj9!`A|Ej+;cQn>#m85r`c`$1agmx$Sv zN9rdj9Vw(|(8N20nK3Yz%{cV z)2umse-l}^OcaZ(61hc0zMvE)w~zPx|LI&;ExQ-EeyNiy?!RZ=GL~?7W@>KJx|Af@ zE&OAxa6%4xW?ED3Po)(CUpV@`0b7gIPoGcGCqWf&VYwds6QmzLs`XQcX(91-I^}u-QS{)TY`@_XA!Tu5-Qlxld`Rt*iwzzGULn!oZu6&iBZP)GGk2 zXMW|9qBvS+^bY~zF^t&om1XbN3H9P@lBFGK{RM~8djCN&PXEh=OG@GuW$<#oui1;# zJJJ_B6$cA?_aWa3c^@`M!ktI*(6{L6s+`oZTMZN}uas_kQ#5&ZIZMa#$_IvpeG!wb zl4K|1B%42HRm7$9T&4nhY(RSmF~#zvD#a`9ErpAuHAQmH$@Iw3V^p=-`*I`+G%Ut% z;9F+UOvAIUuPA`#w9kUg+Zgm^e<&kbSa5wx_9?U`{GORmXCd0>50@3|b598Goqs&C zo=&<0<{|7)>cQKK{ZZP@pFcBp1*}ZRco;JBCY|=l(!G~^M6lW-J9b+2#pl)KCnNy% z(wj{udhsd$!q5)=M0*s=@W7YLD_p-(S8Fv1Zt19d*y3QzfQhyTV0DzMUL@ajM7KSuMGHb`>!lrlrGCZfvA zQkF|Ox_q!dJ>3d}2YeW3(Y&}C6AmSC@zS=T$KBbvUm#|H7n{(Y@wGxFZFtTwwo zSDw@mgJ)LVdnk0j`eUQcL)PcBkY2lc;=e+`+s}6e%WvM@yK0-eelfA^vfd*-s2L*V z``Sd*7rpxBxV3SkL|r+KIaE(q%;!7Q`F-paTuTFzMQKVT4`6O9B!V1|>|wV|!Obdh-Vp|$UcxxZv8qwOi6KD*QiyzK4TMtKL;Zf?-M z-DrVpmN{q~WUYpzU)MYRBsKf1eATrAz5L0a*YEXy!RVGQUFHwn4_F>!Ir*sx>wEsm z&z{Anom*sS3#>>N6Ygt`I4YBYsvnj(CrrHv8+R%i9y1zGX+SrziO(^&y%!l2^oJRl zOZ&Eu0{q@04he3=A;Af|kyJ^wgs`o2lhi4%kbWsGfqLxxWtQZFr<_ba*f(T;29S_;H{Ns$@;&I z>8e`15u;Y6v1bcCh=O@a+{r2VNMK6;YPs^qy<&&X$Ow1l)lp>2Vtxy$a+@Od!K%E^ z%VZ|S-dtV^?zB}4_<+w%Or)%s$g7*sk&xMl@y|qS(*DaDxejFHVA=denc|{3#PV|q z3$w6go19vqBEH61tMbgFRVlTm+Cr4OS5Zl>slpJHV(Uye(Ol{dLPMI)UEj{1@8X=^ zLDH43SO?CQJb>M*9uMWnKVho1#=%#9bUyFTQA%2ffZNVsWe}AWo4R0E>V0&3d;2l1 z^^(>;mdFT9d`a-F7@^Xz75=^|)7u5coaD{^>C;`eH`gR^$E>#BUWpR@BCPh}sb zOL3^8BZ^K$p_8n1C+_Z9%Y{oTFQB4wzLfX~B zZI93e*pAJ4`P926HKut7lsnN!$HzN2$lmkl?7IQ^_f~59)cg3jub&?+_wVsy*6?Lz zlk&}pY>LB9>xbRAvqBNwwxG;I9epMn1IFf~r5PVCdfXQ~uYke&4N6r1?#)w3R5MDu zpqctUofkk=5&h@Vu3idYzps#ma(IfaAA^bwQ;J%?JFo~Ez7lm4T%ZcDTdyzpH~Zt| zk~RWL>)mi9ymL(WE5K5X>S5)q)6Mkn6t|eL75a3 z2k=;(HC8q>ND|-5uXQv{Q}+70OC(o4BP^E!q}p)9f3JNq%x?+{Ml$E^Q{M_F$zs?F z*qs`g`M8;Fi}%$Np_4_Xt4#V#RB$36bg*v zO|SY;^KwU9-@*)=UjmOjTe8t0>-~5gxswaBz}16VW7lS~+GN zz%7QQ6k(s!XAD*X7-0py#QO+AZ$c`UVyZK080BmB`V)W!bm1c_xs8Zi>s8YNnl32F-dTSdg$8vaS@pky#VH8gUE63CnEXBIga(~-fC zcUJQ6zB|98X43I2bytu zi-G2ocZi!hLv@@0=9OP&(CtB1D}}Fp=Na*_^$-9}ykl4!yIp=0+JWIp{NHxbul8-m zXcTh}mw4WIIOR`vz`q1(+gd4|loja=U0hYlW)`TZ0qHP_q=U+f{ug`(4Dk#ic4Fg| zIDzN*<~U2|U?wnVfO={+>(TmPMV|ZMHT_N@FU8=cV7yXF&u6b1lQoYp$pL?*^#T5W z>aX;c7EkGaR;EVjBkD-b6sS=of~{FFebVwQvl>)4QKGcA z`7I(36fyi=?O*s`*kbgW*TT|=)>yO?PLEB0nh+* literal 0 HcmV?d00001 diff --git a/src/common/components/TimeSelect.vue b/src/common/components/TimeSelect.vue new file mode 100644 index 0000000..ab08fff --- /dev/null +++ b/src/common/components/TimeSelect.vue @@ -0,0 +1,117 @@ + + + diff --git a/src/common/components/icon-select/elementIcons.js b/src/common/components/icon-select/elementIcons.js new file mode 100644 index 0000000..b32ab26 --- /dev/null +++ b/src/common/components/icon-select/elementIcons.js @@ -0,0 +1,283 @@ +const elementIcons = [ + 'platform-eleme', + 'eleme', + 'delete-solid', + 'delete', + 's-tools', + 'setting', + 'user-solid', + 'user', + 'phone', + 'phone-outline', + 'more', + 'more-outline', + 'star-on', + 'star-off', + 's-goods', + 'goods', + 'warning', + 'warning-outline', + 'question', + 'info', + 'remove', + 'circle-plus', + 'success', + 'error', + 'zoom-in', + 'zoom-out', + 'remove-outline', + 'circle-plus-outline', + 'circle-check', + 'circle-close', + 's-help', + 'help', + 'minus', + 'plus', + 'check', + 'close', + 'picture', + 'picture-outline', + 'picture-outline-round', + 'upload', + 'upload2', + 'download', + 'camera-solid', + 'camera', + 'video-camera-solid', + 'video-camera', + 'message-solid', + 'bell', + 's-cooperation', + 's-order', + 's-platform', + 's-fold', + 's-unfold', + 's-operation', + 's-promotion', + 's-home', + 's-release', + 's-ticket', + 's-management', + 's-open', + 's-shop', + 's-marketing', + 's-flag', + 's-comment', + 's-finance', + 's-claim', + 's-custom', + 's-opportunity', + 's-data', + 's-check', + 's-grid', + 'menu', + 'share', + 'd-caret', + 'caret-left', + 'caret-right', + 'caret-bottom', + 'caret-top', + 'bottom-left', + 'bottom-right', + 'back', + 'right', + 'bottom', + 'top', + 'top-left', + 'top-right', + 'arrow-left', + 'arrow-right', + 'arrow-down', + 'arrow-up', + 'd-arrow-left', + 'd-arrow-right', + 'video-pause', + 'video-play', + 'refresh', + 'refresh-right', + 'refresh-left', + 'finished', + 'sort', + 'sort-up', + 'sort-down', + 'rank', + 'view', + 'c-scale-to-original', + 'date', + 'edit', + 'edit-outline', + 'folder', + 'folder-opened', + 'folder-add', + 'folder-remove', + 'folder-delete', + 'folder-checked', + 'tickets', + 'document-remove', + 'document-delete', + 'document-copy', + 'document-checked', + 'document', + 'document-add', + 'printer', + 'paperclip', + 'takeaway-box', + 'search', + 'monitor', + 'attract', + 'mobile', + 'scissors', + 'umbrella', + 'headset', + 'brush', + 'mouse', + 'coordinate', + 'magic-stick', + 'reading', + 'data-line', + 'data-board', + 'pie-chart', + 'data-analysis', + 'collection-tag', + 'film', + 'suitcase', + 'suitcase-1', + 'receiving', + 'collection', + 'files', + 'notebook-1', + 'notebook-2', + 'toilet-paper', + 'office-building', + 'school', + 'table-lamp', + 'house', + 'no-smoking', + 'smoking', + 'shopping-cart-full', + 'shopping-cart-1', + 'shopping-cart-2', + 'shopping-bag-1', + 'shopping-bag-2', + 'sold-out', + 'sell', + 'present', + 'box', + 'bank-card', + 'money', + 'coin', + 'wallet', + 'discount', + 'price-tag', + 'news', + 'guide', + 'male', + 'female', + 'thumb', + 'cpu', + 'link', + 'connection', + 'open', + 'turn-off', + 'set-up', + 'chat-round', + 'chat-line-round', + 'chat-square', + 'chat-dot-round', + 'chat-dot-square', + 'chat-line-square', + 'message', + 'postcard', + 'position', + 'turn-off-microphone', + 'microphone', + 'close-notification', + 'bangzhu', + 'time', + 'odometer', + 'crop', + 'aim', + 'switch-button', + 'full-screen', + 'copy-document', + 'mic', + 'stopwatch', + 'medal-1', + 'medal', + 'trophy', + 'trophy-1', + 'first-aid-kit', + 'discover', + 'place', + 'location', + 'location-outline', + 'location-information', + 'add-location', + 'delete-location', + 'map-location', + 'alarm-clock', + 'timer', + 'watch-1', + 'watch', + 'lock', + 'unlock', + 'key', + 'service', + 'mobile-phone', + 'bicycle', + 'truck', + 'ship', + 'basketball', + 'football', + 'soccer', + 'baseball', + 'wind-power', + 'light-rain', + 'lightning', + 'heavy-rain', + 'sunrise', + 'sunrise-1', + 'sunset', + 'sunny', + 'cloudy', + 'partly-cloudy', + 'cloudy-and-sunny', + 'moon', + 'moon-night', + 'dish', + 'dish-1', + 'food', + 'chicken', + 'fork-spoon', + 'knife-fork', + 'burger', + 'tableware', + 'sugar', + 'dessert', + 'ice-cream', + 'hot-water', + 'water-cup', + 'coffee-cup', + 'cold-drink', + 'goblet', + 'goblet-full', + 'goblet-square', + 'goblet-square-full', + 'refrigerator', + 'grape', + 'watermelon', + 'cherry', + 'apple', + 'pear', + 'orange', + 'coffee', + 'ice-tea', + 'ice-drink', + 'milk-tea', + 'potato-strips', + 'lollipop', + 'ice-cream-square', + 'ice-cream-round' +] + +export default elementIcons diff --git a/src/common/components/icon-select/index.vue b/src/common/components/icon-select/index.vue new file mode 100644 index 0000000..4802ff1 --- /dev/null +++ b/src/common/components/icon-select/index.vue @@ -0,0 +1,35 @@ + + diff --git a/src/common/components/icon-select/svgIcons.js b/src/common/components/icon-select/svgIcons.js new file mode 100644 index 0000000..c96eb30 --- /dev/null +++ b/src/common/components/icon-select/svgIcons.js @@ -0,0 +1,45 @@ +// webpack +// const req = require.context('@/icons/svg', false, /\.svg$/) +// const requireAll = requireContext => requireContext.keys() + +// const re = /\.\/(.*)\.svg/; + +// const svgIcons = requireAll(req).map(i => { +// return i.match(re)[1] +// }) +// vite +// const req = import.meta.globEager('/src/icons/svg/*.svg') +// const re = /\/svg\/(.*)\.svg/ +// const svgIcons = Object.keys(req).map(i => { +// return i.match(re)[1] +// }) + +export default [ + 'svg-about', + 'svg-basic-resource', + 'svg-bill', + 'svg-business', + 'svg-compute-resource', + 'svg-db', + 'svg-disabled', + 'svg-dot', + 'svg-middle', + 'svg-network-resource', + 'svg-operate', + 'svg-ops-analysis', + 'svg-order', + 'svg-permission', + 'svg-port', + 'svg-product', + 'svg-repository', + 'svg-resource-interface', + 'svg-resource-manage', + 'svg-resource-monitor', + 'svg-resource-ops', + 'svg-screen', + 'svg-security', + 'svg-service-ops', + 'svg-setting', + 'svg-storage-resource', + 'svg-task-platform' +] diff --git a/src/common/components/image-cropper/index.vue b/src/common/components/image-cropper/index.vue new file mode 100644 index 0000000..f7535cd --- /dev/null +++ b/src/common/components/image-cropper/index.vue @@ -0,0 +1,1442 @@ + + + + + diff --git a/src/common/components/image-cropper/utils/data2blob.js b/src/common/components/image-cropper/utils/data2blob.js new file mode 100644 index 0000000..222c710 --- /dev/null +++ b/src/common/components/image-cropper/utils/data2blob.js @@ -0,0 +1,20 @@ +/** + * database64文件格式转换为2进制 + * + * @param {[String]} data dataURL 的格式为 “data:image/png;base64,****”,逗号之前都是一些说明性的文字,我们只需要逗号之后的就行了 + * @param {[String]} mime [description] + * @return {[blob]} [description] + */ +/* eslint-disable*/ +export default function (data, mime) { + data = data.split(',')[1] + data = window.atob(data) + const ia = new Uint8Array(data.length) + for (let i = 0; i < data.length; i++) { + ia[i] = data.charCodeAt(i) + } + // canvas.toDataURL 返回的默认格式就是 image/png + return new Blob([ia], { + type: mime + }) +} diff --git a/src/common/components/image-cropper/utils/effectRipple.js b/src/common/components/image-cropper/utils/effectRipple.js new file mode 100644 index 0000000..6bbfcea --- /dev/null +++ b/src/common/components/image-cropper/utils/effectRipple.js @@ -0,0 +1,43 @@ +/** + * 点击波纹效果 + * + * @param {[event]} e [description] + * @param {[Object]} arg_opts [description] + * @return {[bollean]} [description] + */ +/* eslint-disable*/ +export default function (e, arg_opts) { + const opts = Object.assign( + { + ele: e.target, // 波纹作用元素 + type: 'hit', // hit点击位置扩散center中心点扩展 + bgc: 'rgba(0, 0, 0, 0.15)' // 波纹颜色 + }, + arg_opts + ), + target = opts.ele + if (target) { + let rect = target.getBoundingClientRect(), + ripple = target.querySelector('.e-ripple') + if (!ripple) { + ripple = document.createElement('span') + ripple.className = 'e-ripple' + ripple.style.height = ripple.style.width = Math.max(rect.width, rect.height) + 'px' + target.appendChild(ripple) + } else { + ripple.className = 'e-ripple' + } + switch (opts.type) { + case 'center': + ripple.style.top = rect.height / 2 - ripple.offsetHeight / 2 + 'px' + ripple.style.left = rect.width / 2 - ripple.offsetWidth / 2 + 'px' + break + default: + ripple.style.top = e.pageY - rect.top - ripple.offsetHeight / 2 - document.body.scrollTop + 'px' + ripple.style.left = e.pageX - rect.left - ripple.offsetWidth / 2 - document.body.scrollLeft + 'px' + } + ripple.style.backgroundColor = opts.bgc + ripple.className = 'e-ripple z-active' + return false + } +} diff --git a/src/common/components/image-cropper/utils/language.js b/src/common/components/image-cropper/utils/language.js new file mode 100644 index 0000000..cea0682 --- /dev/null +++ b/src/common/components/image-cropper/utils/language.js @@ -0,0 +1,365 @@ +export default { + zh: { + hint: '点击,或拖动图片至此处', + loading: '正在上传……', + noSupported: '浏览器不支持该功能,请使用IE10以上或其他现在浏览器!', + success: '上传成功', + fail: '图片上传失败', + preview: '预览', + btn: { + off: '取消', + close: '关闭', + back: '上一步', + save: '保存' + }, + error: { + onlyImg: '仅限图片格式', + outOfSize: '单文件大小不能超过 ', + lowestPx: '图片最低像素为(宽*高):' + } + }, + 'zh-tw': { + hint: '點擊,或拖動圖片至此處', + loading: '正在上傳……', + noSupported: '瀏覽器不支持該功能,請使用IE10以上或其他現代瀏覽器!', + success: '上傳成功', + fail: '圖片上傳失敗', + preview: '頭像預覽', + btn: { + off: '取消', + close: '關閉', + back: '上一步', + save: '保存' + }, + error: { + onlyImg: '僅限圖片格式', + outOfSize: '單文件大小不能超過 ', + lowestPx: '圖片最低像素為(寬*高):' + } + }, + en: { + hint: 'Click or drag the file here to upload', + loading: 'Uploading…', + noSupported: 'Browser is not supported, please use IE10+ or other browsers', + success: 'Upload success', + fail: 'Upload failed', + preview: 'Preview', + btn: { + off: 'Cancel', + close: 'Close', + back: 'Back', + save: 'Save' + }, + error: { + onlyImg: 'Image only', + outOfSize: 'Image exceeds size limit: ', + lowestPx: "Image's size is too low. Expected at least: " + } + }, + ro: { + hint: 'Atinge sau trage fișierul aici', + loading: 'Se încarcă', + noSupported: 'Browser-ul tău nu suportă acest feature. Te rugăm încearcă cu alt browser.', + success: 'S-a încărcat cu succes', + fail: 'A apărut o problemă la încărcare', + preview: 'Previzualizează', + + btn: { + off: 'Anulează', + close: 'Închide', + back: 'Înapoi', + save: 'Salvează' + }, + + error: { + onlyImg: 'Doar imagini', + outOfSize: 'Imaginea depășește limita de: ', + loewstPx: 'Imaginea este prea mică; Minim: ' + } + }, + ru: { + hint: 'Нажмите, или перетащите файл в это окно', + loading: 'Загружаю……', + noSupported: 'Ваш браузер не поддерживается, пожалуйста, используйте IE10 + или другие браузеры', + success: 'Загрузка выполнена успешно', + fail: 'Ошибка загрузки', + preview: 'Предпросмотр', + btn: { + off: 'Отменить', + close: 'Закрыть', + back: 'Назад', + save: 'Сохранить' + }, + error: { + onlyImg: 'Только изображения', + outOfSize: 'Изображение превышает предельный размер: ', + lowestPx: 'Минимальный размер изображения: ' + } + }, + 'pt-br': { + hint: 'Clique ou arraste o arquivo aqui para carregar', + loading: 'Carregando…', + noSupported: 'Browser não suportado, use o IE10+ ou outro browser', + success: 'Sucesso ao carregar imagem', + fail: 'Falha ao carregar imagem', + preview: 'Pré-visualizar', + btn: { + off: 'Cancelar', + close: 'Fechar', + back: 'Voltar', + save: 'Salvar' + }, + error: { + onlyImg: 'Apenas imagens', + outOfSize: 'A imagem excede o limite de tamanho: ', + lowestPx: 'O tamanho da imagem é muito pequeno. Tamanho mínimo: ' + } + }, + fr: { + hint: 'Cliquez ou glissez le fichier ici.', + loading: 'Téléchargement…', + noSupported: "Votre navigateur n'est pas supporté. Utilisez IE10 + ou un autre navigateur s'il vous plaît.", + success: 'Téléchargement réussit', + fail: 'Téléchargement echoué', + preview: 'Aperçu', + btn: { + off: 'Annuler', + close: 'Fermer', + back: 'Retour', + save: 'Enregistrer' + }, + error: { + onlyImg: 'Image uniquement', + outOfSize: "L'image sélectionnée dépasse la taille maximum: ", + lowestPx: "L'image sélectionnée est trop petite. Dimensions attendues: " + } + }, + nl: { + hint: 'Klik hier of sleep een afbeelding in dit vlak', + loading: 'Uploaden…', + noSupported: 'Je browser wordt helaas niet ondersteund. Gebruik IE10+ of een andere browser.', + success: 'Upload succesvol', + fail: 'Upload mislukt', + preview: 'Voorbeeld', + btn: { + off: 'Annuleren', + close: 'Sluiten', + back: 'Terug', + save: 'Opslaan' + }, + error: { + onlyImg: 'Alleen afbeeldingen', + outOfSize: 'De afbeelding is groter dan: ', + lowestPx: 'De afbeelding is te klein! Minimale afmetingen: ' + } + }, + tr: { + hint: 'Tıkla veya yüklemek istediğini buraya sürükle', + loading: 'Yükleniyor…', + noSupported: 'Tarayıcı desteklenmiyor, lütfen IE10+ veya farklı tarayıcı kullanın', + success: 'Yükleme başarılı', + fail: 'Yüklemede hata oluştu', + preview: 'Önizle', + btn: { + off: 'İptal', + close: 'Kapat', + back: 'Geri', + save: 'Kaydet' + }, + error: { + onlyImg: 'Sadece resim', + outOfSize: 'Resim yükleme limitini aşıyor: ', + lowestPx: 'Resmin boyutu çok küçük. En az olması gereken: ' + } + }, + 'es-MX': { + hint: 'Selecciona o arrastra una imagen', + loading: 'Subiendo...', + noSupported: 'Tu navegador no es soportado, por favor usa IE10+ u otros navegadores más recientes', + success: 'Subido exitosamente', + fail: 'Sucedió un error', + preview: 'Vista previa', + btn: { + off: 'Cancelar', + close: 'Cerrar', + back: 'Atrás', + save: 'Guardar' + }, + error: { + onlyImg: 'Únicamente imágenes', + outOfSize: 'La imagen excede el tamaño maximo:', + lowestPx: 'La imagen es demasiado pequeña. Se espera por lo menos:' + } + }, + de: { + hint: 'Klick hier oder zieh eine Datei hier rein zum Hochladen', + loading: 'Hochladen…', + noSupported: 'Browser wird nicht unterstützt, bitte verwende IE10+ oder andere Browser', + success: 'Upload erfolgreich', + fail: 'Upload fehlgeschlagen', + preview: 'Vorschau', + btn: { + off: 'Abbrechen', + close: 'Schließen', + back: 'Zurück', + save: 'Speichern' + }, + error: { + onlyImg: 'Nur Bilder', + outOfSize: 'Das Bild ist zu groß: ', + lowestPx: 'Das Bild ist zu klein. Mindestens: ' + } + }, + ja: { + hint: 'クリック・ドラッグしてファイルをアップロード', + loading: 'アップロード中...', + noSupported: 'このブラウザは対応されていません。IE10+かその他の主要ブラウザをお使いください。', + success: 'アップロード成功', + fail: 'アップロード失敗', + preview: 'プレビュー', + btn: { + off: 'キャンセル', + close: '閉じる', + back: '戻る', + save: '保存' + }, + error: { + onlyImg: '画像のみ', + outOfSize: '画像サイズが上限を超えています。上限: ', + lowestPx: '画像が小さすぎます。最小サイズ: ' + } + }, + ua: { + hint: 'Натисніть, або перетягніть файл в це вікно', + loading: 'Завантажую……', + noSupported: 'Ваш браузер не підтримується, будь ласка скористайтесь IE10 + або іншими браузерами', + success: 'Завантаження виконано успішно', + fail: 'Помилка завантаження', + preview: 'Попередній перегляд', + btn: { + off: 'Відмінити', + close: 'Закрити', + back: 'Назад', + save: 'Зберегти' + }, + error: { + onlyImg: 'Тільки зображення', + outOfSize: 'Зображення перевищує граничний розмір: ', + lowestPx: 'Мінімальний розмір зображення: ' + } + }, + it: { + hint: 'Clicca o trascina qui il file per caricarlo', + loading: 'Caricamento del file…', + noSupported: 'Browser non supportato, per favore usa IE10+ o un altro browser', + success: 'Caricamento completato', + fail: 'Caricamento fallito', + preview: 'Anteprima', + btn: { + off: 'Annulla', + close: 'Chiudi', + back: 'Indietro', + save: 'Salva' + }, + error: { + onlyImg: 'Sono accettate solo immagini', + outOfSize: "L'immagine eccede i limiti di dimensione: ", + lowestPx: "L'immagine è troppo piccola. Il requisito minimo è: " + } + }, + ar: { + hint: 'اضغط أو اسحب الملف هنا للتحميل', + loading: 'جاري التحميل...', + noSupported: 'المتصفح غير مدعوم ، يرجى استخدام IE10 + أو متصفح أخر', + success: 'تم التحميل بنجاح', + fail: 'فشل التحميل', + preview: 'معاينه', + btn: { + off: 'إلغاء', + close: 'إغلاق', + back: 'رجوع', + save: 'حفظ' + }, + error: { + onlyImg: 'صور فقط', + outOfSize: 'تتجاوز الصوره الحجم المحدد: ', + lowestPx: 'حجم الصورة صغير جدا. من المتوقع على الأقل: ' + } + }, + ug: { + hint: 'مەزكۇر دائىرىنى چىكىپ رەسىم تاللاڭ ياكى رەسىمنى سۆرەپ ئەكىرىڭ', + loading: 'يوللىنىۋاتىدۇ...', + noSupported: 'تور كۆرگۈچ بۇ ئىقتىدارنى قوللىمايدۇ ، يۇقىرى نەشىردىكى تور كۆرگۈچنى ئىشلىتىڭ', + success: 'غەلبىلىك بولدى', + fail: 'مەغلۇب بولدى', + preview: 'ئۈنۈم رەسىم', + btn: { + off: 'بولدى قىلىش', + close: 'تاقاش', + back: 'ئالدىنقى قەدەم', + save: 'ساقلاش' + }, + error: { + onlyImg: 'پەقەت رەسىم فورماتىنىلا قوللايدۇ', + outOfSize: 'رەسىم چوڭ - كىچىكلىكى چەكتىن ئىشىپ كەتتى', + lowestPx: 'رەسىمنىڭ ئەڭ كىچىك ئۆلچىمى :' + } + }, + th: { + hint: 'คลิ๊กหรือลากรูปมาที่นี่', + loading: 'กำลังอัพโหลด…', + noSupported: 'เบราเซอร์ไม่รองรับ, กรุณาใช้ IE เวอร์ชั่น 10 ขึ้นไป หรือใช้เบราเซอร์ตัวอื่น', + success: 'อัพโหลดสำเร็จ', + fail: 'อัพโหลดล้มเหลว', + preview: 'ตัวอย่าง', + btn: { + off: 'ยกเลิก', + close: 'ปิด', + back: 'กลับ', + save: 'บันทึก' + }, + error: { + onlyImg: 'ไฟล์ภาพเท่านั้น', + outOfSize: 'ไฟล์ใหญ่เกินกำหนด: ', + lowestPx: 'ไฟล์เล็กเกินไป. อย่างน้อยต้องมีขนาด: ' + } + }, + mm: { + hint: 'ဖိုင်ကို ဤနေရာတွင် နှိပ်၍ (သို့) ဆွဲထည့်၍ တင်ပါ', + loading: 'တင်နေသည်…', + noSupported: 'ဤဘရောက်ဇာကို အထောက်အပံ့ မပေးပါ၊ ကျေးဇူးပြု၍ IE10+ သို့မဟုတ် အခြား ဘရောက်ဇာ ကို အသုံးပြုပါ', + success: 'ဖိုင်တင်နေမှု မပြီးမြောက်ပါ', + fail: 'ဖိုင်တင်နေမှု မအောင်မြင်ပါ', + preview: 'အစမ်းကြည့်', + btn: { + off: 'မလုပ်တော့ပါ', + close: 'ပိတ်မည်', + back: 'နောက်သို့', + save: 'သိမ်းမည်' + }, + error: { + onlyImg: 'ဓာတ်ပုံ သီးသန့်သာ', + outOfSize: 'ဓာတ်ပုံဆိုဒ် ကြီးလွန်းသည် ။ အများဆုံး ဆိုဒ် : ', + lowestPx: 'ဓာတ်ပုံဆိုဒ် သေးလွန်းသည်။ အနည်းဆုံး ဆိုဒ် : ' + } + }, + se: { + hint: 'Klicka eller dra en fil hit för att ladda upp den', + loading: 'Laddar upp…', + noSupported: 'Din webbläsare stöds inte, vänligen använd IE10+ eller andra webbläsare', + success: 'Uppladdning lyckades', + fail: 'Uppladdning misslyckades', + preview: 'Förhandsgranska', + btn: { + off: 'Avbryt', + close: 'Stäng', + back: 'Tillbaka', + save: 'Spara' + }, + error: { + onlyImg: 'Endast bilder', + outOfSize: 'Bilden är större än max-gränsen: ', + lowestPx: 'Bilden är för liten. Minimum är: ' + } + } +} diff --git a/src/common/components/image-cropper/utils/mimes.js b/src/common/components/image-cropper/utils/mimes.js new file mode 100644 index 0000000..15d3bce --- /dev/null +++ b/src/common/components/image-cropper/utils/mimes.js @@ -0,0 +1,7 @@ +export default { + jpg: 'image/jpeg', + png: 'image/png', + gif: 'image/gif', + svg: 'image/svg+xml', + psd: 'image/photoshop' +} diff --git a/src/common/components/import-data/index.vue b/src/common/components/import-data/index.vue new file mode 100644 index 0000000..648409e --- /dev/null +++ b/src/common/components/import-data/index.vue @@ -0,0 +1,104 @@ + + diff --git a/src/common/components/index.js b/src/common/components/index.js new file mode 100644 index 0000000..3b89b27 --- /dev/null +++ b/src/common/components/index.js @@ -0,0 +1,10 @@ +import Vue from 'vue' +import SkuTable from './sku-table/index.vue' +import WsUploadFile from './upload-file/index.vue' +const components = { + SkuTable, + WsUploadFile +} +Object.keys(components).forEach((key) => { + Vue.component(key, components[key]) +}) diff --git a/src/common/components/sku-table/index.vue b/src/common/components/sku-table/index.vue new file mode 100644 index 0000000..41c4519 --- /dev/null +++ b/src/common/components/sku-table/index.vue @@ -0,0 +1,88 @@ + + + diff --git a/src/common/components/sku-table/utils.ts b/src/common/components/sku-table/utils.ts new file mode 100644 index 0000000..3a83b76 --- /dev/null +++ b/src/common/components/sku-table/utils.ts @@ -0,0 +1,32 @@ +export function modeUnitFilter(value: string): string { + const map: any = { + Hour: '小时', + Month: '月', + Year: '年' + } + return map[value] +} +export function getPrice(sku: any, mode: string): string | number { + const { spec, billPolicy, billable } = sku + // 不开启计费 + if (!billable) return 0 + const key = `${mode.toLowerCase()}Price` + // 规格计费 + if (billPolicy !== 'agility') return sku[key] + const basicPrice = JSON.parse(sku.basicPrice) + // 没有specName说明没有规格设置 + const flag = spec.every((item: any) => !item.specName || item.specValue) + // 无值直接返回 + if (!flag) return '/' + // 获取数值map + const countMap: any = {} + spec.forEach((item: any) => { + countMap[item.specName] = item.specValue + }) + let totalPrice = 0 + basicPrice.forEach((item: any) => { + const { specName } = item + totalPrice += item[key] * (countMap[specName] || 1) + }) + return totalPrice +} diff --git a/src/common/components/upload-file/index.vue b/src/common/components/upload-file/index.vue new file mode 100644 index 0000000..29b7d85 --- /dev/null +++ b/src/common/components/upload-file/index.vue @@ -0,0 +1,104 @@ + + + diff --git a/src/common/components/utils/Export2Excel.js b/src/common/components/utils/Export2Excel.js new file mode 100644 index 0000000..e0a7622 --- /dev/null +++ b/src/common/components/utils/Export2Excel.js @@ -0,0 +1,218 @@ +/* eslint-disable */ +import { saveAs } from 'file-saver' +import XLSX from 'xlsx' + +function generateArray(table) { + var out = [] + var rows = table.querySelectorAll('tr') + var ranges = [] + for (var R = 0; R < rows.length; ++R) { + var outRow = [] + var row = rows[R] + var columns = row.querySelectorAll('td') + for (var C = 0; C < columns.length; ++C) { + var cell = columns[C] + var colspan = cell.getAttribute('colspan') + var rowspan = cell.getAttribute('rowspan') + var cellValue = cell.innerText + if (cellValue !== '' && cellValue == +cellValue) cellValue = +cellValue + + //Skip ranges + ranges.forEach(function (range) { + if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) { + for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null) + } + }) + + //Handle Row Span + if (rowspan || colspan) { + rowspan = rowspan || 1 + colspan = colspan || 1 + ranges.push({ + s: { + r: R, + c: outRow.length + }, + e: { + r: R + rowspan - 1, + c: outRow.length + colspan - 1 + } + }) + } + + //Handle Value + outRow.push(cellValue !== '' ? cellValue : null) + + //Handle Colspan + if (colspan) for (var k = 0; k < colspan - 1; ++k) outRow.push(null) + } + out.push(outRow) + } + return [out, ranges] +} + +function datenum(v, date1904) { + if (date1904) v += 1462 + var epoch = Date.parse(v) + return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000) +} + +function sheet_from_array_of_arrays(data, opts) { + var ws = {} + var range = { + s: { + c: 10000000, + r: 10000000 + }, + e: { + c: 0, + r: 0 + } + } + for (var R = 0; R != data.length; ++R) { + for (var C = 0; C != data[R].length; ++C) { + if (range.s.r > R) range.s.r = R + if (range.s.c > C) range.s.c = C + if (range.e.r < R) range.e.r = R + if (range.e.c < C) range.e.c = C + var cell = { + v: data[R][C] + } + if (cell.v == null) continue + var cell_ref = XLSX.utils.encode_cell({ + c: C, + r: R + }) + + if (typeof cell.v === 'number') cell.t = 'n' + else if (typeof cell.v === 'boolean') cell.t = 'b' + else if (cell.v instanceof Date) { + cell.t = 'n' + cell.z = XLSX.SSF._table[14] + cell.v = datenum(cell.v) + } else cell.t = 's' + + ws[cell_ref] = cell + } + } + if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range) + return ws +} + +function Workbook() { + if (!(this instanceof Workbook)) return new Workbook() + this.SheetNames = [] + this.Sheets = {} +} + +function s2ab(s) { + var buf = new ArrayBuffer(s.length) + var view = new Uint8Array(buf) + for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xff + return buf +} + +export function export_table_to_excel(id) { + var theTable = document.getElementById(id) + var oo = generateArray(theTable) + var ranges = oo[1] + + /* original data */ + var data = oo[0] + var ws_name = 'SheetJS' + + var wb = new Workbook(), + ws = sheet_from_array_of_arrays(data) + + /* add ranges to worksheet */ + // ws['!cols'] = ['apple', 'banan']; + ws['!merges'] = ranges + + /* add worksheet to workbook */ + wb.SheetNames.push(ws_name) + wb.Sheets[ws_name] = ws + + var wbout = XLSX.write(wb, { + bookType: 'xlsx', + bookSST: false, + type: 'binary' + }) + + saveAs( + new Blob([s2ab(wbout)], { + type: 'application/octet-stream' + }), + 'test.xlsx' + ) +} + +export function exportJsonToExcel({ multiHeader = [], header, data, filename, merges = [], autoWidth = true, bookType = 'xlsx' } = {}) { + /* original data */ + filename = filename || 'excel-list' + data = [...data] + data.unshift(header) + + for (let i = multiHeader.length - 1; i > -1; i--) { + data.unshift(multiHeader[i]) + } + + var ws_name = 'SheetJS' + var wb = new Workbook(), + ws = sheet_from_array_of_arrays(data) + + if (merges.length > 0) { + if (!ws['!merges']) ws['!merges'] = [] + merges.forEach((item) => { + ws['!merges'].push(XLSX.utils.decode_range(item)) + }) + } + + if (autoWidth) { + /*设置worksheet每列的最大宽度*/ + const colWidth = data.map((row) => + row.map((val) => { + /*先判断是否为null/undefined*/ + if (val == null) { + return { + wch: 10 + } + } else if (val.toString().charCodeAt(0) > 255) { + /*再判断是否为中文*/ + return { + wch: val.toString().length * 2 + } + } else { + return { + wch: val.toString().length + } + } + }) + ) + /*以第一行为初始值*/ + let result = colWidth[0] + for (let i = 1; i < colWidth.length; i++) { + for (let j = 0; j < colWidth[i].length; j++) { + if (result[j]['wch'] < colWidth[i][j]['wch']) { + result[j]['wch'] = colWidth[i][j]['wch'] + } + } + } + ws['!cols'] = result + } + + /* add worksheet to workbook */ + wb.SheetNames.push(ws_name) + wb.Sheets[ws_name] = ws + + var wbout = XLSX.write(wb, { + bookType: bookType, + bookSST: false, + type: 'binary' + }) + saveAs( + new Blob([s2ab(wbout)], { + type: 'application/octet-stream' + }), + `${filename}.${bookType}` + ) +} diff --git a/src/common/components/utils/request.js b/src/common/components/utils/request.js new file mode 100644 index 0000000..34ce04d --- /dev/null +++ b/src/common/components/utils/request.js @@ -0,0 +1,102 @@ +/** + * Created by Zhang Haijun on 2017/8/24. + * axios#request(config) + * axios#get(url[, config]) + * axios#delete(url[, config]) + * axios#head(url[, config]) + * axios#options(url[, config]) + * axios#post(url[, data[, config]]) + * axios#put(url[, data[, config]]) + * axios#patch(url[, data[, config]]) + */ +import axios from 'axios' +import qs from 'qs' + +const codeMessage = { + 200: '服务器成功返回请求的数据。', + 201: '新建或修改数据成功。', + 202: '一个请求已经进入后台排队(异步任务)。', + 204: '删除数据成功。', + 400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。', + 401: '用户没有权限(令牌、用户名、密码错误)。', + 403: '用户得到授权,但是访问是被禁止的。', + 404: '发出的请求针对的是不存在的记录,服务器没有进行操作。', + 406: '请求的格式不可得。', + 410: '请求的资源被永久删除,且不会再得到的。', + 422: '当创建一个对象时,发生一个验证错误。', + 500: '服务器发生错误,请检查服务器。', + 502: '网关错误。', + 503: '服务不可用,服务器暂时过载或维护。', + 504: '网关超时。' +} +const axiosInstance = axios.create({ + baseURL: '/api', + headers: { 'Content-Type': 'application/x-www-form-urlencoded', BsmAjaxHeader: true }, + timeout: 20000, + paramsSerializer: (params) => { + return qs.stringify(params, { arrayFormat: 'indices' }) + } +}) +// 请求完成回调 +const finishCallback = function () {} +// 报错处理 +const handleError = function (response) { + if (!response) return // 容错处理 + const errorText = codeMessage[response.status] || response.statusText + // Notification({ + // type: 'error', + // title: `请求错误 ${response.status}: ${response.config.url}`, + // message: errorText + // }) + const error = new Error(errorText) + error.name = response.status + error.response = response + throw error +} +axiosInstance.interceptors.request.use( + (config) => { + const { + headers: { options = {} } + } = config + if (config.method === 'get') { + // 清除get缓存 + config.url = `${config.url}?t=${new Date().getTime()}` + } + config.headers.token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiIxMjE0NTQ2NzgyIiwiY2F0YWxvZyI6Ik1hbmFnZXIiLCJuYW1lIjoi6LaF57qn566h55CG5ZGYIiwiZXhwIjoxNjIzODI5OTA1LCJ1dWlkIjoxLCJhY2NvdW50IjoiYWRtaW4ifQ.H1TLrKni0z4xp3M55SUbUyLImgELqrZhCYrPXoKmucY' + delete config.headers.options + config.options = options + return config + }, + (error) => { + return Promise.reject(error) + } +) +axiosInstance.interceptors.response.use( + (data) => { + // const requestKey = getRequestIdentify(data.config); + // removePending(requestKey); + finishCallback() + const responseData = data.data + const { options } = data.config + if (!responseData.success) { + switch (responseData.status) { + case '402': + location.href = '/#/license' + break + case '401': + case '509': + break + default: + } + if (!options.ignoreError) { + } + } + return responseData + }, + (error) => { + finishCallback() + handleError(error.response) + return Promise.reject(error) + } +) +export default axiosInstance diff --git a/src/common/components/utils/resolvePath.js b/src/common/components/utils/resolvePath.js new file mode 100644 index 0000000..f608808 --- /dev/null +++ b/src/common/components/utils/resolvePath.js @@ -0,0 +1,13 @@ +/** + * Created by HaijunZhang on 2018/12/10. + */ +import path from 'path' +export function isExternalLink(path) { + return /^(http:|https:|mailto:|tel:)\/\//.test(path) +} +export function resolvePath(basePath, routePath) { + if (isExternalLink(routePath)) { + return routePath + } + return path.resolve(basePath, routePath) +} diff --git a/src/common/components/utils/tools.js b/src/common/components/utils/tools.js new file mode 100644 index 0000000..d684c7d --- /dev/null +++ b/src/common/components/utils/tools.js @@ -0,0 +1,39 @@ +/** + * Created by Zhang Haijun on 2021/2/2. + */ +// 查询参数封装优化 +export function handleSearchParam(params) { + // 设置参数 + const objParams = {} + function setParams(sign, key, value) { + if (objParams[sign]) { + objParams[sign][key] = value + } else { + objParams[sign] = { + [key]: value + } + } + } + // 将参数处理为对象 + for (const a in params) { + const value = params[a] + // 对参数进行处理,去除空参数 + if (value === '' || value === undefined || value === null) continue + // 对key值进行处理 + const [key, sign = 'EQ'] = a.split(':') + // 将sign全部转换为大写 + const signs = sign.toLocaleUpperCase() + if (signs === 'RANGE') { + const [first, second] = value + setParams('GET', key, first) + setParams('LET', key, second) + continue + } + setParams(signs, key, value) + } + const result = [] + for (const a in objParams) { + result.push({ param: objParams[a], sign: a }) + } + return JSON.stringify(result) +} diff --git a/src/common/css/common-var.scss b/src/common/css/common-var.scss new file mode 100644 index 0000000..f9e3ee1 --- /dev/null +++ b/src/common/css/common-var.scss @@ -0,0 +1,4 @@ +/* Color +-------------------------- */ + +$--color-primary: #1e54d5; diff --git a/src/common/css/common.scss b/src/common/css/common.scss new file mode 100644 index 0000000..b2ad1d2 --- /dev/null +++ b/src/common/css/common.scss @@ -0,0 +1,44 @@ +.buy-btn { + position: fixed; + top: 58px; + right: 20px; +} + +.tip { + font-size: 12px; + color: #999; +} + +.el-message-box__message { + word-break: break-all; +} + +.viewer-container.viewer-backdrop { + z-index: 99999999999999 !important; +} + +.w { + width: 200px !important; +} + +.el-radio-button__orig-radio:checked + .el-radio-button__inner { + color: #409eff; + background-color: #d5e8fc; + border-color: #409eff; +} + +.el-radio-button__inner { + min-width: 80px; +} + +.el-drawer.rtl { + overflow: auto; +} + +.tab-label-padding { + padding: 0 10px; +} + +.full-height { + height: 100%; +} diff --git a/src/common/css/element-variables.scss b/src/common/css/element-variables.scss new file mode 100644 index 0000000..02d3218 --- /dev/null +++ b/src/common/css/element-variables.scss @@ -0,0 +1,8 @@ +/* 改变主题色变量 */ + +@import './common-var'; + +/* 改变 icon 字体路径变量,必需 */ + +$--font-path: '~element-ui/lib/theme-chalk/fonts'; +@import '~element-ui/packages/theme-chalk/src/index'; diff --git a/src/common/css/font.scss b/src/common/css/font.scss new file mode 100644 index 0000000..5eb876f --- /dev/null +++ b/src/common/css/font.scss @@ -0,0 +1,23 @@ +$font-size: 16px; +$small-font-size: 14px; +.font-big { + font-size: $font-size; + .el-menu-item, + .el-submenu__title, + ul.header-menu li, + .el-tabs__item { + font-size: $font-size; + .iconfont { + font-size: $font-size; + } + } + .el-table--mini, + .el-table--small, + .el-table__expand-icon, + .app-levelbar, + .el-button--small, + .el-dropdown-link, + .common-detail .detail-body .basic-info .attr { + font-size: $font-size; + } +} diff --git a/src/common/css/hack.scss b/src/common/css/hack.scss new file mode 100644 index 0000000..f03df45 --- /dev/null +++ b/src/common/css/hack.scss @@ -0,0 +1,9 @@ +@media screen and(-ms-high-contrast:active), (-ms-high-contrast: none) { + .el-table__header, + .el-table__body { + width: 100% !important; + } + /* .basic-form-item{ + height: 32.76px; + } */ +} diff --git a/src/common/css/index.scss b/src/common/css/index.scss new file mode 100644 index 0000000..02629f0 --- /dev/null +++ b/src/common/css/index.scss @@ -0,0 +1,4 @@ +@import './lib/index'; +@import './hack.scss'; +@import './font.scss'; +@import './common.scss'; diff --git a/src/common/css/lib/button.scss b/src/common/css/lib/button.scss new file mode 100644 index 0000000..8acc7e9 --- /dev/null +++ b/src/common/css/lib/button.scss @@ -0,0 +1,29 @@ +.el-button--text { + padding: 0 !important; +} + +.el-button.el-button--text [class*='el-icon-'] + span { + margin-left: 2px; +} + +.el-button--ghost { + color: #666; + background-color: #fff; + border-color: #d9d9d9; +} + +.el-button--ghost:focus, +.el-button--ghost:hover { + color: #2b85e4; + background-color: transparent; + border-color: #2b85e4; +} + +.el-button--ghost.is-disabled, +.el-button--ghost.is-disabled:active, +.el-button--ghost.is-disabled:focus, +.el-button--ghost.is-disabled:hover { + color: #bbb; + background-color: #f7f7f7; + border-color: #d9d9d9; +} diff --git a/src/common/css/lib/common.scss b/src/common/css/lib/common.scss new file mode 100644 index 0000000..e12f9fe --- /dev/null +++ b/src/common/css/lib/common.scss @@ -0,0 +1,807 @@ +html, +body, +#app { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + font-size: 14px; + overflow: hidden !important; + font-family: Microsoft YaHei, Hiragino Sans GB; +} + +.app-wrapper { + position: relative; + width: 100%; + height: 100%; +} + +.wrapper { + box-shadow: none !important; +} + +.wrapper > .el-card__body { + padding: 15px; +} + +.wrapper-container { + padding: 8px; +} + +.wrapper-sm { + padding: 15px; +} + +.search-container { + position: relative; + padding: 15px !important; + border: 1px solid #ddd; + margin-bottom: 15px; +} + +.search-container > .legend { + color: rgba(18, 19, 20, 0.69); + background: #fff; + position: absolute; + text-align: center; + width: 78px; + top: -10px; + left: 15px; + font-size: 14px; +} + +.search-content > .search-item { + width: 20%; +} + +.pagination-container { + margin-top: 10px; + text-align: right; +} + +.iconfont { + font-size: 13px; +} + +.panel { + background-color: #fff; + margin-bottom: 15px; + border: 1px solid #dee5e7; +} + +.panel .panel-heading { + background-color: #edf1f2; + padding: 10px 15px; + border-bottom: 1px solid transparent; +} + +.panel .panel-body { + padding: 15px; +} + +/*边距共有样式*/ + +.text-center { + text-align: center; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.p-none { + padding: 0 !important; +} + +.m-xxs { + margin: 2px 4px; +} + +.m-xs { + margin: 5px; +} + +.m-sm { + margin: 10px; +} + +.m { + margin: 15px; +} + +.m-md { + margin: 20px; +} + +.m-lg { + margin: 30px; +} + +.m-xl { + margin: 50px; +} + +.m-n { + margin: 0 !important; +} + +.m-l-none { + margin-left: 0 !important; +} + +.m-l-xs { + margin-left: 5px; +} + +.m-l-sm { + margin-left: 10px !important; +} + +.m-l { + margin-left: 15px; +} + +.m-l-md { + margin-left: 20px; +} + +.m-l-lg { + margin-left: 30px; +} + +.m-l-xl { + margin-left: 40px; +} + +.m-l-xxl { + margin-left: 50px; +} + +.m-l-n-xxs { + margin-left: -1px; +} + +.m-l-n-xs { + margin-left: -5px; +} + +.m-l-n-sm { + margin-left: -10px; +} + +.m-l-n { + margin-left: -15px; +} + +.m-l-n-md { + margin-left: -20px; +} + +.m-l-n-lg { + margin-left: -30px; +} + +.m-l-n-xl { + margin-left: -40px; +} + +.m-l-n-xxl { + margin-left: -50px; +} + +.m-t-none { + margin-top: 0 !important; +} + +.m-t-xxs { + margin-top: 1px; +} + +.m-t-xs { + margin-top: 5px !important; +} + +.m-t-sm { + margin-top: 10px !important; +} + +.m-t { + margin-top: 15px; +} + +.m-t-md { + margin-top: 20px; +} + +.m-t-lg { + margin-top: 30px; +} + +.m-t-xl { + margin-top: 40px; +} + +.m-t-xxl { + margin-top: 50px; +} + +.m-t-n-xxs { + margin-top: -1px; +} + +.m-t-n-xs { + margin-top: -5px; +} + +.m-t-n-7 { + margin-top: -7px; +} + +.m-t-n-sm { + margin-top: -10px; +} + +.m-t-n { + margin-top: -15px; +} + +.m-t-n-md { + margin-top: -20px; +} + +.m-t-n-lg { + margin-top: -30px; +} + +.m-t-n-xl { + margin-top: -40px; +} + +.m-t-n-xxl { + margin-top: -50px; +} + +.m-t-n-xxxl { + margin-top: -60px; +} + +.m-r-none { + margin-right: 0 !important; +} + +.m-r-xxs { + margin-right: 1px; +} + +.m-r-xs { + margin-right: 5px; +} + +.m-r-sm { + margin-right: 10px !important; +} + +.m-r { + margin-right: 15px !important; +} + +.m-r-md { + margin-right: 20px; +} + +.m-r-lg { + margin-right: 30px; +} + +.m-r-xl { + margin-right: 40px; +} + +.m-r-xxl { + margin-right: 50px; +} + +.m-r-n-xxs { + margin-right: -1px; +} + +.m-r-n-xs { + margin-right: -5px; +} + +.m-r-n-sm { + margin-right: -10px; +} + +.m-r-n { + margin-right: -15px; +} + +.m-r-n-md { + margin-right: -20px; +} + +.m-r-n-lg { + margin-right: -30px; +} + +.m-r-n-xl { + margin-right: -40px; +} + +.m-r-n-xxl { + margin-right: -50px; +} + +.m-b-none { + margin-bottom: 0 !important; +} + +.m-b-xxs { + margin-bottom: 1px; +} + +.m-b-xs { + margin-bottom: 5px; +} + +.m-b-sm { + margin-bottom: 10px !important; +} + +.m-b { + margin-bottom: 15px !important; +} + +.m-b-md { + margin-bottom: 20px; +} + +.m-b-lg { + margin-bottom: 30px; +} + +.m-b-xl { + margin-bottom: 40px; +} + +.m-b-xxl { + margin-bottom: 50px; +} + +.m-b-n-xxs { + margin-bottom: -1px; +} + +.m-b-n-xs { + margin-bottom: -5px; +} + +.m-b-n-sm { + margin-bottom: -10px; +} + +.m-b-n { + margin-bottom: -15px; +} + +.m-b-n-md { + margin-bottom: -20px; +} + +.m-b-n-lg { + margin-bottom: -30px; +} + +.m-b-n-xl { + margin-bottom: -40px; +} + +.m-b-n-xxl { + margin-bottom: -50px; +} + +/*颜色共有样式*/ + +.btn-info { + color: #ffffff !important; + background-color: #497edf; + border-color: #497edf; +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #ffffff !important; + background-color: #2059c1; + border-color: #2059c1; +} + +.btn-success { + color: #ffffff !important; + background-color: #27c24c; + border-color: #27c24c; +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #ffffff !important; + background-color: #23ad44; + border-color: #20a03f; +} + +.btn-danger { + color: #ffffff !important; + background-color: #f05050; + border-color: #f05050; +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #ffffff !important; + background-color: #ee3939; + border-color: #ed2a2a; +} + +.text-info { + color: #00aeef !important; +} + +.text-success { + color: #27c24c !important; +} + +.text-warning { + color: #fad733 !important; +} + +.text-danger { + color: #f05050; +} + +.text-white { + color: #fff !important; +} + +.text-left { + text-align: left !important; +} + +.text-center { + text-align: center !important; +} + +.text-right { + text-align: right !important; +} + +/*宽度样式*/ + +.w-xxs { + width: 60px; +} + +.w-xs { + width: 90px; +} + +.w-110 { + width: 110px; +} + +.w-ss { + width: 120px; +} + +.w-sm { + width: 150px; +} + +.w { + width: 200px; +} + +.w-md { + width: 240px; +} + +.w-lg { + width: 280px !important; +} + +.w-xl { + width: 320px; +} + +.w-xxl { + width: 360px; +} + +.w-full { + width: 100% !important; +} + +.w-auto { + width: auto; +} + +.upload-file-btn { + position: relative; + cursor: pointer; +} + +.upload-file-btn input[type='file'] { + width: 100%; + height: 100%; + font-size: 300px; + opacity: 0; + filter: alpha(opacity=0); + cursor: pointer; + left: 0; + right: 0; + bottom: 0; + top: 0; + position: absolute; + padding: 0px; + margin: 0px; + overflow: hidden; +} + +/*详情表格*/ + +.detail-box { + margin-top: 10px; + margin-bottom: 10px; +} + +.detail-title { + margin-bottom: 15px; + text-indent: 8px; + border-left: 3px solid #88b7e0; + font-size: 14px; + font-weight: 600; +} + +.detail-href { + color: $--color-primary !important; + cursor: pointer; + text-decoration: none !important; +} + +.detail-table { + width: 100%; + border-collapse: collapse; +} + +.detail-table td.title { + color: #000; + width: 85px; + font-size: 12px; + font-weight: bold; +} + +.detail-table td, +.detail-table th { + padding: 6px 8px; + border: 1px solid #ddd; + min-width: 85px; + width: 250px; + word-break: break-all; + white-space: pre-wrap; + /*border: none;*/ +} + +.border-top-none { + border-top: none !important; +} + +a { + color: inherit; + cursor: pointer; + text-decoration: none; +} + +.bounce-enter-active, +.bounce-leave-active, +.bounceDown-enter-active, +.bounceDown-leave-active, +.bounceIn, +.bounceInDown, +.bounceInLeft, +.bounceInRight, +.bounceInUp, +.bounceLeft-enter-active, +.bounceLeft-leave-active, +.bounceOut, +.bounceOutDown, +.bounceOutLeft, +.bounceOutRight, +.bounceOutUp, +.bounceRight-enter-active, +.bounceRight-leave-active, +.bounceUp-enter-active, +.bounceUp-leave-active, +.fade-enter-active, +.fade-leave-active, +.fadeDown-enter-active, +.fadeDown-leave-active, +.fadeDownBig-enter-active, +.fadeDownBig-leave-active, +.fadeIn, +.fadeInDown, +.fadeInDownBig, +.fadeInLeft, +.fadeInLeftBig, +.fadeInRight, +.fadeInRightBig, +.fadeInUp, +.fadeInUpBig, +.fadeLeft-enter-active, +.fadeLeft-leave-active, +.fadeLeftBig-enter-active, +.fadeLeftBig-leave-active, +.fadeOut, +.fadeOutDown, +.fadeOutDownBig, +.fadeOutLeft, +.fadeOutLeftBig, +.fadeOutRight, +.fadeOutRightBig, +.fadeOutUp, +.fadeOutUpBig, +.fadeRight-enter-active, +.fadeRight-leave-active, +.fadeRightBig-enter-active, +.fadeRightBig-leave-active, +.fadeUp-enter-active, +.fadeUp-leave-active, +.fadeUpBig-enter-active, +.fadeUpBig-leave-active, +.rotateDownLeft-enter-active, +.rotateDownLeft-leave-active, +.rotateDownRight-enter-active, +.rotateDownRight-leave-active, +.rotateInDownLeft, +.rotateInDownRight, +.rotateInUpLeft, +.rotateInUpRight, +.rotateOutDownLeft, +.rotateOutDownRight, +.rotateOutUpLeft, +.rotateOutUpRight, +.rotateUpLeft-enter-active, +.rotateUpLeft-leave-active, +.rotateUpRight-enter-active, +.rotateUpRight-leave-active, +.slide-enter-active, +.slide-leave-active, +.slideDown-enter-active, +.slideDown-leave-active, +.slideIn, +.slideInDown, +.slideInLeft, +.slideInRight, +.slideInUp, +.slideLeft-enter-active, +.slideLeft-leave-active, +.slideOut, +.slideOutDown, +.slideOutLeft, +.slideOutRight, +.slideOutUp, +.slideRight-enter-active, +.slideRight-leave-active, +.slideUp-enter-active, +.slideUp-leave-active, +.zoom-enter-active, +.zoom-leave-active, +.zoomDown-enter-active, +.zoomDown-leave-active, +.zoomIn, +.zoomInDown, +.zoomInLeft, +.zoomInRight, +.zoomInUp, +.zoomLeft-enter-active, +.zoomLeft-leave-active, +.zoomOut, +.zoomOutDown, +.zoomOutLeft, +.zoomOutRight, +.zoomOutUp, +.zoomRight-enter-active, +.zoomRight-leave-active, +.zoomUp-enter-active, +.zoomUp-leave-active { + animation-duration: 0.6s !important; + animation-fill-mode: both; +} + +.cur-point { + cursor: pointer !important; +} + +/*无数据*/ + +.no-data { + text-align: center; + min-height: 200px; + line-height: 200px; +} + +.no-data .icon-zanwushuju { + font-size: 26px; + color: #d2cccc; +} + +/*.custom-dialog .el-dialog{*/ + +/*width: 80%;*/ + +/*height: 100%;*/ + +/*position: absolute;*/ + +/*right: 0;*/ + +/*}*/ + +.text-ellipsis { + display: block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.text-muted { + color: #98a6ad; +} + +.custom-scrollbar .el-scrollbar__wrap { + overflow-x: hidden !important; +} + +.action-divider { + margin: 0 8px; + display: inline-block; + height: 1em; + width: 1px; + vertical-align: middle; + position: relative; + top: -0.06em; + font-size: 14px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 0; + background: #e8e8e8; +} + +.dialog-sm { + width: 300px; +} + +.dialog-md { + width: 800px; +} + +.dialog-lg { + width: 950px; +} + +:-ms-input-placeholder { + /* Internet Explorer 10+ */ + color: #e9d6cf !important; +} diff --git a/src/common/css/lib/components/index.scss b/src/common/css/lib/components/index.scss new file mode 100644 index 0000000..321000d --- /dev/null +++ b/src/common/css/lib/components/index.scss @@ -0,0 +1,2 @@ +@import './theme.scss'; +@import './table.scss'; diff --git a/src/common/css/lib/components/sidebar.scss b/src/common/css/lib/components/sidebar.scss new file mode 100644 index 0000000..ba54eb6 --- /dev/null +++ b/src/common/css/lib/components/sidebar.scss @@ -0,0 +1,130 @@ +.sidebar-container { + z-index: 3; + width: 180px !important; + transition: width 0.18s; + .scrollbar-wrapper { + height: calc(100vh - 50px); + .el-scrollbar__wrap { + overflow-x: hidden; + } + } + .sidebar-menu { + width: 180px; + height: calc(100vh - 50px); + border: 0; + } + .sidebar-menu::-webkit-scrollbar { + display: none; + } + .el-submenu__title > i, + .el-menu-item > i { + margin-right: 6px; + } + .el-submenu.is-opened .el-submenu__title { + color: #fff !important; + & > i { + color: #fff !important; + } + } + .el-menu-item.is-active i { + color: #fff !important; + } + .el-submenu .el-menu-item { + min-width: 180px !important; + background: #15171d !important; + &.is-active { + background: #1890ff !important; + } + } + .menu-wrapper .el-menu-item { + &.is-active { + background: #1890ff !important; + } + } + .el-menu--collapse { + width: 64px; + overflow: inherit; + } + .logo { + height: 50px; + position: relative; + line-height: 50px; + transition: all 0.3s; + background: #21242e; + overflow: hidden; + text-align: center; + img { + display: inline-block; + vertical-align: middle; + height: 32px; + } + .short-logo { + display: none; + } + h1 { + color: #fff; + display: inline-block; + vertical-align: middle; + font-size: 18px; + margin: 0 0 0 8px; + font-family: 'Myriad Pro', 'Helvetica Neue', Arial, Helvetica, sans-serif; + font-weight: 600; + } + } +} +.hideSidebar { + .sidebar-container { + width: 64px !important; + .el-menu--collapse { + .el-submenu { + overflow: hidden; + & > .el-submenu__title { + & > span { + height: 0; + width: 0; + overflow: hidden; + visibility: hidden; + display: inline-block; + } + .el-submenu__icon-arrow { + display: none; + } + } + } + } + .logo { + img { + display: none; + } + .short-logo { + display: inline-block; + } + } + } +} +.top-menu { + float: left; +} +// 顶部布局 +.el-menu--horizontal { + border: none !important; + & > .menu-wrapper { + float: left; + } + .el-menu-item > i, + .el-submenu__title > i { + margin-right: 6px; + } + .el-menu-item { + float: left; + height: 60px; + line-height: 60px; + margin: 0; + //border-bottom: 2px solid transparent; + color: #909399; + &.is-active { + //border-bottom: 2px solid #409eff; + color: #303133; + } + } +} diff --git a/src/common/css/lib/components/table.scss b/src/common/css/lib/components/table.scss new file mode 100644 index 0000000..195aeec --- /dev/null +++ b/src/common/css/lib/components/table.scss @@ -0,0 +1,22 @@ +.table-container { + .custom-header { + background: #f5f7fa !important; + color: #333; + border-bottom: 1px solid #dcdfe6 !important; + } + .el-table--enable-row-hover .el-table__body tr:hover > td { + background-color: #eaf3fd; + } + .gutter { + background: #f5f7fa !important; + color: #333; + border-bottom: 1px solid #dcdfe6 !important; + } + .pagination-container { + margin-top: 10px; + text-align: right; + .el-pagination__jump { + margin-left: 0; + } + } +} diff --git a/src/common/css/lib/components/theme.scss b/src/common/css/lib/components/theme.scss new file mode 100644 index 0000000..26d17ed --- /dev/null +++ b/src/common/css/lib/components/theme.scss @@ -0,0 +1,49 @@ +.theme-container { + width: 280px; + padding: 0 !important; + top: 30px !important; + .popper__arrow { + display: none !important; + } + .el-card__header { + padding: 10px 20px; + } +} +.theme-setting { + .icon-huanfu { + font-size: 18px; + cursor: pointer; + } +} +.theme-cell { + height: 30px; + position: relative; + cursor: pointer; + margin-bottom: 5px; + span { + height: 100%; + width: 100%; + position: absolute; + background-color: rgba(32, 43, 54, 0.5); + text-align: center; + display: inherit; + .icon-ok { + position: relative; + top: 6px; + display: inline-block; + font-weight: 400; + font-size: 17px; + line-height: 1; + color: #fff; + } + } + b { + display: inline-block; + float: left; + width: 50%; + height: 20px; + } + b.t-header { + height: 10px; + } +} diff --git a/src/common/css/lib/element-ui.scss b/src/common/css/lib/element-ui.scss new file mode 100644 index 0000000..3b63b6c --- /dev/null +++ b/src/common/css/lib/element-ui.scss @@ -0,0 +1,130 @@ +@import './button.scss'; +.el-select { + width: 100%; +} + +.el-notification__content { + word-break: break-word; +} + +.el-cascader { + width: 100%; +} + +.el-form-item { + margin-bottom: 15px; +} + +.el-button--mini, +.el-button--mini.is-round { + padding: 4px 15px !important; +} + +.el-form-item--mini.el-form-item, +.el-form-item--small.el-form-item { + margin-bottom: 18px; +} + +.el-table .cell { + white-space: nowrap; +} + +.el-card { + box-shadow: none; + border-radius: 0 !important; +} + +.el-tabs--border-card { + -webkit-box-shadow: none !important; + box-shadow: none !important; +} + +.el-card__header { + padding: 10px 20px !important; +} + +.el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content { + background-color: rgb(236 245 255) !important; + color: rgb(64 158 255); +} + +.el-breadcrumb__inner, +.el-breadcrumb__inner a { + -webkit-transition: color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1); + transition: color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1); + color: #666 !important; + font-weight: normal !important; +} + +.el-progress-bar__inner { + max-width: 100%; +} + +.el-progress__text { + font-size: 12px !important; +} + +.el-dropdown-link { + cursor: pointer; + color: $--color-primary; + font-size: 12px; +} + +.el-pagination button, +.el-pagination span:not([class*='suffix']) { + font-size: 12px; +} + +.el-pagination__sizes .el-input .el-input__inner { + font-size: 12px; +} + +.el-pager li { + font-size: 12px; +} + +.el-input--small { + font-size: 13px; +} + +.el-tabs__content { + position: static !important; +} + +//menu +.el-submenu .el-menu-item { + height: 48px; + line-height: 48px; +} + +.el-menu-item, +.el-submenu__title { + height: 48px; + line-height: 48px; +} + +.el-dialog { + .el-dialog--middle { + width: 60%; + } + .el-dialog__header { + display: flex; + align-items: center; + padding: 14px 20px; + font-weight: bold; + border-bottom: 1px solid #e0e0e0; + .el-dialog__title { + flex: 1; + color: #010033; + font-size: 14px; + } + .el-dialog__headerbtn { + position: static; + } + } + .el-dialog__footer { + padding: 14px 20px; + text-align: right; + border-top: 1px solid #e0e0e0; + } +} diff --git a/src/common/css/lib/index.scss b/src/common/css/lib/index.scss new file mode 100644 index 0000000..7b99646 --- /dev/null +++ b/src/common/css/lib/index.scss @@ -0,0 +1,3 @@ +@import './common.scss'; +@import './element-ui.scss'; +@import './components/index.scss'; diff --git a/src/common/directive/index.js b/src/common/directive/index.js new file mode 100644 index 0000000..1cf833c --- /dev/null +++ b/src/common/directive/index.js @@ -0,0 +1,12 @@ +/** + * Created by Zhang Haijun on 2018/1/25. + */ +/* global $ */ +import Vue from 'vue' +import store from '@/store' +export const permission = Vue.directive('permission', function (el, binding) { + const buttons = store.state.permission.buttons + if (!buttons.includes(binding.value)) { + el.parentNode && el.parentNode.removeChild(el) + } +}) diff --git a/src/common/hooks/useGlobalWebsocket.ts b/src/common/hooks/useGlobalWebsocket.ts new file mode 100644 index 0000000..99b0402 --- /dev/null +++ b/src/common/hooks/useGlobalWebsocket.ts @@ -0,0 +1,3 @@ +export default function (onmessage: { (): void }, context: any) { + context.root.$store.state.app.$webSocket.onmessage = onmessage +} diff --git a/src/common/hooks/useSelection.js b/src/common/hooks/useSelection.js new file mode 100644 index 0000000..0ee2d54 --- /dev/null +++ b/src/common/hooks/useSelection.js @@ -0,0 +1,11 @@ +import { ref } from '@vue/composition-api' +export default function () { + const selectionIds = ref([]) + function handleSelectionChange(selections) { + selectionIds.value = selections.map((item) => item.id) + } + return { + selectionIds, + handleSelectionChange + } +} diff --git a/src/common/hooks/useTable.ts b/src/common/hooks/useTable.ts new file mode 100644 index 0000000..8ba2c9c --- /dev/null +++ b/src/common/hooks/useTable.ts @@ -0,0 +1,87 @@ +import { ref, toRefs, reactive } from '@vue/composition-api' +import { MessageBox, Message } from 'element-ui' +import { handleSearchParam } from 'cmp-element/utils' + +interface IRemoveService { + (id: number): Promise +} +interface IConfigs { + getService: { + (params: Base.IListParams): Promise + } + removeService?: IRemoveService + listFormat?: { + (data: any): any[] + } + afterGetList?: { + (): void + } + rows?: number + params?: any + initParams?: any + deleteTipKey?: string +} +interface IRecord { + id: number + name: string +} +export function useDelete(removeService: IRemoveService, getData: { (): void }, deleteTipKey = 'name') { + function handleDelete(record: any) { + MessageBox.confirm(`您确定要删除【${record[deleteTipKey]}】吗?`, '提示', { + confirmButtonClass: 'el-button--danger', + type: 'warning' + }) + .then(async () => { + const res = await removeService(record.id) + if (res.success) { + Message.success(res.message) + getData() + } + }) + .catch((e) => {}) + } + return { + handleDelete + } +} +export default function (configs: IConfigs) { + const { getService, removeService, listFormat, rows = 10, params = {}, afterGetList, initParams, deleteTipKey = 'name' } = configs + const loading = ref(false) + const state: Base.IListState = reactive({ + list: [], + total: 0, + params: { + page: 1, + rows, + ...params + } + }) + if (initParams) { + state.params.params = handleSearchParam(initParams) + } + async function getList() { + loading.value = true + try { + const data = await getService(state.params) + loading.value = false + if (data.success) { + if (listFormat) { + state.list = listFormat(data.data.rows) + } else { + state.list = data.data.rows + } + state.total = data.data.total + afterGetList && afterGetList() + } + } catch (e) { + loading.value = false + } + } + const { handleDelete } = useDelete(removeService as IRemoveService, getList, deleteTipKey) + return { + loading, + ...toRefs(state), + getList, + handleDelete + } +} diff --git a/src/common/hooks/useWebsocket.ts b/src/common/hooks/useWebsocket.ts new file mode 100644 index 0000000..68100a2 --- /dev/null +++ b/src/common/hooks/useWebsocket.ts @@ -0,0 +1,22 @@ +import { onUnmounted, ref } from '@vue/composition-api' +import WebSocket from 'cmp-socket' +import { getToken } from 'utils/auth' +export default function (onmessage: { (): void }) { + const protocol = location.protocol === 'http:' ? 'ws' : 'wss' + let webSocket = new WebSocket({ + url: `${protocol}://${location.host}/api/sms/messageService`, + pingMsg: 'HeartBeat', + reConnectNum: 5, + params: getToken() + }) + if (onmessage && typeof onmessage === 'function') { + webSocket.onmessage = onmessage + } + onUnmounted(() => { + webSocket.Destroy() + webSocket = null + }) + return { + webSocket + } +} diff --git a/src/common/interface/index.ts b/src/common/interface/index.ts new file mode 100644 index 0000000..426fd53 --- /dev/null +++ b/src/common/interface/index.ts @@ -0,0 +1,22 @@ +export interface IListParams { + page: number + rows: number + simple?: boolean + params?: string +} + +export interface IAjaxData { + success: boolean + failed: boolean + solution: string + message: string + errorMsg: string + data: any + status: string +} + +export interface IDialogConfig { + visible: boolean + id?: number + vendorId?: number +} diff --git a/src/common/mixins/getGlobalSocket.js b/src/common/mixins/getGlobalSocket.js new file mode 100644 index 0000000..cc9f32b --- /dev/null +++ b/src/common/mixins/getGlobalSocket.js @@ -0,0 +1,10 @@ +export default { + computed: { + $webSocket() { + return this.$store.state.app.$webSocket + } + }, + created() { + this.$webSocket.onmessage = this.onmessage + } +} diff --git a/src/common/mixins/selection.js b/src/common/mixins/selection.js new file mode 100644 index 0000000..7b0e1b3 --- /dev/null +++ b/src/common/mixins/selection.js @@ -0,0 +1,12 @@ +export default { + data() { + return { + selectionIds: [] + } + }, + methods: { + handleSelectionChange(selections) { + this.selectionIds = selections.map((item) => item.id) + } + } +} diff --git a/src/common/mixins/webSocket.js b/src/common/mixins/webSocket.js new file mode 100644 index 0000000..09ee953 --- /dev/null +++ b/src/common/mixins/webSocket.js @@ -0,0 +1,29 @@ +import WebSocket from 'cmp-socket' +import { getToken } from 'utils/auth' +export default { + data() { + return { + webSocket: '' + } + }, + created() { + const protocol = location.protocol === 'http:' ? 'ws' : 'wss' + this.webSocket = new WebSocket({ + url: `${protocol}://${location.host}/api/sms/messageService`, + commonFun: this.messageCommonFun, + pingMsg: 'HeartBeat', + reConnectNum: 5, + params: getToken() + }) + if (this.onmessage && typeof this.onmessage === 'function') { + this.webSocket.onmessage = this.onmessage + } + }, + destroyed() { + this.webSocket.Destroy() + this.webSocket = null + }, + methods: { + messageCommonFun() {} + } +} diff --git a/src/common/types/shims-ajax.d.ts b/src/common/types/shims-ajax.d.ts new file mode 100644 index 0000000..413445a --- /dev/null +++ b/src/common/types/shims-ajax.d.ts @@ -0,0 +1,21 @@ +import {} from 'axios' +declare module 'axios' { + export interface AxiosInstance { + (config: AxiosRequestConfig): AxiosPromise + (url: string, config?: AxiosRequestConfig): AxiosPromise + defaults: AxiosRequestConfig + interceptors: { + request: AxiosInterceptorManager + response: AxiosInterceptorManager + } + getUri(config?: AxiosRequestConfig): string + request>(config: AxiosRequestConfig): Promise + get>(url: string, config?: AxiosRequestConfig): Promise + delete>(url: string, config?: AxiosRequestConfig): Promise + head>(url: string, config?: AxiosRequestConfig): Promise + options>(url: string, config?: AxiosRequestConfig): Promise + post>(url: string, data?: any, config?: AxiosRequestConfig): Promise + put>(url: string, data?: any, config?: AxiosRequestConfig): Promise + patch>(url: string, data?: any, config?: AxiosRequestConfig): Promise + } +} diff --git a/src/common/types/shims-global.d.ts b/src/common/types/shims-global.d.ts new file mode 100644 index 0000000..eefd756 --- /dev/null +++ b/src/common/types/shims-global.d.ts @@ -0,0 +1,54 @@ +declare module Base { + // ajax请求返回数据格式 + interface IResponseData { + success: boolean + failed: boolean + solution: string + message: string + errorMsg: string + data: T + status: string + } + // list接口返回数据格式 + interface IListData { + page: number + pages: number + total: number + rows: T[] + } + interface IResponseList extends IResponseData { + data: IListData + } + // 列表查询传参 + interface IListParams { + page?: number + rows?: number + simple?: boolean + params?: string + sorter?: string + } + // 模态框打开 + interface IDialog { + visible: boolean + record: T + } + // 搜索配置 + interface ISearchConfig { + label?: string + value: string + type: string + initValue?: string | number + sign?: string + data?: T[] + disabled?: boolean + onChange?: { + (val: string, listQuery: any): void + } + } + // 列表 + type IListState = { + list: T[] + total: number + params: IListParams + } +} diff --git a/src/common/types/shims-tsx.d.ts b/src/common/types/shims-tsx.d.ts new file mode 100644 index 0000000..c656c68 --- /dev/null +++ b/src/common/types/shims-tsx.d.ts @@ -0,0 +1,13 @@ +import Vue, { VNode } from 'vue' + +declare global { + namespace JSX { + // tslint:disable no-empty-interface + interface Element extends VNode {} + // tslint:disable no-empty-interface + interface ElementClass extends Vue {} + interface IntrinsicElements { + [elem: string]: any + } + } +} diff --git a/src/common/types/shims-vue.d.ts b/src/common/types/shims-vue.d.ts new file mode 100644 index 0000000..cb609c2 --- /dev/null +++ b/src/common/types/shims-vue.d.ts @@ -0,0 +1,10 @@ +import Vue from 'vue' + +declare module '*.vue' { + export default Vue +} +declare module 'vue/types/vue' { + interface Vue { + $tools: any + } +} diff --git a/src/common/types/shims.tools.d.ts b/src/common/types/shims.tools.d.ts new file mode 100644 index 0000000..a67a3d0 --- /dev/null +++ b/src/common/types/shims.tools.d.ts @@ -0,0 +1,8 @@ +declare module 'cmp-basic' +declare module 'cmp-echarts' +declare module 'cmp-element' +declare module 'cmp-socket' +declare module 'cmp-element/utils' +declare module 'vite-plugin-svg-icons' +declare module 'services' +declare module 'v-viewer/src/component.vue' diff --git a/src/common/utils/auth.js b/src/common/utils/auth.js new file mode 100644 index 0000000..5e2f118 --- /dev/null +++ b/src/common/utils/auth.js @@ -0,0 +1,17 @@ +/** + * Created by HaijunZhang on 2018/11/16. + */ +import Cookies from 'js-cookie' +import { tokenKey } from '@/config' + +export function getToken() { + return Cookies.get(tokenKey) +} + +export function setToken(token) { + return Cookies.set(tokenKey, token) +} + +export function removeToken() { + return Cookies.remove(tokenKey) +} diff --git a/src/common/utils/autoImport.ts b/src/common/utils/autoImport.ts new file mode 100644 index 0000000..6bbf23f --- /dev/null +++ b/src/common/utils/autoImport.ts @@ -0,0 +1,30 @@ +// 同步加载 +export function getModules(files: any) { + // 当files为方法时为webapock,为对象时为vite + const isWebpack = typeof files === 'function' + // 路径包含compoennts的是内置组件不向外暴露 + const modules = (isWebpack ? files.keys() : Object.keys(files)) + .filter((item: string) => !item.includes('components')) + .reduce((modules: any, modulePath: string) => { + // set './app.vue' => 'app' + const moduleName = modulePath.replace(/^\.\S*\/(.*)\.\w+$/, '$1') + const value = isWebpack ? files(modulePath) : files[modulePath] + modules[moduleName] = value.default + return modules + }, {}) + return modules +} +// 异步加载 +export function getAsyncModules(files: any, asyncImport: any) { + // 当files为方法时为webapock,为对象时为vite + const isWebpack = typeof files === 'function' + const modules = (isWebpack ? files.keys() : Object.keys(files)) + .filter((item: string) => !item.includes('components')) + .reduce((modules: any, modulePath: string) => { + // set './app.vue' => 'app' + const moduleName = modulePath.replace(/^\.\S*\/(.*)\.\w+$/, '$1') + modules[moduleName] = isWebpack ? asyncImport(modulePath) : files[moduleName] + return modules + }, {}) + return modules +} diff --git a/src/common/utils/crypto.js b/src/common/utils/crypto.js new file mode 100644 index 0000000..01e841a --- /dev/null +++ b/src/common/utils/crypto.js @@ -0,0 +1,48 @@ +/** + * Created by HaijunZhang on 2018/11/19. + */ +import CryptoJS from 'crypto-js' + +const defaultKey = CryptoJS.enc.Utf8.parse(decryptByBase64('Qm9jbG91ZENNUFY1ODchIQ==')) +const iv = CryptoJS.enc.Utf8.parse(decryptByBase64('QmV5b25kQ01QVjU4NyEhIQ==')) +const options = { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 +} + +// 加密方法 +export function encrypt(word, key = defaultKey) { + if (typeof word === 'object') { + word = JSON.stringify(word) + } + const srcs = CryptoJS.enc.Utf8.parse(word) + const encrypted = CryptoJS.AES.encrypt(srcs, key, options) + return encrypted.toString() +} + +// 解密方法 +export function decrypt(word, key = defaultKey) { + const decrypt = CryptoJS.AES.decrypt(word, key, options) + return decrypt.toString(CryptoJS.enc.Utf8) +} + +// base64解码 +function decryptByBase64(word) { + const base64string = CryptoJS.enc.Base64.parse(word) + return CryptoJS.enc.Utf8.stringify(base64string) +} + +// base64编码 +function encryptByBase64(word) { + const src = CryptoJS.enc.Utf8.parse(word) + const base64string = CryptoJS.enc.Base64.stringify(src) + return base64string +} + +export default { + encrypt, + decrypt, + encryptByBase64, + decryptByBase64 +} diff --git a/src/common/utils/day.js b/src/common/utils/day.js new file mode 100644 index 0000000..8a9ee0a --- /dev/null +++ b/src/common/utils/day.js @@ -0,0 +1,5 @@ +import dayjs from 'dayjs' +import 'dayjs/locale/zh-cn' +dayjs.locale('zh-cn') + +export default dayjs diff --git a/src/common/utils/index.js b/src/common/utils/index.js new file mode 100644 index 0000000..3d36cfb --- /dev/null +++ b/src/common/utils/index.js @@ -0,0 +1,89 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import Clipboard from 'clipboard' +import { getToken } from 'utils/auth' +import dayjs from './day' + +export function wrapperParams(data) { + return data + // return { params: JSON.stringify(data) } +} +export const formatEqParams = (params) => { + return { page: 1, rows: 9999, params: JSON.stringify([{ param: params, sign: 'EQ' }]) } +} +export const copyText = (text, event, successCallback, errorCallback) => { + const clipboard = new Clipboard(event.target, { + text: () => text + }) + clipboard.on('success', () => { + successCallback && successCallback() + clipboard.destroy() + }) + clipboard.on('error', () => { + errorCallback && errorCallback() + clipboard.destroy() + }) + clipboard.onClick(event) +} +// export const downloadFile = (url, params = {}) => { +// request +// .get(url, { +// // headers: { 'Content-Type': params.fileFormat }, +// responseType: 'blob', +// // params: wrapperParams(params), +// options: { +// isBlob: true +// } +// }) +// .then(data => { +// var ele = document.createElement('a') // 创建下载链接 +// ele.download = 'filename' // 设置下载的名称 +// ele.style.display = 'none' // 隐藏的可下载链接 +// // 字符内容转变成blob地址 +// const blob = new Blob([data]) +// ele.href = URL.createObjectURL(blob) +// // 绑定点击时间 +// document.body.appendChild(ele) +// ele.click() +// // 然后移除 +// document.body.removeChild(ele) +// }) +// } +export const downloadFile = (url, params = {}) => { + let str = '' + Object.keys(params).forEach((item) => { + str += `&${item}=${params[item]}` + }) + window.location.href = encodeURI(`/api${url}?token=${getToken()}${str}`) +} +export const getQuery = (hash) => { + const queryArr = hash.split('?') + if (queryArr.length === 1) { + return {} + } + const query = {} + queryArr[1].split('&').forEach((item) => { + const [key, value] = item.split('=') + query[key] = value + }) + return query +} +// ip比较大小 +export const compareIp = (ip1, ip2) => { + const ip1Arr = ip1.split('.') + const ip2Arr = ip2.split('.') + let flag + for (let i = 0; i < 4; i++) { + if (Number(ip1Arr[i]) > Number(ip2Arr[i])) { + flag = 0 + break + } else if (Number(ip1Arr[i]) < Number(ip2Arr[i])) { + flag = 1 + } + } + return flag +} +export function makeTimeStamp() { + return dayjs().format('YYYYMMDDHHmmss') +} diff --git a/src/common/utils/request.js b/src/common/utils/request.js new file mode 100644 index 0000000..df1a63f --- /dev/null +++ b/src/common/utils/request.js @@ -0,0 +1,119 @@ +/** + * Created by Zhang Haijun on 2017/8/24. + * axios#request(config) + * axios#get(url[, config]) + * axios#delete(url[, config]) + * axios#head(url[, config]) + * axios#options(url[, config]) + * axios#post(url[, data[, config]]) + * axios#put(url[, data[, config]]) + * axios#patch(url[, data[, config]]) + */ +import axios from 'axios' +import NProgress from 'nprogress' +import qs from 'qs' +import 'nprogress/nprogress.css' +import { Notification, MessageBox } from 'element-ui' +import { getToken } from 'utils/auth' +import store from '@/store' + +const codeMessage = { + 200: '服务器成功返回请求的数据。', + 201: '新建或修改数据成功。', + 202: '一个请求已经进入后台排队(异步任务)。', + 204: '删除数据成功。', + 400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。', + 401: '用户没有权限(令牌、用户名、密码错误)。', + 403: '用户得到授权,但是访问是被禁止的。', + 404: '发出的请求针对的是不存在的记录,服务器没有进行操作。', + 406: '请求的格式不可得。', + 410: '请求的资源被永久删除,且不会再得到的。', + 422: '当创建一个对象时,发生一个验证错误。', + 500: '服务器发生错误,请检查服务器。', + 502: '网关错误。', + 503: '服务不可用,服务器暂时过载或维护。', + 504: '网关超时。' +} +const axiosInstance = axios.create({ + baseURL: '/api', + headers: { 'Content-Type': 'application/json', BsmAjaxHeader: true }, + timeout: 20000, + paramsSerializer: (params) => { + return qs.stringify(params, { arrayFormat: 'indices' }) + } +}) +// 请求完成回调 +const finishCallback = function () { + NProgress.done() +} +// 报错处理 +const handleError = function (response) { + if (!response) return // 容错处理 + const errorText = codeMessage[response.status] || response.statusText + Notification({ + type: 'error', + title: `请求错误 ${response.status}: ${response.config.url}`, + message: errorText + }) + const error = new Error(errorText) + error.name = response.status + error.response = response + throw error +} +axiosInstance.interceptors.request.use( + (config) => { + const { + headers, + headers: { options = {} } + } = config + NProgress.start() + if (config.method === 'get') { + // 清除get缓存 + config.url = `${config.url}?t=${new Date().getTime()}` + } else if (headers['Content-Type'] === 'application/x-www-form-urlencoded') { + config.data = qs.stringify(config.data || {}) + } + config.headers.token = getToken() + delete config.headers.options + config.options = options + return config + }, + (error) => { + return Promise.reject(error) + } +) +axiosInstance.interceptors.response.use( + (data) => { + // const requestKey = getRequestIdentify(data.config); + // removePending(requestKey); + finishCallback() + const responseData = data.data + const { options } = data.config + if (!responseData.success) { + switch (responseData.status) { + case '402': + // store.dispatch('permission/ResetRoutes') + // location.href = '/#/license' + break + case '401': + case '509': + store.dispatch('permission/ResetRoutes') + break + default: + } + if (!options.ignoreError) { + Notification({ + message: responseData.message || responseData.data, + type: 'error' + }) + } + } + return responseData + }, + (error) => { + finishCallback() + handleError(error.response) + return Promise.reject(error) + } +) +export default axiosInstance diff --git a/src/common/utils/resolvePath.js b/src/common/utils/resolvePath.js new file mode 100644 index 0000000..d4b4680 --- /dev/null +++ b/src/common/utils/resolvePath.js @@ -0,0 +1,21 @@ +/** + * Created by HaijunZhang on 2018/12/10. + */ +// import path from 'path'; +import { startsWith } from 'lodash-es' +export function isExternalLink(path) { + return /^(http:|https:|mailto:|tel:)\/\//.test(path) +} +export function resolvePath(basePath, routePath) { + if (isExternalLink(routePath)) { + return routePath + } + // return path.resolve(basePath, routePath); + const basePathArr = basePath.split('/') + const routePathArr = routePath.split('/') + if (startsWith(routePath, '/')) { + return routePath + } + const res = [...basePathArr, ...routePathArr].filter((item) => item) + return `/${res.join('/')}` +} diff --git a/src/common/utils/uploadFile.js b/src/common/utils/uploadFile.js new file mode 100644 index 0000000..3185dfc --- /dev/null +++ b/src/common/utils/uploadFile.js @@ -0,0 +1,88 @@ +// websocket文件上传 +import { getToken } from './auth' +export default function uploadFile(item, callback, errorCallBack) { + const protocol = location.protocol === 'http:' ? 'ws' : 'wss' + item.isReady = true + const socket = new WebSocket(`${protocol}://${location.host}/api/sms/uploadService`, getToken()) + let i = 0 + let startSize = 0, + endSize = 0 + const paragraph = 4 * 1024 * 1024 // 以4MB为一个分片 + const count = parseInt(item.file.size / paragraph) + 1 + socket.onopen = function () { + item.isUploading = true + socket.send( + JSON.stringify({ + filename: item.file.name, + upload: 'file' + }) + ) + // 取消上传 + item.cancel = function () { + item.progress = 0 + socket.send( + JSON.stringify({ + UPLOAD_CANCEL: 'UPLOAD_CANCEL' + }) + ) + item.isUploading = false + } + } + socket.onmessage = function (event) { + const sendFile = function () { + if (startSize < item.file.size) { + let blob + endSize += paragraph + if (item.file.webkitSlice) { + blob = item.file.webkitSlice(startSize, endSize) + } else if (item.file.mozSlice) { + blob = item.file.mozSlice(startSize, endSize) + } else { + blob = item.file.slice(startSize, endSize) + } + const reader = new FileReader() + reader.readAsArrayBuffer(blob) + + reader.onload = function loaded(evt) { + const result = evt.target.result + i++ + const isok = (i / count) * 100 + item.progress = parseInt(isok) + startSize = endSize + socket.send(result) + } + } else { + item.progress = 100 + socket.send( + JSON.stringify({ + sendover: 'sendover' + }) + ) + } + } + item.isUploading = true + item.isCancel = false + const obj = JSON.parse(event.data) + if (obj.category == 'UPLOAD_ACK') { + item.filePath = obj.content + sendFile() + } else if (obj.category == 'UPLOAD') { + if (obj.content == 'SAVE_FAILURE') { + item.isUploading = false + errorCallBack(item) + } else if (obj.content == 'SAVE_SUCCESS') { + sendFile() + } else if (obj.content == 'TRUE') { + callback(item) + item.isReady = true + item.isSuccess = true + item.isUploading = false + socket.close() + } + } else if (obj.category == 'UPLOAD_CANCEL') { + item.progress = 0 + item.isCancel = true + socket.close() + } + } +} diff --git a/src/config.js b/src/config.js new file mode 100644 index 0000000..c41ea91 --- /dev/null +++ b/src/config.js @@ -0,0 +1,16 @@ +/** + * 启用缓存加载速度会变快,但是数据安全性和实时性降低 + */ +// 是否启用权限本地缓存 +export const enablePermissionStorage = false +// 本地缓存的菜单key值 +export const menuKey = 'cmcMenuData' +// 是否启用用户本地缓存 +export const enableUserStorage = false +// 本地缓存的用户key值 +export const userKey = 'cmcUserData' +// 本地存储的cookie kye值 +export const tokenKey = 'CMC_TOKEN' +// 最大缓存组件实例数 +export const cacheViewMax = 15 +export const baseUrl = '/sms-web' diff --git a/src/errorLog.js b/src/errorLog.js new file mode 100644 index 0000000..8730584 --- /dev/null +++ b/src/errorLog.js @@ -0,0 +1,29 @@ +/** + * Created by HaijunZhang on 2019/10/21. + */ +import Vue from 'vue' +import store from './store' +import request from 'utils/request' + +const { host, hash } = location +const sendLog = (msg, vm, info, level) => { + request.post('http://10.20.51.92:7001/log', { + service: 'CMC', + level, + username: store.state.app.userData.username, + host, + view: hash, + msg: `${msg}`, + info + }) +} +if (process.env.NODE_ENV === 'development') { + Vue.config.errorHandler = function (err, vm, info) { + console.error(err, vm, info) + // sendLog(err, vm, info, 'error') + } + Vue.config.warnHandler = function (msg, vm, info) { + console.warn(msg, vm, info) + // sendLog(msg, vm, info, 'warning') + } +} diff --git a/src/filters/common.js b/src/filters/common.js new file mode 100644 index 0000000..f64cfd5 --- /dev/null +++ b/src/filters/common.js @@ -0,0 +1,40 @@ +export function numberFilter(value, digit) { + return value.toFixed(digit) +} + +// 正反编译 +export function booleanFilter(value) { + const obj = { + true: '是', + false: '否', + 1: '是', + 0: '否', + YES: '是', + NO: '否' + } + return obj[value] || value +} + +export function sexFilter(value) { + const obj = { + true: '男', + false: '女' + } + return obj[value] +} + +export function generalStatusFilter(value, type) { + const cnUserData = { + NORMAL: '正常', + ABNORMAL: '已冻结', + EXPIRED: '已过期', + LOGOUT: '已注销' + } + const colorMap = { + ABNORMAL: 'danger', + NORMAL: 'success', + EXPIRED: 'warning', + LOGOUT: 'primary' + } + return type == 'color' ? colorMap[value] : cnUserData[value] +} diff --git a/src/icons/index.js b/src/icons/index.js new file mode 100644 index 0000000..09c1f17 --- /dev/null +++ b/src/icons/index.js @@ -0,0 +1,3 @@ +const req = require.context('./svg', false, /\.svg$/) +const requireAll = (requireContext) => requireContext.keys().map(requireContext) +requireAll(req) diff --git a/src/icons/svg/svg-about.svg b/src/icons/svg/svg-about.svg new file mode 100644 index 0000000..06e0426 --- /dev/null +++ b/src/icons/svg/svg-about.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-basic-resource.svg b/src/icons/svg/svg-basic-resource.svg new file mode 100644 index 0000000..89ebe8b --- /dev/null +++ b/src/icons/svg/svg-basic-resource.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-bill.svg b/src/icons/svg/svg-bill.svg new file mode 100644 index 0000000..1f1e243 --- /dev/null +++ b/src/icons/svg/svg-bill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-business.svg b/src/icons/svg/svg-business.svg new file mode 100644 index 0000000..96a259c --- /dev/null +++ b/src/icons/svg/svg-business.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-compute-resource.svg b/src/icons/svg/svg-compute-resource.svg new file mode 100644 index 0000000..4314add --- /dev/null +++ b/src/icons/svg/svg-compute-resource.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-copy.svg b/src/icons/svg/svg-copy.svg new file mode 100644 index 0000000..ce5f78a --- /dev/null +++ b/src/icons/svg/svg-copy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-db.svg b/src/icons/svg/svg-db.svg new file mode 100644 index 0000000..51a8173 --- /dev/null +++ b/src/icons/svg/svg-db.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-disabled.svg b/src/icons/svg/svg-disabled.svg new file mode 100644 index 0000000..d74839d --- /dev/null +++ b/src/icons/svg/svg-disabled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-dot.svg b/src/icons/svg/svg-dot.svg new file mode 100644 index 0000000..1b8463f --- /dev/null +++ b/src/icons/svg/svg-dot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-host.svg b/src/icons/svg/svg-host.svg new file mode 100644 index 0000000..ad6146b --- /dev/null +++ b/src/icons/svg/svg-host.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-image.svg b/src/icons/svg/svg-image.svg new file mode 100644 index 0000000..ddc41bd --- /dev/null +++ b/src/icons/svg/svg-image.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-middle.svg b/src/icons/svg/svg-middle.svg new file mode 100644 index 0000000..1cb263b --- /dev/null +++ b/src/icons/svg/svg-middle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-network-resource.svg b/src/icons/svg/svg-network-resource.svg new file mode 100644 index 0000000..f452779 --- /dev/null +++ b/src/icons/svg/svg-network-resource.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-operate.svg b/src/icons/svg/svg-operate.svg new file mode 100644 index 0000000..bb6f80c --- /dev/null +++ b/src/icons/svg/svg-operate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-ops-analysis.svg b/src/icons/svg/svg-ops-analysis.svg new file mode 100644 index 0000000..26c4eb0 --- /dev/null +++ b/src/icons/svg/svg-ops-analysis.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-order.svg b/src/icons/svg/svg-order.svg new file mode 100644 index 0000000..a67b375 --- /dev/null +++ b/src/icons/svg/svg-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-permission.svg b/src/icons/svg/svg-permission.svg new file mode 100644 index 0000000..67182a7 --- /dev/null +++ b/src/icons/svg/svg-permission.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-port.svg b/src/icons/svg/svg-port.svg new file mode 100644 index 0000000..b8b5a98 --- /dev/null +++ b/src/icons/svg/svg-port.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-product.svg b/src/icons/svg/svg-product.svg new file mode 100644 index 0000000..b2fc579 --- /dev/null +++ b/src/icons/svg/svg-product.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-repository.svg b/src/icons/svg/svg-repository.svg new file mode 100644 index 0000000..043a59e --- /dev/null +++ b/src/icons/svg/svg-repository.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-resource-interface.svg b/src/icons/svg/svg-resource-interface.svg new file mode 100644 index 0000000..a440486 --- /dev/null +++ b/src/icons/svg/svg-resource-interface.svg @@ -0,0 +1 @@ +画板 1 \ No newline at end of file diff --git a/src/icons/svg/svg-resource-manage.svg b/src/icons/svg/svg-resource-manage.svg new file mode 100644 index 0000000..b636fb0 --- /dev/null +++ b/src/icons/svg/svg-resource-manage.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-resource-monitor.svg b/src/icons/svg/svg-resource-monitor.svg new file mode 100644 index 0000000..de2fd08 --- /dev/null +++ b/src/icons/svg/svg-resource-monitor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-resource-ops.svg b/src/icons/svg/svg-resource-ops.svg new file mode 100644 index 0000000..7631e8d --- /dev/null +++ b/src/icons/svg/svg-resource-ops.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-screen.svg b/src/icons/svg/svg-screen.svg new file mode 100644 index 0000000..1a18939 --- /dev/null +++ b/src/icons/svg/svg-screen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-security.svg b/src/icons/svg/svg-security.svg new file mode 100644 index 0000000..649f460 --- /dev/null +++ b/src/icons/svg/svg-security.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-service-ops.svg b/src/icons/svg/svg-service-ops.svg new file mode 100644 index 0000000..cd5d63c --- /dev/null +++ b/src/icons/svg/svg-service-ops.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-setting.svg b/src/icons/svg/svg-setting.svg new file mode 100644 index 0000000..c32d709 --- /dev/null +++ b/src/icons/svg/svg-setting.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-storage-resource.svg b/src/icons/svg/svg-storage-resource.svg new file mode 100644 index 0000000..f8a773e --- /dev/null +++ b/src/icons/svg/svg-storage-resource.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-task-platform.svg b/src/icons/svg/svg-task-platform.svg new file mode 100644 index 0000000..9e3d0bc --- /dev/null +++ b/src/icons/svg/svg-task-platform.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-vm.svg b/src/icons/svg/svg-vm.svg new file mode 100644 index 0000000..e97a9ec --- /dev/null +++ b/src/icons/svg/svg-vm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/lang/en.js b/src/lang/en.js new file mode 100644 index 0000000..b25ff61 --- /dev/null +++ b/src/lang/en.js @@ -0,0 +1,12 @@ +export default { + lang: { + en: 'English', + zh: 'Chinese' + }, + operate: { + search: 'Search', + create: 'Create', + edit: 'Edit', + delete: 'Delete' + } +} diff --git a/src/lang/index.js b/src/lang/index.js new file mode 100644 index 0000000..f291bab --- /dev/null +++ b/src/lang/index.js @@ -0,0 +1,29 @@ +import Vue from 'vue' +import VueI18n from 'vue-i18n' +import elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang +import elementZhLocale from 'element-ui/lib/locale/lang/zh-CN' // element-ui lang +import enLocale from './en' +import zhLocale from './zh' + +Vue.use(VueI18n) + +const messages = { + en: { + ...enLocale, + ...elementEnLocale + }, + zh: { + ...zhLocale, + ...elementZhLocale + } +} +export function getLanguage() { + const chooseLanguage = localStorage.getItem('language') + return chooseLanguage || 'zh' +} +const i18n = new VueI18n({ + locale: getLanguage(), + messages +}) + +export default i18n diff --git a/src/lang/zh.js b/src/lang/zh.js new file mode 100644 index 0000000..3435403 --- /dev/null +++ b/src/lang/zh.js @@ -0,0 +1,12 @@ +export default { + lang: { + en: '英文', + zh: '中文' + }, + operate: { + search: '搜索', + create: '新增', + edit: '编辑', + delete: '删除' + } +} diff --git a/src/layouts/app.vue b/src/layouts/app.vue new file mode 100644 index 0000000..a16aaec --- /dev/null +++ b/src/layouts/app.vue @@ -0,0 +1,18 @@ + + diff --git a/src/layouts/components/Header.vue b/src/layouts/components/Header.vue new file mode 100644 index 0000000..14439bc --- /dev/null +++ b/src/layouts/components/Header.vue @@ -0,0 +1,79 @@ +/** * Created by HaijunZhang on 2019/12/18. */ + + + + + diff --git a/src/layouts/components/LevelBar.vue b/src/layouts/components/LevelBar.vue new file mode 100644 index 0000000..aa693a6 --- /dev/null +++ b/src/layouts/components/LevelBar.vue @@ -0,0 +1,65 @@ + + + diff --git a/src/layouts/components/SiteMessage.vue b/src/layouts/components/SiteMessage.vue new file mode 100644 index 0000000..44a6b87 --- /dev/null +++ b/src/layouts/components/SiteMessage.vue @@ -0,0 +1,157 @@ + + + diff --git a/src/layouts/components/SystemTip.vue b/src/layouts/components/SystemTip.vue new file mode 100644 index 0000000..db81ece --- /dev/null +++ b/src/layouts/components/SystemTip.vue @@ -0,0 +1,61 @@ + + + diff --git a/src/layouts/components/TagsView/ScrollPanel.vue b/src/layouts/components/TagsView/ScrollPanel.vue new file mode 100644 index 0000000..ef125cd --- /dev/null +++ b/src/layouts/components/TagsView/ScrollPanel.vue @@ -0,0 +1,137 @@ + + + + + diff --git a/src/layouts/components/TagsView/SelectRound.vue b/src/layouts/components/TagsView/SelectRound.vue new file mode 100644 index 0000000..85bf575 --- /dev/null +++ b/src/layouts/components/TagsView/SelectRound.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/layouts/components/TagsView/index.vue b/src/layouts/components/TagsView/index.vue new file mode 100644 index 0000000..5afb464 --- /dev/null +++ b/src/layouts/components/TagsView/index.vue @@ -0,0 +1,291 @@ + + + + + diff --git a/src/layouts/components/TagsView/index_backup.vue b/src/layouts/components/TagsView/index_backup.vue new file mode 100644 index 0000000..38fce2b --- /dev/null +++ b/src/layouts/components/TagsView/index_backup.vue @@ -0,0 +1,260 @@ + + + + + + + diff --git a/src/layouts/components/ThirdMenu.vue b/src/layouts/components/ThirdMenu.vue new file mode 100644 index 0000000..a465d8a --- /dev/null +++ b/src/layouts/components/ThirdMenu.vue @@ -0,0 +1,110 @@ + + + diff --git a/src/layouts/components/headerMenu.vue b/src/layouts/components/headerMenu.vue new file mode 100644 index 0000000..149e4aa --- /dev/null +++ b/src/layouts/components/headerMenu.vue @@ -0,0 +1,134 @@ + + + diff --git a/src/layouts/components/langSelect.vue b/src/layouts/components/langSelect.vue new file mode 100644 index 0000000..88cef69 --- /dev/null +++ b/src/layouts/components/langSelect.vue @@ -0,0 +1,34 @@ + + + + diff --git a/src/layouts/components/lockScreen.vue b/src/layouts/components/lockScreen.vue new file mode 100644 index 0000000..a8d2901 --- /dev/null +++ b/src/layouts/components/lockScreen.vue @@ -0,0 +1,90 @@ + + + + diff --git a/src/layouts/components/personal/InfoDialog.vue b/src/layouts/components/personal/InfoDialog.vue new file mode 100644 index 0000000..8ad6a25 --- /dev/null +++ b/src/layouts/components/personal/InfoDialog.vue @@ -0,0 +1,141 @@ + + + diff --git a/src/layouts/components/personal/index.vue b/src/layouts/components/personal/index.vue new file mode 100644 index 0000000..0e4dc86 --- /dev/null +++ b/src/layouts/components/personal/index.vue @@ -0,0 +1,175 @@ + + + diff --git a/src/layouts/components/process.vue b/src/layouts/components/process.vue new file mode 100644 index 0000000..f138fa0 --- /dev/null +++ b/src/layouts/components/process.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/layouts/components/rightContent.vue b/src/layouts/components/rightContent.vue new file mode 100644 index 0000000..cc235a2 --- /dev/null +++ b/src/layouts/components/rightContent.vue @@ -0,0 +1,38 @@ +/** * Created by HaijunZhang on 2019/12/18. */ + + + + + diff --git a/src/layouts/components/sidebar/Link.vue b/src/layouts/components/sidebar/Link.vue new file mode 100644 index 0000000..42845d3 --- /dev/null +++ b/src/layouts/components/sidebar/Link.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/layouts/components/sidebar/MenuItem.vue b/src/layouts/components/sidebar/MenuItem.vue new file mode 100644 index 0000000..7af8c61 --- /dev/null +++ b/src/layouts/components/sidebar/MenuItem.vue @@ -0,0 +1,62 @@ + + + diff --git a/src/layouts/components/sidebar/OperateBtn.vue b/src/layouts/components/sidebar/OperateBtn.vue new file mode 100644 index 0000000..b6d0fa0 --- /dev/null +++ b/src/layouts/components/sidebar/OperateBtn.vue @@ -0,0 +1,53 @@ + + + + diff --git a/src/layouts/components/sidebar/baseMenu.vue b/src/layouts/components/sidebar/baseMenu.vue new file mode 100644 index 0000000..18bc81f --- /dev/null +++ b/src/layouts/components/sidebar/baseMenu.vue @@ -0,0 +1,68 @@ + + + diff --git a/src/layouts/components/sidebar/sidebar.vue b/src/layouts/components/sidebar/sidebar.vue new file mode 100644 index 0000000..e3363bc --- /dev/null +++ b/src/layouts/components/sidebar/sidebar.vue @@ -0,0 +1,160 @@ + + + + diff --git a/src/layouts/components/sidebar/sidebarItem.vue b/src/layouts/components/sidebar/sidebarItem.vue new file mode 100644 index 0000000..310dba4 --- /dev/null +++ b/src/layouts/components/sidebar/sidebarItem.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/src/layouts/components/sidebar/theme.scss b/src/layouts/components/sidebar/theme.scss new file mode 100644 index 0000000..66e68eb --- /dev/null +++ b/src/layouts/components/sidebar/theme.scss @@ -0,0 +1,15 @@ +.sidebar-menu { + border: 0; + background: inherit; + ::v-deep { + .el-menu { + background: inherit; + } + .el-menu-item, + .el-menu-item i, + .el-submenu__title, + .el-submenu__title i { + color: inherit; + } + } +} diff --git a/src/layouts/home.vue b/src/layouts/home.vue new file mode 100644 index 0000000..69c9766 --- /dev/null +++ b/src/layouts/home.vue @@ -0,0 +1,148 @@ + + + + diff --git a/src/layouts/redirect.vue b/src/layouts/redirect.vue new file mode 100644 index 0000000..ec4b6b7 --- /dev/null +++ b/src/layouts/redirect.vue @@ -0,0 +1,13 @@ + diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..70b8942 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,70 @@ +// The Vue build version to load with the `import` command +// (runtime-only or standalone) has been set in webpack.base.conf with an alias. +import './public-path' +import Vue from 'vue' +import router from './router/index' +import store from './store' +import startPermission from './permission' +import './errorLog' +import './common/components/index' +import ElementUI from 'element-ui' +import '@/common/css/element-variables.scss' +// @ts-ignore +import App from './App.vue' +import 'vue2-animate/dist/vue2-animate.min.css' +import CmpEcharts from 'cmp-echarts' +import 'cmp-echarts/lib/cmp-echarts.css' +import './common/directive' +// import i18n from './lang' // internationalization +import CmpElement from 'cmp-element' +import 'cmp-element/lib/cmp-element.css' +import './icons' +import VueCompositionAPI from '@vue/composition-api' +import rules from '@/validate/index' +import actions from './shared/action' + +Vue.use(ElementUI, { size: 'small' }) +Vue.use(VueCompositionAPI) +Vue.use(CmpElement, { rules }) +Vue.use(CmpEcharts) +Vue.config.productionTip = false + +let instance: any = null +function render(props: any = {}) { + const { mainRouter = router, container, appPath = '' } = props + instance = new Vue({ + data: { + mainRouter + }, + router, + store, + render: (h) => h(App) + }).$mount(container ? container.querySelector('#app') : '#app') + store.commit('SET_APP_PATH', appPath) +} +if (!(window as any).__POWERED_BY_QIANKUN__) { + console.log('独立运行子应用') + startPermission() + render() +} +export async function bootstrap() { + console.log('sms app bootstraped') +} + +export async function mount(props: any) { + console.log('sms app mounted') + render(props) + actions.init(props, (state: any) => { + const { permissions, userData } = state + userData && store.commit('SET_USERDATA', userData) + if (!store.getters.addRoutes && permissions) { + store.dispatch('permission/GenerateRoutes') + } + }) +} + +export async function unmount() { + instance.$destroy() + instance.$el.innerHTML = '' + instance = null +} diff --git a/src/main.vite.ts b/src/main.vite.ts new file mode 100644 index 0000000..3a1a407 --- /dev/null +++ b/src/main.vite.ts @@ -0,0 +1,68 @@ +// The Vue build version to load with the `import` command +// (runtime-only or standalone) has been set in webpack.base.conf with an alias. +import './public-path' +import Vue from 'vue' +import router from './router/index' +import store from './store' +import startPermission from './permission' +import './errorLog' +import './common/components/index' +import ElementUI from 'element-ui' +import 'element-ui/lib/theme-chalk/index.css' +// @ts-ignore +import App from './App.vue' +import 'vue2-animate/dist/vue2-animate.min.css' +import CmpEcharts from 'cmp-echarts' +import 'cmp-echarts/lib/cmp-echarts.css' +import './filters/common' +import './common/directive' +import i18n from './lang' // internationalization +import CmpElement from 'cmp-element' +import 'cmp-element/lib/cmp-element.css' +import 'vite-plugin-svg-icons/register' +import actions from './shared/action' +import VueCompositionAPI from '@vue/composition-api' + +Vue.use(ElementUI, { size: 'small', i18n: (key: any, value: any) => i18n.t(key, value) }) +Vue.use(VueCompositionAPI) +Vue.use(CmpElement) +Vue.use(CmpEcharts) +Vue.config.productionTip = false +Vue.config.devtools = true +let instance: any = null +function render(props: any = {}) { + const { appPath = '', container } = props + instance = new Vue({ + router, + store, + render: (h) => h(App) + }).$mount(container ? container.querySelector('#app') : '#app') + store.commit('SET_APP_PATH', appPath) +} +if (!(window as any).__POWERED_BY_QIANKUN__) { + console.log('独立运行子应用') + startPermission() + render() +} + +export async function bootstrap() { + console.log('cmp app bootstraped') +} + +export async function mount(props: any) { + console.log('cmp app mounted') + render(props) + actions.init(props, (state: any) => { + const { permissions, userData } = state + userData && store.commit('SET_USERDATA', userData) + if (!store.getters.addRoutes && permissions) { + store.dispatch('permission/GenerateRoutes') + } + }) +} + +export async function unmount() { + instance.$destroy() + instance.$el.innerHTML = '' + instance = null +} diff --git a/src/mock/common.js b/src/mock/common.js new file mode 100644 index 0000000..5544288 --- /dev/null +++ b/src/mock/common.js @@ -0,0 +1,26 @@ +/** + * Created by Zhang Haijun on 2018/3/20. + */ +import Mock from 'mockjs' +const commonData = { + success: true, + message: '查询成功', + data: [] +} +export default { + getList(template, count = 10, total = 50) { + const list = [] + for (let i = 0; i < count; i++) { + list.push(Mock.mock(template)) + } + commonData.data = { + rows: list, + total: total + } + return commonData + }, + getDetail(template) { + commonData.data = Mock.mock(template) + return commonData + } +} diff --git a/src/mock/index.js b/src/mock/index.js new file mode 100644 index 0000000..6f86511 --- /dev/null +++ b/src/mock/index.js @@ -0,0 +1,4 @@ +import Mock from 'mockjs' +import taskApi from './task' +Mock.mock(/\/list$/, 'post', taskApi.getTaskList) +Mock.mock(/\/api\/task\/detail/, 'get', taskApi.getTaskDetail) diff --git a/src/mock/task.js b/src/mock/task.js new file mode 100644 index 0000000..93ac00c --- /dev/null +++ b/src/mock/task.js @@ -0,0 +1,28 @@ +/** + * Created by Zhang Haijun on 2018/3/20. + */ +import common from './common' + +export default { + getTaskList() { + const template = { + id: '@increment', + name: '@title', + creator: '@cname', + mender: '@cname', + gmtCreate: "@datetime('yyyy-MM-dd HH:mm:ss')", + gmtModify: "@datetime('yyyy-MM-dd HH:mm:ss')" + } + return common.getList(template) + }, + getTaskDetail() { + const template = { + id: '@increment', + name: '@title', + taskGroup: 'DEVICE_INIT', + graph: + '{"nodes":[{"catalog":"START","name":"开始节点","location":{"x":80,"y":140},"nodeId":1521013231471},{"catalog":"END","name":"结束节点","location":{"x":800,"y":140},"nodeId":1521013232191},{"catalog":"TASK","retryTime":3,"params":{"database":"MySQL","dbdriver":"com.mysql.jdbc.Driver","password":"onceas","scriptId":168,"groupId":[3],"category":"SQL","content":"select * from user","username":"root"},"timeout":600,"target":[{"url":"10.20.2.48:3306/bsm_dev"}],"intervals":10,"failover":false,"name":"test","location":{"x":400,"y":137},"sudo":false,"category":"DATABASE","nodeId":1521013242696,"identId":""}],"links":[{"nodeZid":1521013242696,"linetype":"Link","nodeAid":1521013231471},{"nodeZid":1521013232191,"linetype":"Link","nodeAid":1521013242696}]}' + } + return common.getDetail(template) + } +} diff --git a/src/models/depart.d.ts b/src/models/depart.d.ts new file mode 100644 index 0000000..df7f241 --- /dev/null +++ b/src/models/depart.d.ts @@ -0,0 +1,4 @@ +export interface IDepart { + id?: number + parentId?: number +} diff --git a/src/models/service.d.ts b/src/models/service.d.ts new file mode 100644 index 0000000..02d4db3 --- /dev/null +++ b/src/models/service.d.ts @@ -0,0 +1,19 @@ +export interface IService { + id?: number + code?: string + name?: string + status?: string + iconId?: number + catalogId?: number + checked?: boolean + billable?: boolean + billPolicy?: string + basicPrice?: string + vendorType?: string + discount?: number + templateId?: number | string + templateName?: string + icon?: string + isPublic?: boolean + flowList?: any +} diff --git a/src/models/sku.d.ts b/src/models/sku.d.ts new file mode 100644 index 0000000..6a05b24 --- /dev/null +++ b/src/models/sku.d.ts @@ -0,0 +1,6 @@ +export interface ISku { + id?: number + name: string + status: string + content: string +} diff --git a/src/models/sla.d.ts b/src/models/sla.d.ts new file mode 100644 index 0000000..af3b9a2 --- /dev/null +++ b/src/models/sla.d.ts @@ -0,0 +1,7 @@ +export interface ISla { + id?: number + name?: string + status?: string + content?: string + catalogId?: number +} diff --git a/src/models/tenant.d.ts b/src/models/tenant.d.ts new file mode 100644 index 0000000..a292783 --- /dev/null +++ b/src/models/tenant.d.ts @@ -0,0 +1,12 @@ +export interface ITenant { + id?: number + account: string + name: string + status: string + discount: number + groupCode: string + password: string + remark: string + departId: number | undefined + departIds: number[] | string +} diff --git a/src/models/user.d.ts b/src/models/user.d.ts new file mode 100644 index 0000000..8c082c3 --- /dev/null +++ b/src/models/user.d.ts @@ -0,0 +1,19 @@ +export interface IUser { + id?: number + account: string + name: string + status: string + isManager: boolean + sex: boolean + password: string + email: string + mobile: string + dingtalk: string + wechat: string + company: string + jobNumber: string + tenantId: number + remark: string + departId: number | undefined + departIds: number[] +} diff --git a/src/permission.js b/src/permission.js new file mode 100644 index 0000000..65ac0c8 --- /dev/null +++ b/src/permission.js @@ -0,0 +1,50 @@ +/** + * Created by HaijunZhang on 2018/11/12. + */ +import store from './store' +import router from './router' +import { getToken, setToken, removeToken } from 'utils/auth' +import { getQuery } from 'utils' + +const { token } = getQuery(location.hash) +if (token) { + setToken(token) +} + +export default function () { + const whiteList = ['/login', '/404', '/401', '/license', '/sso'] + router.beforeEach(async (to, from, next) => { + if (getToken()) { + // 判断用户是否处于登录状态 + if (to.path === '/login') { + // 如果已经登录重定向到主页 + await store.dispatch('permission/ResetRoutes', false) + next('/login') + } else { + // 为null的场景: 刷新页面或者新开窗口; + const addRoutes = store.getters.addRoutes + if (addRoutes) { + next() + } else { + try { + await store.dispatch('permission/GenerateRoutes') + store.dispatch('GetUserInfo') + next({ ...to, replace: true }) + } catch (error) { + // remove token and go to login page to re-login + await store.dispatch('permission/ResetRoutes', false) + next('/login') + } + } + } + } else { + // 用户没有登录 + if (whiteList.includes(to.path)) { + // 在白名单里直接跳转 + next() + } else { + next('/login') + } + } + }) +} diff --git a/src/public-path.js b/src/public-path.js new file mode 100644 index 0000000..dc46d41 --- /dev/null +++ b/src/public-path.js @@ -0,0 +1,4 @@ +if (window.__POWERED_BY_QIANKUN__) { + // eslint-disable-next-line no-undef + __webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__ +} diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 0000000..7b3f802 --- /dev/null +++ b/src/router/index.js @@ -0,0 +1,31 @@ +import Vue from 'vue' +import Router from 'vue-router' +import constantRouter from './module/constant' +import systemMap from './module/system' + +const originalReplace = Router.prototype.replace +Router.prototype.replace = function replace(location) { + return originalReplace.call(this, location).catch((err) => console.error(err)) +} + +Vue.use(Router) + +export const asyncRouterMap = { + Home: () => import('@/layouts/home.vue'), + App: () => import('@/layouts/app.vue'), + ...systemMap +} +const createRouter = () => + new Router({ + base: process.env.VUE_APP_BASEURL, + mode: 'history', + scrollBehavior: () => ({ y: 0 }), + routes: constantRouter + }) +const router = createRouter() + +export function resetRouter() { + const newRouter = createRouter() + router.matcher = newRouter.matcher // reset router +} +export default router diff --git a/src/router/module/constant.js b/src/router/module/constant.js new file mode 100644 index 0000000..a4759e3 --- /dev/null +++ b/src/router/module/constant.js @@ -0,0 +1,64 @@ +/** + * Created by HaijunZhang on 2018/11/12. + */ + +const main = [ + { + name: 'Login', + path: '/login', + component: () => import('views/login/login.vue') + }, + { + path: '/sso', + component: () => import('views/login/sso.vue') + }, + { + name: 'LockMe', + path: '/lockme', + component: () => import('views/login/lockme.vue') + }, + { + path: '/', + component: () => import('@/layouts/home.vue'), + redirect: '/resource_dashboard', + meta: { + title: '主页', + noTag: true + }, + name: 'Home', + children: [ + { + name: 'Redirect', + path: 'redirect', + meta: { noTag: true }, + component: () => import('@/layouts/redirect.vue') + } + ] + }, + { + path: '/resource_dashboard', + meta: { + title: '资源概览', + noTag: true + }, + component: () => import('views/configs/setting_dashboard/index.vue') + }, + { + path: '/404', + name: '404', + meta: { + title: '404', + noTag: true + }, + component: () => import('@/views/errorPage/404.vue') + }, + { + path: '/401', + meta: { + title: '401', + noTag: true + }, + component: () => import('@/views/errorPage/401.vue') + } +] +export default main diff --git a/src/router/module/system.js b/src/router/module/system.js new file mode 100644 index 0000000..e674af3 --- /dev/null +++ b/src/router/module/system.js @@ -0,0 +1,28 @@ +const system = { + SystemDepart: () => import('views/permisson/department.vue'), + SystemManager: () => import('views/permisson/manager/index.vue'), + TenantManager: () => import('views/permisson/tenant/index.vue'), + SystemRole: () => import('views/permisson/role.vue'), + SystemPermission: () => import('views/permisson/auth/index.vue'), + NameRule: () => import('views/configs/namerule.vue'), + AuditLog: () => import('views/log/audit.vue'), + SystemDictionary: () => import('views/configs/dictionary.vue'), + SystemMonitor: () => import('views/monitor/index.vue'), + SystemAbout: () => import('views/about/index.vue'), + SettingDashboard: () => import('views/configs/setting_dashboard/index.vue'), + SystemPageSetting: () => import('views/configs/setting/page/index.vue'), + SystemInterfaceSetting: () => import('views/configs/setting/interface/index.vue'), + SystemGeneralSetting: () => import('views/configs/setting/general.vue'), + SystemSecuritySetting: () => import('views/configs/setting/security/index.vue'), + SystemEnviroment: () => import('views/configs/enviroment.vue'), + BusinessSetting: () => import('views/configs/business/index.vue'), + ProjectAdmin: () => import('views/configs/project/index.vue'), + Tag: () => import('views/configs/tag.vue'), + PlatformTask: () => import('views/configs/PlatformTask.vue'), + Migration: () => import('views/configs/migration/index.vue'), + Notice: () => import('views/configs/notice/index.vue'), + PluginManager: () => import('views/permisson/plugins/index.vue'), + PluginManagerConfig: () => import('views/permisson/plugins/configIndex.vue'), + SettingMonitor: () => import('views/configs/setting/monitor/index.vue') +} +export default system diff --git a/src/services/platform/index.js b/src/services/platform/index.js new file mode 100644 index 0000000..70fcd5c --- /dev/null +++ b/src/services/platform/index.js @@ -0,0 +1,3228 @@ +import request from 'utils/request' +import { wrapperParams, downloadFile } from 'utils' + +// volume +const volumeUrl = '/ims/v1/volumes' +export function getVolume(params, url) { + return request.get(url || volumeUrl, { + params + }) +} + +// 公有云账单 +export function billList(params) { + return request.get('/cos/v1/pc/bills', { params }) +} + +export function exportBill(id) { + downloadFile(`/cos/v1/pc/bills/${id}/download`) +} + +export function exportBillTemplate(params) { + downloadFile('/cos/v1/pc/bills/import/template', params) +} + +export function getBillInstance(params) { + return request.patch(`/cos/v1/pc/bills/${params.propertyId}/columns`, wrapperParams(params)) +} + +export function getBillingDetails(params, id) { + return request.get(`/cos/v1/pc/bills/${id}`, { params }) +} + +export function removeBill(id) { + return request.delete(`/cos/v1/pc/bills/${id}`) +} + +export function mergeBill(params) { + return request.post('/cos/v1/pc/bills/combine', wrapperParams(params)) +} + +// 虚拟机 + +export function createVolume(params, url) { + return request.post(url || volumeUrl, wrapperParams(params)) +} + +export function modifyVolume(params) { + return request.put(`${volumeUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeVolume(id) { + return request.delete(`${volumeUrl}/${id}`) +} + +export function detailVolume(id) { + return request.get(`${volumeUrl}/${id}`) +} + +export function patchVolume(action, params) { + return request.patch(`${volumeUrl}/${params.id ? params.id : params.resId}`, { + action: action, + ...wrapperParams(params) + }) +} + +export function conditionVoleme(obj) { + const params = { condition: JSON.stringify(obj) } + return request.get(`${volumeUrl}/condition`, { params }) +} + +export function removeVolumes(params) { + return request.delete(`${volumeUrl}`, { data: params }) +} + +export function getVolumeVms(params) { + return request.get(`${volumeUrl}/${params.id}/vms`, { + params: wrapperParams(params) + }) +} + +const dmsVolumeUrl = '/dms/v1/storages/volumes' +export function getDmsVolume(params) { + return request.get(dmsVolumeUrl, { + params + }) +} + +export function createDmsVolume(params) { + return request.post(dmsVolumeUrl, wrapperParams(params)) +} + +export function modifyDmsVolume(params) { + return request.put(`${dmsVolumeUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeDmsVolume(id) { + return request.delete(`${dmsVolumeUrl}/${id}`) +} + +export function detailDmsVolume(id) { + return request.get(`${dmsVolumeUrl}/${id}`) +} + +// vpc +const vpcUrl = '/ims/v1/vpcs' +export function getVpc(params) { + return request.get(vpcUrl, { params }) +} + +export function createVpc(params) { + return request.post(vpcUrl, wrapperParams(params)) +} + +export function modifyVpc(params) { + return request.put(`${vpcUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeVpc(id) { + return request.delete(`${vpcUrl}/${id}`) +} + +export function removeVpcs(params) { + return request.delete(`${vpcUrl}`, { params: wrapperParams(params) }) +} + +export function detailVpc(id) { + return request.get(`${vpcUrl}/${id}`) +} +export function createVpcCidr(id, params) { + return request.put(`${vpcUrl}/${id}/add/address/space`, wrapperParams(params)) +} +export function removeVpcCidr(id, params) { + return request.put(`${vpcUrl}/${id}/remove/address/space`, wrapperParams(params)) +} +export function createVpcDns(id, params) { + return request.put(`${vpcUrl}/${id}/dns/server`, wrapperParams(params)) +} +export function createVpcDdos(params) { + return request.post(`${vpcUrl}/${params.id}/ddos`, params) +} + +export function removeVpcDdos(params) { + return request.delete(`${vpcUrl}/${params.id}/ddos`) +} + +// 区域 +const regionZoneUrl = '/ims/v1/regions' +export function getRegion(params) { + return request.get(regionZoneUrl, { params }) +} +export function getRegionCondition(params) { + return request.get(`${regionZoneUrl}/condition`, { params: { condition: JSON.stringify(params) } }) +} + +export function getZone(params) { + return request.get(`${regionZoneUrl}/zones`, { + params: wrapperParams(params) + }) +} + +// 同步记录 +const syncLogUrl = '/cos/v1/vendors/records' +export function getLogSync(params) { + return request.get(syncLogUrl, { params }) +} + +// 字典 +const dictUrl = '/sms/v1/dictionaries' +export function getDict(params) { + return request.get(dictUrl, { params }) +} + +export function createDict(params) { + return request.post(dictUrl, wrapperParams(params)) +} + +export function modifyDict(params) { + return request.put(`${dictUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeDict(id) { + return request.delete(`${dictUrl}/${id}`) +} + +export function detailDict(id) { + return request.get(`${dictUrl}/${id}`) +} + +export function getDictChildren(params) { + return request.get(`${dictUrl}/children`, { params }) +} + +export function getDictChildrenTree(params) { + return request.get(`${dictUrl}/children/tree`, { + params: wrapperParams(params) + }) +} + +// 镜像 +const imageUrl = '/ims/v1/images' +export function getImage(params) { + return request.get(imageUrl, { + params + }) +} + +export function createImage(params) { + return request.post(imageUrl, wrapperParams(params)) +} + +export function modifyImage(params) { + return request.put(`${imageUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeImage(id) { + return request.delete(`${imageUrl}/${id}`) +} + +export function removeTcImage(id, params) { + return request.delete(`${imageUrl}/${id}`, { + params: JSON.stringify(params) + }) +} + +export function detailImage(id) { + return request.get(`${imageUrl}/${id}`) +} + +export function conditionImage(obj) { + const params = { condition: JSON.stringify(obj) } + return request.get(`${imageUrl}/condition`, { params }) +} + +export function removeImages(params) { + return request.delete(imageUrl, { data: wrapperParams(params) }) +} + +// 批量更新 复制镜像 +export function allModifyImage(params) { + return request.put(imageUrl, wrapperParams(params)) +} + +// 更新镜像到期时间 +export function updateImageTime(params) { + return request.patch(`${imageUrl}/${params.resId}`, { + action: 'updateExpriedTime', + ...wrapperParams(params) + }) +} + +// 批量删除 根据某种需求删除镜像 +export function removeAllImage(params) { + return request.delete(imageUrl, wrapperParams(params)) +} + +// 镜像共享 +export function shareImage(params) { + return request.patch(`${imageUrl}/${params.imageId}`, { + action: 'shareImage', + ...wrapperParams(params) + }) +} + +export function shareSyncImage(params) { + return request.patch(`${imageUrl}/${params.imageId}`, { + action: 'syncImages', + ...wrapperParams(params) + }) +} + +export function patchImage(action, params) { + return request.patch(`${imageUrl}/${params.id}`, { + action: action, + ...wrapperParams(params) + }) +} + +// 查询镜像使用的存储卷 +export function volumeImage(id) { + return request.get(`${imageUrl}/${id}/volumes`) +} + +const rspUrl = '/ims/v1/rsps' +export function getSchedulerPolicy(params) { + return request.get(rspUrl, { + params + }) +} + +export function createSchedulerPolicy(params) { + return request.post(rspUrl, wrapperParams(params)) +} + +export function modifySchedulerPolicy(params) { + return request.put(`${rspUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeSchedulerPolicy(id) { + return request.delete(`${rspUrl}/${id}`) +} + +export function detailSchedulerPolicy(id) { + return request.get(`${rspUrl}/${id}`) +} + +export function bindCluster(params) { + return request.patch(`${rspUrl}/${params.id}/clusters`, wrapperParams(params)) +} + +export function setPolicy(params) { + return request.patch(`/ims/v1/pool/groups/${params.id}`, params) +} + +// 弹性伸缩 +const autoUrl = '/ims/v1/autoscaling' +export function getAuto(params) { + return request.get(autoUrl, { + params + }) +} + +export function createAuto(params) { + return request.post(autoUrl, wrapperParams(params)) +} + +export function modifyAuto(params) { + return request.put(`${autoUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeAuto(id) { + return request.delete(`${autoUrl}/${id}`) +} + +export function removeTcAuto(id, params) { + return request.delete(`${autoUrl}/${id}`, { params: JSON.stringify(params) }) +} + +export function detailAuto(id) { + return request.get(`${autoUrl}/${id}`) +} + +export function conditionAuto(params) { + return request.get(`${autoUrl}/condition`, { params }) +} + +export function removeAutos(params) { + return request.delete(autoUrl, { params: wrapperParams(params) }) +} + +export function patchAuto(params) { + return request.patch(`${autoUrl}/${params.id}`, wrapperParams(params)) +} + +// 伸缩配置 +const autoSettingUrl = '/ims/v1/autoscaling/config' +export function getAutoConfig(params) { + return request.get(autoSettingUrl, { + params + }) +} + +export function createAutoConfig(params) { + return request.post(autoSettingUrl, wrapperParams(params)) +} + +export function modifyAutoConfig(params) { + return request.put(`${autoSettingUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeAutoConfig(id) { + return request.delete(`${autoSettingUrl}/${id}`) +} + +export function removeTcAutoConfig(id, params) { + return request.delete(`${autoSettingUrl}/${id}`, { + params: JSON.stringify(params) + }) +} + +export function detailAutoConfig(id) { + return request.get(`${autoSettingUrl}/${id}`) +} + +export function conditionAutoConfig(params) { + return request.get(`${autoSettingUrl}/condition`, { params }) +} + +export function removeAutoConfigs(params) { + return request.delete(autoSettingUrl, { params: wrapperParams(params) }) +} + +// 报警任务 +const alarmTaskUrl = '/ims/v1/autoscaling/alarmtask' +export function getAlarmTask(params) { + return request.get(alarmTaskUrl, { + params + }) +} + +export function createAlarmTask(params) { + return request.post(alarmTaskUrl, wrapperParams(params)) +} + +export function modifyAlarmTask(params) { + return request.put(`${alarmTaskUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeAlarmTask(id) { + return request.delete(`${alarmTaskUrl}/${id}`) +} + +export function removeTcAlarmTask(id, params) { + return request.delete(`${alarmTaskUrl}/${id}`, { + params: JSON.stringify(params) + }) +} + +export function detailAlarmTask(id) { + return request.get(`${alarmTaskUrl}/${id}`) +} + +export function conditionAlarmTask(params) { + return request.get(`${alarmTaskUrl}/condition`, { params }) +} + +export function removeAlarmTasks(params) { + return request.delete(alarmTaskUrl, { params: wrapperParams(params) }) +} + +// 定时任务 +const timedTaskUrl = '/ims/v1/autoscaling/timedtask' +export function getTimedTask(params) { + return request.get(timedTaskUrl, { + params + }) +} + +export function createTimedTask(params) { + return request.post(timedTaskUrl, wrapperParams(params)) +} + +export function modifyTimedTask(params) { + return request.put(`${timedTaskUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeTimedTask(id) { + return request.delete(`${timedTaskUrl}/${id}`) +} + +export function removeTcTimedTask(id, params) { + return request.delete(`${timedTaskUrl}/${id}`, { + params: JSON.stringify(params) + }) +} + +export function detailTimedTask(id) { + return request.get(`${timedTaskUrl}/${id}`) +} + +export function conditionTimedTask(params) { + return request.get(`${timedTaskUrl}/condition`, { params }) +} + +export function removeTimedTasks(params) { + return request.delete(timedTaskUrl, { params: wrapperParams(params) }) +} + +// 安全组 +const sgroupsUrl = '/ims/v1/sgroups' +export function getGroup(params) { + return request.get(sgroupsUrl, { + params + }) +} + +export function createGroup(params) { + return request.post(sgroupsUrl, wrapperParams(params)) +} + +export function modifyGroup(params) { + return request.put(`${sgroupsUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeGroup(id) { + return request.delete(`${sgroupsUrl}/${id}`) +} + +export function detailGroup(id) { + return request.get(`${sgroupsUrl}/${id}`) +} + +export function removeGroups(params) { + return request.delete(sgroupsUrl, { data: params }) +} + +export function patchGroups(action, params) { + return request.patch(`${sgroupsUrl}/${params.id}`, { + action: action, + ...wrapperParams(params) + }) +} + +// 安全组规则 +const sgroupsRuleUrl = '/ims/v1/sgroups/rules' +export function getGroupRule(params) { + return request.get(sgroupsRuleUrl, { + params + }) +} + +export function createGroupRule(params) { + return request.post(sgroupsRuleUrl, wrapperParams(params)) +} +export function modifyGroupRule(params) { + return request.put(`${sgroupsRuleUrl}/${params.id}`, wrapperParams(params)) +} +export function removeGroupRule(id) { + return request.delete(`${sgroupsRuleUrl}/${id}`) +} + +export function detailGroupRule(id) { + return request.get(`${sgroupsRuleUrl}/${id}`) +} + +export function removeGroupRules(params) { + return request.delete(sgroupsRuleUrl, { data: params }) +} + +// spec +const specUrl = '/ims/v1/specs' +export function getSpec(params) { + return request.get(specUrl, { + params + }) +} + +export function createSpec(params) { + return request.post(specUrl, wrapperParams(params)) +} + +export function modifySpec(params) { + return request.put(`${specUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeSpec(id) { + return request.delete(`${specUrl}/${id}`) +} + +export function detailSpec(id) { + return request.get(`${specUrl}/${id}`) +} + +// 子网 +const subnetUrl = '/ims/v1/subnets' +export function getSubnet(params) { + return request.get(subnetUrl, { + params + }) +} + +export function createSubnet(params) { + return request.post(subnetUrl, wrapperParams(params)) +} + +export function modifySubnet(params) { + return request.put(`${subnetUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeSubnet(id) { + return request.delete(`${subnetUrl}/${id}`) +} + +export function detailSubnet(id) { + return request.get(`${subnetUrl}/${id}`) +} + +export function conditionSubnet(params) { + return request.get(`${subnetUrl}/condition`, { params }) +} + +// 查询路由连接的子网 +export function getRouterSubnet(params) { + return request.get('/ims/v1/routers/subnets', { params }) +} + +export function removeSubnets(params) { + return request.delete(subnetUrl, { data: params }) +} + +// vdc +const vdcUrl = '/ims/v1/vdcs' +export function getVdc(params) { + return request.get(vdcUrl, { + params + }) +} + +export function createVdc(params) { + return request.post(vdcUrl, wrapperParams(params)) +} + +export function modifyVdc(params) { + return request.put(`${vdcUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeVdc(id) { + return request.delete(`${vdcUrl}/${id}`) +} + +export function detailVdc(id) { + return request.get(`${vdcUrl}/${id}`) +} + +export function getVdcHost(params) { + return request.get(`${vdcUrl}/${params.id}/hosts`, { + params: wrapperParams(params) + }) +} + +// 网卡 +const networkcardUrl = '/ims/v1/nics' +export function getNetworkcard(params) { + return request.get(networkcardUrl, { + params + }) +} + +export function createNetworkcard(params) { + return request.post(networkcardUrl, wrapperParams(params)) +} + +export function modifyNetworkcard(params) { + return request.put(`${networkcardUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeNetworkcard(id) { + return request.delete(`${networkcardUrl}/${id}`) +} + +export function detailNetworkcard(id) { + return request.get(`${networkcardUrl}/${id}`) +} + +// 挂载 +export function attachNetworkcard(params) { + return request.patch(`${networkcardUrl}/${params.id}/vms`, wrapperParams(params)) +} + +export function attachDeleteNetworkcard(params) { + return request.delete(`${networkcardUrl}/${params.id}/vms`, { + params: wrapperParams(params) + }) +} + +export function getUnbindCard(id) { + return request.get(`${networkcardUrl}/unBandList/${id}`) +} + +// 命名规则 +const nameRuleUrl = '/sms/v1/namings' +export function getNameRule(params) { + return request.get(nameRuleUrl, { + params + }) +} + +export function createNameRule(params) { + return request.post(nameRuleUrl, wrapperParams(params)) +} + +export function modifyNameRule(params) { + return request.put(`${nameRuleUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeNameRule(id) { + return request.delete(`${nameRuleUrl}/${id}`) +} + +export function detailNameRule(id) { + return request.get(`${nameRuleUrl}/${id}`) +} + +// 标签 +const labelUrl = '/ims/v1/tags' +export function getLabel(params) { + return request.get(labelUrl, { + params + }) +} + +export function createLabel(params) { + return request.post(labelUrl, wrapperParams(params)) +} + +export function modifyLabel(params) { + return request.put(`${labelUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeLabel(id) { + return request.delete(`${labelUrl}/${id}`) +} + +export function detailLabel(id) { + return request.get(`${labelUrl}/${id}`) +} + +// 密钥 +const keyUrl = '/ims/v1/keypairs' +export function getKey(params) { + return request.get(keyUrl, { + params + }) +} + +export function createKey(params) { + return request.post(keyUrl, wrapperParams(params)) +} + +export function modifyKey(params) { + return request.put(`${keyUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeKey(id) { + return request.delete(`${keyUrl}/${id}`) +} + +export function detailKey(id) { + return request.get(`${keyUrl}/${id}`) +} + +export function existKey(params) { + return request.get(keyUrl, { params }) +} + +export function removeKeys(params) { + return request.delete(keyUrl, { data: params }) +} + +export function keyBindVm(params) { + return request.patch(`${keyUrl}/${params.keypairId}`, wrapperParams(params)) +} + +// 平台 +const cloudVendorUrl = '/ims/v1/vendors' +export function getCloudVendor(params, url) { + return request.get(`${url || cloudVendorUrl}`, { + params + }) +} + +export function getOverviewCloudVendor(params) { + return request.get('/sms/v1/vendors', { + params + }) +} + +export function getVendorType(params) { + return request.get('/sms/v1/vendors/condition', { + params + }) +} + +export function createCloudVendor(params, url) { + return request.post(`${url || cloudVendorUrl}`, wrapperParams(params)) +} + +export function modifyCloudVendor(params, url) { + return request.put(`${url || cloudVendorUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeCloudVendor(id, url) { + return request.delete(`${url || cloudVendorUrl}/${id}`) +} + +export function detailCloudVendor(id, url) { + return request.get(`${url || cloudVendorUrl}/${id}`) +} + +export function syncCloudVendor(id, url) { + return request.post(`${url || cloudVendorUrl}/${id}/sync`) +} + +export function getVendorHosts(params) { + return request.get(`/ims/v1/vendors/${params.id}/hosts`, { + params: wrapperParams(params) + }) +} + +export function getDictionaries(params) { + return request.get('/sms/v1/dictionaries/children', { + params + }) +} + +export function getDictionariesTree(params) { + return request.get('/sms/v1/dictionaries/children/tree', { + params + }) +} + +export function getVendorGroup(params) { + return request.get('/soc/v1/vendor/group', { + params + }) +} + +export function patchCloudVendor(params, url) { + return request.patch(`${url || cloudVendorUrl}/${params.id}/password`, { ...wrapperParams(params) }) +} + +export function patchCloudVendorExcessRatio(params) { + return request.patch(`${cloudVendorUrl}/${params.id}/excessRatio`, { ...wrapperParams(params) }) +} + +// 平台告警阈值 +export function alarmCloudVendor(params) { + return request.post(`${cloudVendorUrl}/${params.target}/alarms`, wrapperParams(params)) +} + +export function getAlarmCloudVendor(params) { + return request.get(`${cloudVendorUrl}/${params.id}/alarms`, { + params: wrapperParams(params) + }) +} + +export function capacityAlarmCloudVendor(params) { + return request.get(`${cloudVendorUrl}/${params.id}/capacity`, { + params: wrapperParams(params) + }) +} + +export function conditionCloudVendor(params) { + return request.get(`${cloudVendorUrl}/condition`, { params }) +} + +export function outAlarms(params) { + return request.get(cloudVendorUrl, wrapperParams(params)) +} + +export function removeAlarms(params) { + return request.delete(cloudVendorUrl, { params: wrapperParams(params) }) +} + +// 集群 +const clutersUrl = '/ims/v1/clusters' +export function getCluters(params) { + return request.get(clutersUrl, { + params + }) +} + +export function createCluters(params) { + return request.post(clutersUrl, wrapperParams(params)) +} + +export function modifyCluters(params) { + return request.put(`${clutersUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeCluters(id) { + return request.delete(`${clutersUrl}/${id}`) +} + +export function detailCluters(id) { + return request.get(`${clutersUrl}/${id}`) +} + +export function getCluterHosts(params) { + return request.get(`${clutersUrl}/${params.clusterId}/hosts`, { + params: wrapperParams(params) + }) +} + +export function getCluterTendency(params) { + return request.get(`${clutersUrl}/${params.id}/tendency`, { + params + }) +} + +// 集群移入移除主机 +export function cluterBindVm(params) { + return request.post(`${clutersUrl}/${params.id ? params.id : params.clusterId}/hosts`, wrapperParams(params)) +} + +export function cluterUnBindVm(params) { + return request.delete(`${clutersUrl}/${params.id ? params.id : params.clusterId}/hosts`, { data: wrapperParams(params) }) +} + +export function alarmCluter(params) { + return request.post(`${clutersUrl}/${params.target}/thresholds`, wrapperParams(params)) +} + +export function getAlarmCluter(params) { + return request.get(`${clutersUrl}/${params.id}/thresholds`, { + params: wrapperParams(params) + }) +} + +// 集群节点 +export function getClutersNodes(params) { + return request.get(`${clutersUrl}/hosts`, { params }) +} + +export function getClutersNodesDetail(id) { + return request.get(`${clutersUrl}/hosts/${id}`) +} + +// 数据中心 +const dcUrl = '/ims/v1/dcs' +export function getDc(params) { + return request.get(dcUrl, { + params + }) +} + +export function createDc(params) { + return request.post(dcUrl, wrapperParams(params)) +} + +export function modifyDc(params) { + return request.put(`${dcUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeDc(id) { + return request.delete(`${dcUrl}/${id}`) +} + +export function detailDc(id) { + return request.get(`${dcUrl}/${id}`) +} +// vcenter虚机存储路径 +export function getFolders(params) { + return request.get('/ims/v1/folder', { + params: params + }) +} +// 硬盘类型 +const diskTypeUrl = '/ims/v1/volume/types' +export function getDiskType(params) { + return request.get(diskTypeUrl, { + params + }) +} + +export function createDiskType(params) { + return request.post(diskTypeUrl, wrapperParams(params)) +} + +export function modifyDiskType(params) { + return request.put(`${diskTypeUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeDiskType(id) { + return request.delete(`${diskTypeUrl}/${id}`) +} + +export function detailDiskType(id) { + return request.get(`${diskTypeUrl}/${id}`) +} + +// 数据存储 +const datastoresUrl = '/ims/v1/datastores' +export function getDatastores(params) { + return request.get(datastoresUrl, { + params + }) +} + +export function createDatastores(params) { + return request.post(datastoresUrl, wrapperParams(params)) +} + +export function modifyDatastores(params) { + return request.put(`${datastoresUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeDatastores(id) { + return request.delete(`${datastoresUrl}/${id}`) +} + +export function detailDatastores(id) { + return request.get(`${datastoresUrl}/${id}`) +} + +export function getDatastoresVm(params) { + return request.get(`${datastoresUrl}/${params.hostId}/hosts`, { + params: wrapperParams(params) + }) +} + +export function getDatastoresServer(params) { + return request.get(`${datastoresUrl}/${params.id}/vms`, { params }) +} + +export function getDatastoresHosts(params) { + return request.get(`${datastoresUrl}/${params.id}/hosts`, { params }) +} + +export function getDatastoresFiles(params) { + return request.post(`${datastoresUrl}/${params.id}/files`, params) +} + +export function getDatastoresHostsDelete(params) { + return request.delete(`${datastoresUrl}/${params.id}/hosts`, { params }) +} + +export function conditionDatastore(params) { + return request.get(`${datastoresUrl}/condition`, { params }) +} + +export function putDatastoresTags(params) { + return request.put('/ims/v1/datastores/tags', wrapperParams(params)) +} + +// 所属环境 +const environmentsUrl = '/sms/v1/environments' +export function getEnvironments(params) { + return request.get(environmentsUrl, { + params + }) +} + +export function createEnvironments(params) { + return request.post(environmentsUrl, wrapperParams(params)) +} + +export function modifyEnvironments(params) { + return request.put(`${environmentsUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeEnvironments(id) { + return request.delete(`${environmentsUrl}/${id}`) +} + +export function detailEnvironments(id) { + return request.get(`${environmentsUrl}/${id}`) +} + +// 防火墙 +const firewallUrl = '/ims/v1/firewalls' +export function getFirewall(params) { + return request.get(firewallUrl, { + params + }) +} + +export function createFirewall(params) { + return request.post(firewallUrl, wrapperParams(params)) +} + +export function modifyFirewall(params) { + return request.put(`${firewallUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeFirewall(id) { + return request.delete(`${firewallUrl}/${id}`) +} + +export function detailFirewall(id) { + return request.get(`${firewallUrl}/${id}`) +} + +export function removeFirewalls(params) { + return request.delete(firewallUrl, { params: wrapperParams(params) }) +} + +// 防火墙路由 +export function firewallRouter(params) { + return request.post(`${firewallUrl}/${params.id}/routers`, wrapperParams(params)) +} + +export function getFirewallRouter(params) { + return request.get(`${firewallUrl}/${params.id}/routers`, { params }) +} + +// 计算节点 +const nodelUrl = '/ims/v1/clusters/nodes' +export function getNode(params) { + return request.get(nodelUrl, { + params + }) +} + +export function createNode(params) { + return request.post(nodelUrl, wrapperParams(params)) +} + +export function modifyNode(params) { + return request.put(`${nodelUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeNode(id) { + return request.delete(`${nodelUrl}/${id}`) +} + +export function detailNode(id) { + return request.get(`${nodelUrl}/${id}`) +} + +export function removeNodes(params) { + return request.delete(nodelUrl, { params: wrapperParams(params) }) +} + +export function conditionNode(params) { + return request.get(`${nodelUrl}/condition`, { params }) +} + +// 云堆栈 +const stackUrl = '/ims/v1/heat/stacks' +export function getStack(params) { + return request.get(stackUrl, { + params + }) +} + +export function createStack(params) { + return request.post(stackUrl, wrapperParams(params)) +} + +export function modifyStack(params) { + return request.put(`${stackUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeStack(id) { + return request.delete(`${stackUrl}/${id}`) +} + +export function detailStack(id) { + return request.get(`${stackUrl}/${id}`) +} + +export function removeStacks(params) { + return request.delete(stackUrl, { params: wrapperParams(params) }) +} + +export function conditionStack(params) { + return request.get(`${stackUrl}/condition`, { params }) +} + +export function patchStack(action, params) { + return request.patch(`${stackUrl}/${params.id}`, { + action: action + }) +} + +export function stackEvent(params) { + return request.get(`${stackUrl}/event`, { params }) +} + +// 云堆栈版本 +const stackVersionUrl = '/ims/v1/heat/stacks/versions' +export function getStackVersion(params) { + return request.get(stackVersionUrl, { + params + }) +} + +export function createStackVersion(params) { + return request.post(stackVersionUrl, wrapperParams(params)) +} + +export function modifyStackVersion(params) { + return request.put(`${stackVersionUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeStackVersion(id) { + return request.delete(`${stackVersionUrl}/${id}`) +} + +export function detailStackVersion(id) { + return request.get(`${stackVersionUrl}/${id}`) +} + +export function removeStackVersions(params) { + return request.delete(stackVersionUrl, { params: wrapperParams(params) }) +} + +export function conditionStackVersion(params) { + return request.get(`${stackVersionUrl}/condition`, { params }) +} + +// 防火墙规则 +const firewalRulelUrl = '/ims/v1/firewalls/rules' +export function getFirewallRule(params) { + return request.get(firewalRulelUrl, { + params + }) +} + +export function createFirewallRule(params) { + return request.post(firewalRulelUrl, wrapperParams(params)) +} + +export function modifyFirewallRule(params) { + return request.put(`${firewalRulelUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeFirewallRule(id) { + return request.delete(`${firewalRulelUrl}/${id}`) +} + +export function detailFirewallRule(id) { + return request.get(`${firewalRulelUrl}/${id}`) +} + +export function removeFirewallRules(params) { + return request.delete(firewalRulelUrl, { data: wrapperParams(params) }) +} + +export function conditionFirewallRule(params) { + return request.get(`${firewalPolicyUrl}/condition`, { params }) +} + +// 防火墙策略 +const firewalPolicyUrl = '/ims/v1/firewalls/policies' +export function getFirewallPolicy(params) { + return request.get(firewalPolicyUrl, { + params + }) +} + +export function createFirewallPolicy(params) { + return request.post(firewalPolicyUrl, wrapperParams(params)) +} + +export function modifyFirewallPolicy(params) { + return request.put(`${firewalPolicyUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeFirewallPolicy(id) { + return request.delete(`${firewalPolicyUrl}/${id}`) +} + +export function detailFirewallPolicy(id) { + return request.get(`${firewalPolicyUrl}/${id}`) +} + +export function removeFirewallPolicys(params) { + return request.delete(firewalPolicyUrl, { data: wrapperParams(params) }) +} + +export function conditionFirewallPolicy(params) { + return request.get(`${firewalPolicyUrl}/condition`, { params }) +} + +export function policyBindRule(params) { + return request.get(`${firewalPolicyUrl}/${params.policyId}/rules`, { + params + }) +} + +// 插入移除规则 +export function policyRule(params) { + return request.post(`${firewalPolicyUrl}/${params.id}/rules`, wrapperParams(params)) +} + +export function removePolicyRule(params) { + return request.delete(`${firewalPolicyUrl}/${params.id}/rules`, { + params: wrapperParams(params) + }) +} + +// QoS策略 +const qosPolicyUrl = 'ims/v1/qos/policys' +export function getQosPolicy(params) { + return request.get(qosPolicyUrl, { + params + }) +} + +export function createQosPolicy(params) { + return request.post(qosPolicyUrl, wrapperParams(params)) +} + +export function modifyQosPolicy(params) { + return request.put(`${qosPolicyUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeQosPolicy(id) { + return request.delete(`${qosPolicyUrl}/${id}`) +} + +export function detailQosPolicy(id) { + return request.get(`${qosPolicyUrl}/${id}`) +} + +export function removeQosPolicys(params) { + return request.delete(qosPolicyUrl, { data: wrapperParams(params) }) +} + +export function conditionQosPolicy(params) { + return request.get(`${qosPolicyUrl}/condition`, { params }) +} + +// QoS规则 +const qosRuleUrl = 'ims/v1/qos/rules' +export function getQosRule(params) { + return request.get(qosRuleUrl, { + params + }) +} + +export function createQosRule(params) { + return request.post(qosRuleUrl, wrapperParams(params)) +} + +export function modifyQosRule(params) { + return request.put(`${qosRuleUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeQosRule(id) { + return request.delete(`${qosRuleUrl}/${id}`) +} + +export function detailQosRule(id) { + return request.get(`${qosRuleUrl}/${id}`) +} + +export function removeQosRules(params) { + return request.delete(qosRuleUrl, { params: wrapperParams(params) }) +} + +export function conditionQosRule(params) { + return request.get(`${qosRuleUrl}/condition`, { params }) +} + +// 规格 +const flavorUrl = '/ims/v1/flavors' +export function getFlavor(params) { + return request.get(flavorUrl, { + params + }) +} + +export function createFlavor(params) { + return request.post(flavorUrl, wrapperParams(params)) +} + +export function modifyFlavor(params) { + return request.put(`${flavorUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeFlavor(id) { + return request.delete(`${flavorUrl}/${id}`) +} + +export function detailFlavor(id) { + return request.get(`${flavorUrl}/${id}`) +} + +export function removeFlavors(params) { + return request.delete(flavorUrl, { data: params }) +} + +export function conditionFlavor(params) { + return request.get(`${flavorUrl}/condition`, { params }) +} + +export function modifyFlavors(params) { + return request.post(`${flavorUrl}/status/batch`, wrapperParams(params)) +} + +export function modifyAzureFlavor(params) { + return request.put(`${flavorUrl}/${params.id}/status`, wrapperParams(params)) +} + +// 阿里云red +const aliRdsUrl = '/ims/v1/rds/pc/instances' +export function getAliRds(params) { + return request.get(aliRdsUrl, { + params + }) +} + +export function patchAliRds(id) { + return request.patch(`${aliRdsUrl}/${id}`) +} + +export function removeAliRds(id) { + return request.delete(`${aliRdsUrl}/${id}`) +} + +export function detailAliRds(id) { + return request.get(`${aliRdsUrl}/${id}`) +} + +// 云硬盘备份 +const backUpUrl = '/ims/v1/backup/vaults' +export function getBackUp(params) { + return request.get(backUpUrl, { + params + }) +} + +export function createBackUp(params) { + return request.post(backUpUrl, wrapperParams(params)) +} + +export function modifyBackUp(params) { + return request.put(`${backUpUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeBackUp(id) { + return request.delete(`${backUpUrl}/${id}`) +} + +export function detailBackUp(id) { + return request.get(`${backUpUrl}/${id}`) +} + +export function conditionBackUp(params) { + return request.get(`${backUpUrl}/condition`, { params }) +} + +export function getBackUps(params) { + return request.get('/ims/v1/backups', { + params + }) +} + +export function detailBackUps(id) { + return request.get(`/ims/v1/backups/${id}`) +} + +export function removeBackUps(id) { + return request.delete(`/ims/v1/backups/${id}`) +} + +export function restoreBackUp(params) { + return request.post('/ims/v1/backups/restore', wrapperParams(params)) +} + +export function bindBackUp(params) { + return request.post(`${backUpUrl}/addResources`, wrapperParams(params)) +} + +export function backUp(params) { + return request.post(`${backUpUrl}/backup`, wrapperParams(params)) +} + +// 浮动IP +const floatIpUrl = '/ims/v1/floatips' +export function getFloatIp(params) { + return request.get(floatIpUrl, { + params + }) +} + +export function createFloatIp(params) { + return request.post(floatIpUrl, wrapperParams(params)) +} + +export function modifyFloatIp(params) { + return request.put(`${floatIpUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeFloatIp(id) { + return request.delete(`${floatIpUrl}/${id}`) +} + +export function detailFloatIp(id) { + return request.get(`${floatIpUrl}/${id}`) +} + +export function removeFloatIps(params) { + return request.delete(floatIpUrl, { data: params }) +} + +export function conditionFloatIp(params) { + return request.get(`${floatIpUrl}/condition`, { params }) +} + +export function floatIpPorts(params) { + return request.post(`${floatIpUrl}/${params.id}/ports`, wrapperParams(params)) +} + +export function removeFloatIpPorts(params) { + return request.delete(`${floatIpUrl}/${params.id}/ports`, wrapperParams(params)) +} + +export function getFloatIpPorts(params) { + return request.get(`${floatIpUrl}/${params.id}/ports`, { + params: wrapperParams(params) + }) +} + +export function patchFloatIpPorts(params) { + return request.patch(`${floatIpUrl}/${params.id}`, wrapperParams(params)) +} + +// 浮动IP +const ipUrl = '/ims/v1/ips' +export function getIp(params) { + return request.get(ipUrl, { + params + }) +} +export function createIp(params) { + return request.post(ipUrl, wrapperParams(params)) +} +export function removeIp(id) { + return request.delete(`${ipUrl}/${id}`) +} + +export function detailIp(id) { + return request.get(`${ipUrl}/${id}`) +} +export function patchIps(action, params) { + return request.patch(`${ipUrl}`, { + action: action, + ...params + }) +} + +export function conditionIp(params) { + return request.get(`${ipUrl}/condition`, { params }) +} + +// IP池 +const ipPoolUrl = '/ims/v1/ip/pools' +export function getIpPool(params) { + return request.get(ipPoolUrl, { + params + }) +} + +export function createIpPool(params) { + return request.post(ipPoolUrl, wrapperParams(params)) +} + +export function modifyIpPool(params) { + return request.put(`${ipPoolUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeIpPool(id) { + return request.delete(`${ipPoolUrl}/${id}`) +} + +export function detailIpPool(id) { + return request.get(`${ipPoolUrl}/${id}`) +} + +export function conditionIpPool(params) { + return request.get(`${ipPoolUrl}/condition`, { params }) +} + +export function scanIp(params) { + return request.put('/ims/v1/ips', wrapperParams(params)) +} + +export function getDetailIp(params) { + return request.get(`${ipPoolUrl}/${params.id}/ips`, { params }) +} + +// 负载均衡 +const lbUrl = '/ims/v1/lbs' +export function getLb(params) { + return request.get(lbUrl, { + params + }) +} + +export function createLb(params) { + return request.post(lbUrl, wrapperParams(params)) +} + +export function modifyLb(params) { + return request.put(`${lbUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeLb(id) { + return request.delete(`${lbUrl}/${id}`) +} + +export function detailLb(id) { + return request.get(`${lbUrl}/${id}`) +} + +export function conditionLb(params) { + return request.get(`${lbUrl}/condition`, { params }) +} + +export function removeLbs(params) { + return request.delete(lbUrl, { data: wrapperParams(params) }) +} + +const lbLintenUrl = '/ims/v1/lb/listeners' +export function getLbListen(params) { + return request.get(lbLintenUrl, { + params + }) +} + +export function createLbListen(params) { + return request.post(lbLintenUrl, wrapperParams(params)) +} + +export function modifyLbListen(params) { + return request.put(`${lbLintenUrl}/${params.id || params.listener.id}`, wrapperParams(params)) +} + +export function removeLbListen(id) { + return request.delete(`${lbLintenUrl}/${id}`) +} + +export function detailLbListen(id) { + return request.get(`${lbLintenUrl}/${id}`) +} + +export function removeLbListens(params) { + return request.delete(lbLintenUrl, { data: wrapperParams(params) }) +} + +const lbLintenUserUrl = '/ims/v1/lb/members' +export function getLbListenUser(params) { + return request.get(lbLintenUserUrl, { + params + }) +} + +export function createLbListenUser(params) { + return request.post(lbLintenUserUrl, wrapperParams(params)) +} + +export function modifyLbListenUser(params) { + return request.put(`${lbLintenUserUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeLbListenUser(id) { + return request.delete(`${lbLintenUserUrl}/${id}`) +} + +export function detailLbListenUser(id) { + return request.get(`${lbLintenUserUrl}/${id}`) +} + +export function manageLbListenUser(params) { + return request.patch(`/ims/v1/lb/pools/${params.id ? params.id : params.poolId}/members`, wrapperParams(params)) +} + +// 网络 +const networkUrl = '/ims/v1/networks' +export function getNetwork(params) { + return request.get(networkUrl, { + params + }) +} + +export function createNetwork(params) { + return request.post(networkUrl, wrapperParams(params)) +} + +export function modifyNetwork(params) { + return request.put(`${networkUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeNetwork(id) { + return request.delete(`${networkUrl}/${id}`) +} + +export function detailNetwork(id) { + return request.get(`${networkUrl}/${id}`) +} + +export function removeNetworks(params) { + return request.delete(networkUrl, { data: wrapperParams(params) }) +} + +export function conditionNetwork(obj) { + const params = { condition: JSON.stringify(obj) } + return request.get(`${networkUrl}/condition`, { params }) +} + +export function networkTenant(params) { + return request.post(`${networkUrl}/${params.id}/tenants`, params) +} + +export function getNetworkTenant(params) { + return request.get(`${networkUrl}/${params.id}/tenants`, wrapperParams(params)) +} + +export function networkHosts(params) { + return request.get(`${networkUrl}/${params.id}/hosts`, { params }) +} + +export function networkVms(params) { + return request.get(`${networkUrl}/${params.id}/vms`, { params }) +} + +export function hostNetowrk(params) { + return request.get(`/ims/v1/hosts/${params.id}/networks`, { + params: wrapperParams(params), + type: 'Host' + }) +} + +// 标准交换机 +const networkSwitchsUrl = '/ims/v1/vswitches' +export function createSwitchs(params) { + return request.post(networkSwitchsUrl, wrapperParams(params)) +} + +export function modifySwitchs(params) { + return request.put(`${networkSwitchsUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeSwitchs(params) { + return request.delete(`${networkSwitchsUrl}/${params.id}`, { params }) +} + +export function detailSwitchs(id) { + return request.get(`${networkSwitchsUrl}/${id}`) +} + +export function patchSwitchs(params) { + return request.patch(`${networkSwitchsUrl}/${params.id}/hosts`, wrapperParams(params)) +} + +export function createHostSwitchs(params) { + return request.post('/ims/v1/hosts/switches', { ...wrapperParams(params), type: 'Vmware' }) +} + +// 端口组 +const pgsUrl = '/ims/v1/pgs' +export function getPgs(params) { + return request.get(pgsUrl, { + params + }) +} + +export function createPgs(params) { + return request.post(pgsUrl, wrapperParams(params)) +} + +export function modifyPgs(params) { + return request.put(`${pgsUrl}/${params.id}`, wrapperParams(params)) +} + +export function removePgs(params) { + return request.delete(`${pgsUrl}/${params.id}`, { params }) +} + +export function detailPgs(id) { + return request.get(`${pgsUrl}/${id}`) +} + +export function removePgss(params) { + return request.delete(pgsUrl, { params: wrapperParams(params) }) +} + +export function conditionPgs(params) { + return request.get(`${pgsUrl}/condition`, { params }) +} + +export function getVcTask(params) { + console.log(params) + return request.get(`/ims/v1/task-message/${params.id}`, { params: params.params }) +} + +export function getAlarams(params) { + return request.get('/ims/v1/alarms', { + params + }) +} + +// 虚拟机 +const vmUrl = '/ims/v1/vms' +export function getVm(params) { + return request.get(vmUrl, { params }) +} + +export function getVmTop(params) { + return request.get('/cos/v1/reports/vms/top', { params: wrapperParams(params) }) +} + +export function checkStatus() { + return request.get('/cos/v1/reports/vms/top/status') +} + +export function handleRetry(params) { + return request.put('/cos/v1/reports/vms/top/reset', wrapperParams(params)) +} + +export function statementList(params) { + return request.get('/cos/v1/reports/vms', { params }) +} +export function configTemplates(params) { + return request.put('/cos/v1/reports/templates', wrapperParams(params)) +} +export function selfTemplates(params) { + return request.post('/cos/v1/reports/templates', wrapperParams(params)) +} +export function removeTemplate(id) { + return request.delete(`/cos/v1/reports/templates/${id}`) +} +export function selfTemplateList(params) { + return request.get('/cos/v1/reports/templates', { params }) +} +export function configTemplateDetail(id, params) { + return request.get(`/cos/v1/reports/templates/vm/${id}`, { params: wrapperParams(params) }) +} +export function getHistory(params) { + return request.get('/cos/v1/reports', { params }) +} +export function delHistory(id) { + return request.delete(`/cos/v1/reports/${id}`) +} +export function historyMonitor(id) { + return request.get(`/cos/v1/reports/vms/history/${id}`) +} + +// export function selfTemplates() { + +// } +// export function selfTemplates() { + +// } export function selfTemplates() { + +// } export function selfTemplates() { + +// } export function selfTemplates() { + +// } export function selfTemplates() { + +// } + +export function createVm(action, params) { + return request.post(vmUrl, { action: action, ...wrapperParams(params) }) +} + +export function syncVm() { + return request.post(`${vmUrl}/sync`) +} + +export function modifyVm(params) { + return request.put(`${vmUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeVm(id) { + const params = { id: id } + return request.delete(`${vmUrl}/${id}`, params) +} + +export function detailVm(id) { + return request.get(`${vmUrl}/${id}`) +} + +export function conditionVm(obj) { + const params = { condition: JSON.stringify(obj) } + // if (obj.condition) { + // const { condition, ...others } = obj + // params = { condition: JSON.stringify(condition), ...others } + // } + return request.get(`${vmUrl}/condition`, { params }) +} + +export function removeVms(params) { + return request.delete(vmUrl, { data: params }) +} + +export function getVmChart(params) { + return request.get(`${vmUrl}/summary`, { params: wrapperParams(params) }) +} + +export function getVmNetworks(params) { + return request.get(`${vmUrl}/networks`, { params }) +} + +export function patchVm(action, params) { + return request.patch(vmUrl, { action: action, ...wrapperParams(params) }) +} + +export function modifyVmDisk(params) { + return request.put(`${vmUrl}/${params.id}/disks`, wrapperParams(params)) +} + +export function patchVms(action, params) { + return request.patch(vmUrl, { + action: action, + ids: params + }) +} + +export function patchVmId(action, params) { + return request.patch(`${vmUrl}/${params.id ? params.id : params.serverId}`, { + action: action, + ...wrapperParams(params) + }) +} + +export function vmUsers(params) { + return request.post(`${vmUrl}/users`, wrapperParams(params)) +} + +export function vmTenants(params) { + return request.put(`${vmUrl}/tenant`, wrapperParams(params)) +} + +export function vmSnapshot(params) { + return request.post(`${vmUrl}/${params.serverId}/snapshots`, wrapperParams(params)) +} + +export function removeVmUsers(params) { + return request.delete(`${vmUrl}/users`, { + data: wrapperParams(params) + }) +} + +export function modifyVmAccounts(params) { + return request.put(`${vmUrl}/${params.id}/accounts`, wrapperParams(params)) +} + +export function modifyVmVcPassword(params) { + return request.put(`${vmUrl}/${params.id}/password`, wrapperParams(params)) +} + +export function modifyVmOpPassword(params) { + return request.patch(`${vmUrl}/${params.id}/password`, wrapperParams(params)) +} + +export function vmHotConfigEnable(params) { + return request.patch(`${vmUrl}/${params.id ? params.id : params.serverId}/pluggable`, wrapperParams(params)) +} + +export function vmVmtools(action, params) { + return request.patch(`${vmUrl}/${params.id}/vmtools`, { + action: action, + ...wrapperParams(params) + }) +} +export function beforeAccessResource(id, params) { + return request.get(`/nms/v1/resources/vm_access/${id}`, { + params: params + }) +} +export function accessResource(action, params) { + return request.patch(`/nms/v1/resources/vm_access/${params.id}`, { + action: action, + ...wrapperParams(params) + }) +} + +export function modifyVmTags(params) { + return request.put(`${vmUrl}/tags`, wrapperParams(params)) +} + +export function modifyTags(params) { + return request.post('/ims/v1/tags/resources', wrapperParams(params)) +} + +export function getVmConsole(id, params) { + return request.get(`${vmUrl}/${id}/console`, { + params: wrapperParams(params) + }) +} + +export function getVcConsole(id, params) { + return request.get(`${vmUrl}/${id}/console`, { params }) +} + +export function getVmTickets(params) { + return request.get(`${vmUrl}/${params.id}/tickets`, { + params: wrapperParams(params) + }) +} + +export function getVmStatistics(params) { + return request.get(`${vmUrl}/statistics`, { + params: wrapperParams(params) + }) +} + +export function vmTools(params) { + return request.patch(`${vmUrl}/${params.id}/vmtools`, { params }) +} + +// 虚拟机安全组 +export function vmJoinGroup(params) { + return request.post(`${vmUrl}/${params.id}/sgroups`, wrapperParams(params)) +} + +export function vmJoinGroupAction(action, params) { + return request.post(`${vmUrl}/${params.id}/sgroups`, { + action: action, + ...wrapperParams(params) + }) +} + +export function vmDeleteGroup(params) { + return request.delete(`${vmUrl}/${params.id}/sgroups`, { + params: wrapperParams(params) + }) +} + +export function getVmGroup(id, params) { + return request.get(`${vmUrl}/${id}/sgroups`, { params }) +} + +export function putGrouosVm(params) { + return request.put(`${vmUrl}/groups`, wrapperParams(params)) +} + +export function getVmTemplates(params) { + return request.get(`${vmUrl}/${params.vdcId}/templates`, { + params: wrapperParams(params) + }) +} + +export function createVmTemplate(params) { + return request.post(`${vmUrl}/${params.id}/templates`, wrapperParams(params)) +} + +export function vmAttachNetowrk(params) { + return request.post(`${vmUrl}/${params.id}/networks`, wrapperParams(params)) +} + +export function vmBaychMountNetowrk(params) { + return request.post(`${vmUrl}/networks`, wrapperParams(params)) +} + +export function getVmNetowrk(params) { + return request.get(`${vmUrl}/${params.id}/networks`, { + params: wrapperParams(params) + }) +} + +export function vmDeleteNetwork(params) { + return request.delete(`${vmUrl}/${params.id}/networks`, { + params: wrapperParams(params) + }) +} + +export function vmDeleteNetworkQos(params) { + return request.post(`${vmUrl}/${params.id}/networks/qos`, wrapperParams(params)) +} + +export function patchVmResize(action, params) { + return request.patch(`${vmUrl}/${params.id}/flavors`, { + action: action, + ...wrapperParams(params) + }) +} + +export function getVmFlavor(params) { + return request.get(`${vmUrl}/flavors`, { params }) +} + +export function getVmPorts(id, params) { + return request.get(`${vmUrl}/${id}/ports`, { params }) +} + +export function patchVmTime(action, params) { + return request.patch(`${vmUrl}/${params.id ? params.id : params.resId}/empiretime`, { action: action, ...wrapperParams(params) }) +} + +// 虚拟机密钥 +export function getVmKey(params) { + return request.get(`${vmUrl}/${params.id}/keypairs`, { params }) +} + +export function patchVmKey(action, params) { + return request.patch(`${vmUrl}/${params.id}/keypairs`, { + action: action, + ...wrapperParams(params) + }) +} + +export function vmSnapshots(params) { + return request.post('/ims/v1/vms/snapshots', wrapperParams(params)) +} + +export function patchVmVolumes(action, params) { + return request.patch(`${vmUrl}/${params.serverId}/volumes`, { + action: action, + ...wrapperParams(params) + }) +} + +export function getVmVolumes(action, params) { + return request.get(`${vmUrl}/${params.id}/volumes`, { + action: action, + params: wrapperParams(params) + }) +} + +// 主机 +const hostUrl = '/ims/v1/hosts' +export function getHost(params) { + return request.get(hostUrl, { + params + }) +} + +export function createHost(params, type) { + return request.post(hostUrl, { ...wrapperParams(params), type: type || 'Host' }) +} + +export function createVcHost(params) { + return request.post(hostUrl, { ...params }) +} + +export function createPhost(params) { + return request.post(hostUrl, params) +} + +export function modifyHost(params, type) { + return request.put(`${hostUrl}/${params.id}`, { ...wrapperParams(params), type: type || 'Host' }) +} + +export function removeHost(id, type) { + return request.delete(`${hostUrl}/${id}`, { params: { type: type || 'Host' } }) +} + +export function removeHosts(params, type) { + return request.delete(`${hostUrl}`, { params: wrapperParams(params), type: type || 'Host' }) +} + +export function detailHost(id, type) { + return request.get(`${hostUrl}/${id}`, { type: type || 'Host' }) +} + +export function conditionHost(params) { + return request.get(`${hostUrl}/condition`, { params }) +} + +export function patchHost(action, params, type) { + return request.patch(`${hostUrl}/${params.id}`, { + action: action, + type: type || 'Host', + ...wrapperParams(params) + }) +} + +export function patchHosts(action, params) { + return request.patch(hostUrl, { action: action, ...wrapperParams(params) }) +} + +export function createAlarmHost(params) { + return request.post(`${hostUrl}/${params.id ? params.id : params.target}/thresholds`, { ...wrapperParams(params), type: 'Vmware' }) +} + +export function getAlarmHost(params) { + return request.get(`${hostUrl}/${params.id}/thresholds`, { + params: wrapperParams(params), + type: 'Vmware' + }) +} + +export function putCluterHost(params) { + return request.put(`/ims/v1/clusters/${params.id ? params.id : params.hostId}/hosts`, wrapperParams(params)) +} + +export function putHostGroups(params) { + return request.put(`/ims/v1/hosts/${params.id}/groups`, { ...wrapperParams(params), type: 'Host' }) +} + +export function getHostMetrics(params) { + const { type } = params + const obj = { + params: params, + type: type + } + return request.get(`${hostUrl}/${params.id}/metrics`, { params }) +} +export function getClusterMetrics(params) { + return request.get(`/ims/v1/clusters/${params.id}/metrics`, { + params: wrapperParams(params) + }) +} + +export function putHostTags(params) { + return request.put('/ims/v1/hosts/tags', { ...wrapperParams(params), type: 'Vmware' }) +} + +// 快照 +const snapshotUrl = '/ims/v1/snapshots' +export function getSnapshot(params) { + return request.get(snapshotUrl, { + params + }) +} + +export function createSnapshot(params) { + return request.post(snapshotUrl, wrapperParams(params)) +} + +export function modifySnapshot(params) { + return request.put(`${snapshotUrl}/${params.id}`, params) +} + +export function removeSnapshot(id) { + return request.delete(`${snapshotUrl}/${id}`) +} + +export function detailSnapshot(id) { + return request.get(`${snapshotUrl}/${id}`) +} + +export function removeSnapshots(params) { + return request.delete(`${snapshotUrl}`, { data: params }) +} + +export function conditionSnapshot(params) { + return request.get(`${snapshotUrl}/condition`, { params }) +} + +export function patchSnapshot(action, params) { + return request.patch(`${snapshotUrl}/${params.id ? params.id : params.resId}`, { action: action, ...wrapperParams(params) }) +} + +export function getSnapshotTree(params) { + return request.get(`${snapshotUrl}/tree`, { + params + }) +} + +// 机房 +const roomUrl = '/ims/v1/rooms' +export function getRoom(params) { + return request.get(roomUrl, { + params + }) +} + +export function createRoom(params) { + return request.post(roomUrl, wrapperParams(params)) +} + +export function modifyRoom(params) { + return request.put(`${roomUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeRoom(id) { + return request.delete(`${roomUrl}/${id}`) +} + +export function detailRoom(id) { + return request.get(`${roomUrl}/${id}`) +} + +// 机柜 +const rackUrl = '/ims/v1/racks' +export function getRack(params) { + return request.get(rackUrl, { + params + }) +} + +export function createRack(params) { + return request.post(rackUrl, wrapperParams(params)) +} + +export function modifyRack(params) { + return request.put(`${rackUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeRack(id) { + return request.delete(`${rackUrl}/${id}`) +} + +export function detailRack(id) { + return request.get(`${rackUrl}/${id}`) +} + +export function patchRack() { + return request.patch(`${rackUrl}`, { + action: 'sync' + }) +} + +// 路由 +const routerUrl = '/ims/v1/routers' +export function getRouter(params) { + return request.get(routerUrl, { + params + }) +} + +export function createRouter(params) { + return request.post(routerUrl, wrapperParams(params)) +} + +export function modifyRouter(params) { + return request.put(`${routerUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeRouter(id) { + return request.delete(`${routerUrl}/${id}`) +} + +export function detailRouter(id) { + return request.get(`${routerUrl}/${id}`) +} + +export function removeRouters(params) { + return request.delete(`${routerUrl}`, { data: params }) +} + +export function conditionRouter(params) { + return request.get(`${routerUrl}/${params.id}`, { params }) +} + +export function patchRouter(action, params) { + return request.patch(`${routerUrl}/${params.id}`, { + action: action, + ...wrapperParams(params) + }) +} + +export function attachRouterSubents(params) { + return request.post(`${routerUrl}/${params.id}/subnets`, wrapperParams(params)) +} + +export function detachRouterSubents(params) { + return request.delete(`${routerUrl}/${params.id}/subnets`, { + params + }) +} + +// 端口 +const portUrl = '/ims/v1/ports' +export function getPort(params) { + return request.get(portUrl, { + params + }) +} + +export function createPort(params) { + return request.post(portUrl, wrapperParams(params)) +} + +export function modifyPort(params) { + return request.put(`${portUrl}/${params.id}`, wrapperParams(params)) +} + +export function removePort(id) { + return request.delete(`${portUrl}/${id}`) +} + +export function detailPort(id) { + return request.get(`${portUrl}/${id}`) +} + +export function removePorts(params) { + return request.delete(`${portUrl}`, { data: params }) +} + +export function conditionPort(params) { + return request.get(`${portUrl}/${params.id}`, { params }) +} + +export function patchPort(action, params) { + return request.patch(`${portUrl}/${params.id}`, { + action: action, + ...wrapperParams(params) + }) +} + +export function attachPortSubents(params) { + return request.post(`${portUrl}/${params.id}/subnets`, wrapperParams(params)) +} + +export function getPortVm(id, params) { + return request.get(`${vmUrl}/${id}/ports`, { params }) +} + +export function getPortNetworks(id, params) { + return request.get(`${networkUrl}/${id}/ports`, { params: wrapperParams(params) }) +} + +// 操作记录 +const resUrl = '/ims/v1/events' +export function getRes(params) { + return request.get(resUrl, { + params + }) +} + +// 告警 +export function getAlarmLevel(params) { + return request.get('/cos/v1/quotas/thresholds', { + params: wrapperParams(params) + }) +} + +export function setAlarmLevel(params) { + return request.post('/cos/v1/quotas/thresholds', wrapperParams(params)) +} + +// osd +const osdUrl = '/dms/v1/storages/osds' +export function getOsd(params) { + return request.get(osdUrl, { + params + }) +} + +export function createOsd(params) { + return request.post(osdUrl, wrapperParams(params)) +} + +export function modifyOsd(params) { + return request.put(`${osdUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeOsd(id) { + return request.delete(`${osdUrl}/${id}`) +} + +export function detailOsd(id) { + return request.get(`${osdUrl}/${id}`) +} + +export function patchOsd(action, params) { + return request.patch(`${osdUrl}/${params.id}`, { + action: action, + ...wrapperParams(params) + }) +} + +export function actionOsd(action, params) { + return request.post(osdUrl, { action: action, ...wrapperParams(params) }) +} + +// pool +const poolUrl = '/ims/v1/ceph/pools' +export function getPool(params) { + return request.get(poolUrl, { + params + }) +} + +export function createPool(params) { + return request.post(poolUrl, wrapperParams(params)) +} + +export function modifyPool(params) { + return request.put(`${poolUrl}/${params.id}`, wrapperParams(params)) +} + +export function removePool(id) { + return request.delete(`${poolUrl}/${id}`) +} + +export function detailPool(id) { + return request.get(`${poolUrl}/${id}`) +} + +// 资源池 +const resPoolUrl = '/ims/v1/vrps' +export function getRespool(params) { + return request.get(`${resPoolUrl}/condition`, { + params + }) +} + +export function createRespool(params) { + return request.post(resPoolUrl, wrapperParams(params)) +} + +export function modifyRespool(params) { + return request.put(`${resPoolUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeRespool(id) { + return request.delete(`${resPoolUrl}/${id}`) +} + +export function detailRespool(id) { + return request.get(`${resPoolUrl}/${id}`) +} + +// VAPP +const vappsUrl = '/ims/v1/vapps' +export function getVapps(params) { + return request.get(`${vappsUrl}/condition`, { + params + }) +} + +export function createVapps(params) { + return request.post(vappsUrl, wrapperParams(params)) +} + +export function modifyVapps(params) { + return request.put(`${vappsUrl}/${params.id}`, params) +} + +export function removeVapps(id) { + return request.delete(`${vappsUrl}/${id}`) +} + +export function detailVapps(id) { + return request.get(`${vappsUrl}/${id}`) +} + +export function patchVapp(action, params) { + return request.patch(`${vappsUrl}/${params.id}`, { + action: action, + ...wrapperParams(params) + }) +} + +// 资源 +const resourceUrl = '/ims/v1/resources' +export function getResource(params) { + return request.get(resourceUrl, { + params + }) +} + +export function createResource(params) { + return request.post(resourceUrl, wrapperParams(params)) +} + +export function modifyResource(params) { + return request.put(`${resourceUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeResource(id) { + return request.delete(`${resourceUrl}/${id}`) +} + +export function detailResource(id) { + return request.get(`${resourceUrl}/${id}`) +} + +export function getResourceAccounts(params) { + return request.get('/ims/v1/resources/accounts', { + params: wrapperParams(params) + }) +} + +export function getResourceAccount(params) { + return request.get('/ims/v1/resources/account', { + params + }) +} + +export function putTimetask(params, url) { + return request.put(`/${url || 'ims'}/v1/timedtask/${params.id}`, wrapperParams(params)) +} + +export function taskServer(params) { + return request.post('/ims/v1/server/task', wrapperParams(params)) +} + +export function getTaskServer(params) { + return request.get('/ims/v1/server/task', { params: wrapperParams(params) }) +} + +// csc订购 + +const cloudservicesUrl = '/cos/v1/cloudservices' + +export function createCloudServices(params) { + return request.post(cloudservicesUrl, wrapperParams(params)) +} +export function shoppingCloudServices(params) { + return request.post(`${cloudservicesUrl}/shopping`, wrapperParams(params)) +} + +export function shoppingOkCloudServices(params) { + return request.put(`${cloudservicesUrl}/shopping`, wrapperParams(params)) +} + +export function getVmApply(params) { + return request.get('/cos/v1/cloud/resource/apply', { params: wrapperParams(params) }) +} +export function getOperationsApply(params) { + return request.get('/cos/v1/operations/reports/apply', { params: wrapperParams(params) }) +} +// 虚拟机存储策略 +export function getVmPbm(params) { + return request.get('/ims/v1/pbm/profile', { params }) +} + +export function patchDisk(params) { + return request.patch('/ims/v1/vms/disks', { + ...wrapperParams(params) + }) +} + +// 克隆vc +export function vcCloneVm(params) { + return request.post('/cos/v1/resource/clone', wrapperParams(params)) +} + +export function deleteRecycleVm(params) { + return request.delete('/cos/v1/resource') +} + +// 清除同步日志记录 +export function deletePlatformLog(params) { + return request.delete('/cos/v1/vendors/records/time', { params: wrapperParams(params) }) +} + +const FarmssUrl = '/ims/v1/horizon/farms' +export function getFarms(params) { + return request.get(FarmssUrl, { + params + }) +} +export function createFarms(params) { + return request.post(FarmssUrl, wrapperParams(params)) +} + +export function modifyFarms(params) { + return request.put(`${FarmssUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeFarms(id) { + return request.delete(`${FarmssUrl}/${id}`) +} + +export function detailFarms(id) { + return request.get(`${FarmssUrl}/${id}`) +} + +const SessionssUrl = '/ims/v1/horizon/sessions' +export function getSessions(params) { + return request.get(SessionssUrl, { + params + }) +} +export function createSessions(params) { + return request.post(SessionssUrl, wrapperParams(params)) +} + +export function modifySessions(params) { + return request.put(`${SessionssUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeSessions(id) { + return request.delete(`${SessionssUrl}/${id}`) +} + +export function detailSessions(id) { + return request.get(`${SessionssUrl}/${id}`) +} + +const userOrgroupsUrl = '/ims/v1/horizon/users-or-groups' +export function getuserOrgroup(params) { + return request.get(userOrgroupsUrl, { + params + }) +} +export function createuserOrgroup(params) { + return request.post(userOrgroupsUrl, wrapperParams(params)) +} + +export function modifyuserOrgroup(params) { + return request.put(`${userOrgroupsUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeuserOrgroup(id) { + return request.delete(`${userOrgroupsUrl}/${id}`) +} + +export function detailuserOrgroup(id) { + return request.get(`${userOrgroupsUrl}/${id}`) +} + +const VcenterssUrl = '/ims/v1/horizon/vcenters' +export function getVcenters(params) { + return request.get(VcenterssUrl, { + params + }) +} +export function createVcenters(params) { + return request.post(VcenterssUrl, wrapperParams(params)) +} + +export function modifyVcenters(params) { + return request.put(`${VcenterssUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeVcenters(id) { + return request.delete(`${VcenterssUrl}/${id}`) +} + +export function detailVcenters(id) { + return request.get(`${VcenterssUrl}/${id}`) +} + +const desktoPoolsUrl = '/ims/v1/horizon/desktop-pools' +export function getDesktoPool(params) { + return request.get(desktoPoolsUrl, { + params + }) +} +export function createDesktoPool(params) { + return request.post(desktoPoolsUrl, wrapperParams(params)) +} + +export function modifyDesktoPool(params) { + return request.put(`${desktoPoolsUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeDesktoPool(id) { + return request.delete(`${desktoPoolsUrl}/${id}`) +} + +export function detailDesktoPool(id) { + return request.get(`${desktoPoolsUrl}/${id}`) +} + +// 内容库 +const libraryUrl = '/ims/v1/content/libraries' +export function getLibrary(params) { + return request.get(libraryUrl, { + params + }) +} + +export function detailLibrary(id) { + return request.get(`${libraryUrl}/${id}`) +} + +export function createLibraryServer(params) { + return request.post(`${libraryUrl}/deploy`, wrapperParams(params)) +} + +export function detailLibraryList(params) { + return request.get(`${libraryUrl}/items`, { + params + }) +} +export function modifyLibraryAccounts(params) { + return request.get(`${libraryUrl}/item/${params.id}/accounts`, { + params + }) +} +// 金山回归接口 +// logAnalytics +const logAnalyticsUrl = '/ims/v1/log/analytics/list' +export function getLogAnalytics(params) { + return request.get(logAnalyticsUrl, { + params + }) +} + +export function createLogAnalytics(params) { + return request.post('/ims/v1/log/analytics', wrapperParams(params)) +} + +export function removeLogAnalytics(params) { + return request.delete('/ims/v1/log/analytics/remove', { params: wrapperParams(params) }) +} + +export function detailLogAnalytics(params) { + return request.post('/ims/v1/log/analytics/detail', wrapperParams(params)) +} + +export function removeResourceUsers(url, params) { + return request.delete(`${url}/${params.id}/users`, { + params: wrapperParams(params) + }) +} + +export function resourceBatchUsers(url, params) { + return request.post(url, wrapperParams(params)) +} + +export function removeVpcUsers(id) { + return request.delete(`/ims/v1/vpcs/${id}/tenants`) +} + +export function resourceUsers(url, params) { + return request.post(`${url}/${params.id}/users`, wrapperParams(params)) +} + +export function vmBindLog(id, params) { + return request.post(`/ims/v1/vms/${id}/extension`, wrapperParams(params)) +} + +// 华泰回归接口 +export function createTags(params) { + return request.post('/ims/v1/tag', wrapperParams(params)) +} + +export function copyImage(params) { + return request.post(`${imageUrl}/copy`, wrapperParams(params)) +} + +export function createVmConfigSeq(params) { + return request.post(`${vmUrl}/configSeq`, wrapperParams(params)) +} + +export function detailSoftCategory(val) { + return request.get('/sms/v1/dictionaries/children', { + params: { + value: val + } + }) +} + +export function getIpvs(params) { + return request.get('/ims/v1/vpcs/cidr', { + params + }) +} +export function getTags(params) { + return request.get('ims/v1/tag', { + params + }) +} +// 弹性IP +const elasticipsUrl = '/ims/v1/elasticips' +export function getElasticips(params) { + return request.get(elasticipsUrl, { + params + }) +} +export function getElasticipsFrees(params) { + return request.get(`${elasticipsUrl}/frees`, { + params + }) +} + +export function getListEip(params) { + return request.get(`${elasticipsUrl}/frees`, { + params: wrapperParams(params) + }) +} +export function unreleaseElasticips(params) { + return request.post(`${elasticipsUrl}`, params) +} +export function releaseElasticips(id) { + return request.delete(`${elasticipsUrl}/${id}`) +} +export function checkElasticips(id) { + return request.get(`${elasticipsUrl}/${id}`) +} +export function associateElasticipsIp(id, params) { + return request.patch(`${elasticipsUrl}/${id}`, params) +} +export function disAssociateElasticipsIp(params, id) { + return request.patch(`${elasticipsUrl}/${id}`, params) +} +export function editElasticipsIp(id, params) { + return request.put(`${elasticipsUrl}/${id}`, wrapperParams(params)) +} +export function editBandwidth(id, params) { + return request.put(`${elasticipsUrl}/bandwidth/${id}`, params) +} + +export function getVmBusiness(id) { + return request.get(`${vmUrl}/getBusinessById/${id}`) +} + +export function mapSubnet(id, params) { + return request.patch(`${subnetUrl}/${id}/mapping`, params) +} + +export function operationIpvs(id, params) { + return request.patch(`ims/v1/vpcs/${id}/operation`, params) +} + +export function operationSubIpvs(id, params) { + return request.patch(`ims/v1/subnets/${id}/operation`, params) +} + +export function setSubnet(id, params) { + return request.patch(`${subnetUrl}/${id}`, params) +} + +export function terminationProtected(params, id) { + return request.patch(`ims/v1/vms/${id}`, params) +} + +// 互联网网关 +const natGatway = '/ims/v1/natgateway' +export function getNatGatway(params) { + return request.get(natGatway, { + params + }) +} +export function getNatGatwayDetail(id) { + return request.get(`${natGatway}/${id}`) +} +export function addNatGatway(params) { + return request.post(natGatway, params) +} +export function editNatGatway(id, params) { + return request.put(`${natGatway}/${id}`, wrapperParams(params)) +} +export function deleteNatGatway(id, params) { + if (params != null) { + return request.delete(`${natGatway}/${id}`, { + params + }) + } else { + return request.delete(`${natGatway}/${id}`) + } +} +export function detachNatGatway(params, id) { + return request.patch(`${natGatway}/${id}`, params) +} +export function attachNatGatway(params, id) { + return request.patch(`${natGatway}/${id}`, params) +} + +// 负载均衡器 +export function getBalance(params) { + return request.get('/ims/v1/lbs', { + params + }) +} +export function detailBalance(id) { + return request.get(`/ims/v1/lbs/${id}`) +} +export function deleteBalancer(id) { + return request.delete(`/ims/v1/lbs/${id}`) +} +export function editHuaweiBalance(id, params) { + return request.put(`/ims/v1/lbs/${id}`, wrapperParams(params)) +} +export function editBalance(params) { + return request.put(`/ims/v1/lbs/${params.balancer.id}`, wrapperParams(params)) +} +export function balanceSetting(id, params) { + return request.patch(`/ims/v1/lbs/${id}`, params) +} +export function getListeners(params) { + return request.get('/ims/v1/lb/listeners', { + params + }) +} +export function getTargetgroups(params) { + return request.get('/ims/v1/lb/targetgroups', { + params + }) +} +export function detailTargetgroups(id) { + return request.get(`/ims/v1/lb/targetgroups/${id}`) +} +export function getTargets(params) { + return request.get('/ims/v1/lb/targets', { + params + }) +} +export function getRoutetables(params) { + return request.get('/ims/v1/routetables', { + params + }) +} +export function createRoutetables(params) { + return request.post('/ims/v1/routetables', wrapperParams(params)) +} +export function delRoutetables(id) { + return request.delete(`/ims/v1/routetables/${id}`) +} +export function editRoutetables(params) { + return request.put(`/ims/v1/routetables/${params.id}`, wrapperParams(params)) +} +export function settingRoutetables(params) { + return request.patch('/ims/v1/routetables/associations', wrapperParams(params)) +} +export function getRoutetablesDetail(id) { + return request.get(`/ims/v1/routetables/${id}`) +} +export function getRoutetablesDetailRoute(params) { + return request.get('/ims/v1/routetables/routes', { + params + }) +} +export function createRoutetablesDetailRoute(params) { + return request.post('/ims/v1/routetables/routes', params) +} +export function delRoutetablesDetailRoute(id) { + return request.delete(`/ims/v1/routetables/routes/${id}`) +} +export function getRoutetablesSubnetAssociations(params) { + return request.get('/ims/v1/routetables/associations', { + params + }) +} +export function getRoutetablesSubnet(params) { + return request.get('/ims/v1/subnets', { + params + }) +} +export function getRoutetablesCreateSubnet(params) { + return request.post('/ims/v1/routetables/associations', wrapperParams(params)) +} +export function getRoutetablesEditSubnet(params) { + return request.patch('/ims/v1/routetables/associations', wrapperParams(params)) +} +export function getRoutetablesDelSubnet(id, params) { + if (params) { + return request.delete(`/ims/v1/routetables/associations/${id}`, wrapperParams(params)) + } else { + return request.delete(`/ims/v1/routetables/associations/${id}`) + } +} +export function deleteTargetObject(id, params) { + return request.patch(`ims/v1/lb/targetgroups/${id}/operation`, params) +} +// 目标群组 获取table的数据 +export function getInstanceDataList(params) { + return request.get('ims/v1/vms', { + params: params + }) +} +// 目标群组instance时,注册目标 +export function registerTargets(id, params) { + return request.patch(`ims/v1/lb/targetgroups/${id}/operation`, params) +} +// 删除目标群组 +export function deleteTargetGroup(id) { + return request.delete(`ims/v1/lb/targetgroups/${id}`) +} +// 新增目标群组 +export function createTargetGroup(params) { + return request.post('ims/v1/lb/targetgroups', wrapperParams(params)) +} +// 删除负载均衡 +export function deleteBalance(id) { + return request.delete(`ims/v1/lbs/${id}`) +} +// 删除负载均衡侦听器 +export function deleteBalanceWatch(id) { + return request.delete(`ims/v1/lb/listeners/${id}`) +} +export function getAliEigs(params) { + return request.get('ims/v1/natgateway/availableGateway', { + params: params + }) +} +export function getAliEnis(params) { + return request.get('ims/v1/azure/nics/availableNics', { + params: params + }) +} +export function getAliElbs(params) { + return request.get('ims/v1/lbs/availableLbs', { + params: params + }) +} +export function getSants(params) { + return request.get('/ims/v1/natgateway/snat/rule', { + params: params + }) +} +export function getSantSubnets(params) { + return request.get('/ims/v1/natgateway/snat/rule/subnet', { + params + }) +} +export function getSantEcss(params) { + return request.get('/ims/v1/natgateway/snat/rule/ecs', { + params + }) +} +export function getSantIps(params) { + return request.get('/ims/v1/elasticips/natgateway', { + params + }) +} +export function createSant(params) { + return request.post('/ims/v1/natgateway/snat/rule', wrapperParams(params)) +} +export function editSant(id, params) { + return request.put(`/ims/v1/natgateway/snat/rule/${id}`, wrapperParams(params)) +} +export function delSant(id) { + return request.delete(`/ims/v1/natgateway/snat/rule/${id}`) +} +export function getEditSnatRule(id) { + return request.get(`/ims/v1/natgateway/snat/rule/${id}`) +} +export function getDants(params) { + return request.get('/ims/v1/natgateway/dnat/rule', { + params: params + }) +} +export function getDantEips(params) { + return request.get('/ims/v1/natgateway/dnat/rule/eip', { + params: params + }) +} +export function getDantPrivateIps(params) { + return request.get('/ims/v1/natgateway/listAvailablePrivateIp', { + params: params + }) +} +export function createDant(params) { + return request.post('/ims/v1/natgateway/dnat/rule', wrapperParams(params)) +} +export function getEditDnatRule(id) { + return request.get(`/ims/v1/natgateway/dnat/rule/${id}`) +} +export function editDant(id, params) { + return request.put(`/ims/v1/natgateway/dnat/rule/${id}`, wrapperParams(params)) +} +export function delDant(id) { + return request.delete(`/ims/v1/natgateway/dnat/rule/${id}`) +} +export function getDantPrivateIp(id) { + return request.get(`/ims/v1/natgateway/dnat/rule/${id}/port`) +} + +export function createLbMembers(id, params) { + return request.patch(`ims/v1/lb/pools/${id}/members`, wrapperParams(params)) +} + +export function createLbPools(params) { + return request.post('ims/v1/lb/pools', wrapperParams(params)) +} + +export function deleteLbMembers(id, params) { + return request.patch(`ims/v1/lb/pools/${id}/members`, wrapperParams(params)) +} + +export function deleteLbPools(id) { + return request.delete(`ims/v1/lb/pools/${id}`) +} + +export function editLbPools(id, params) { + return request.put(`ims/v1/lb/pools/${id}`, wrapperParams(params)) +} + +export function getLbMembers(params) { + return request.get('ims/v1/lb/members', { + params + }) +} + +export function createListeners(params) { + return request.post('/ims/v1/lb/listeners', wrapperParams(params)) +} + +export function getNatList(params) { + return request.get('/ims/v1/natgateway', { + params + }) +} + +export function delNat(id) { + return request.delete(`/ims/v1/natgateway/${id}`) +} + +export function getEditData(id) { + return request.get(`/ims/v1/natgateway/${id}`) +} + +export function getSubnets(params) { + return request.get('/ims/v1/subnets', { + params + }) +} + +export function getElasticipsIp(params) { + return request.get('/ims/v1/elasticips', { + params + }) +} + +export function createNatgateway(params) { + return request.post('/ims/v1/natgateway', { + params + }) +} + +export function editNatgateway(params) { + return request.put(`/ims/v1/natgateway/${params.id}`, wrapperParams(params)) +} + +export function editNat(id, params) { + return request.put(`/ims/v1/natgateway/${id}`, wrapperParams(params)) +} + +export function getListAvailableForRoute(params) { + return request.get('ims/v1/natgateway/listAvailableForRoute', { + params + }) +} + +export function getLbListenById(id) { + return request.get(`${lbLintenUrl}/${id}`) +} + +export function getLbPools(params) { + return request.get('ims/v1/lb/pools', { + params + }) +} + +export function getListenControls(params) { + return request.get('ims/v1/controls', { + params + }) +} + +export function getRegionZone(id, params) { + return request.get(`/ims/v1/regions/${id}/zones`, { + params: wrapperParams(params) + }) +} + +export function removeHuaWeiVm(id, params) { + return request.delete(`${vmUrl}/${id}`, { + data: params + }) +} + +export function createData(params) { + return request.post('/ims/v1/lbs', params) +} + +export function syncVdc(id, params) { + const obj = new FormData() + obj.append('type', params.type) + return request.post(`${vdcUrl}/${id}/sync`, obj) +} +export function syncCluster(id) { + return request.post(`/ims/v1/clusters/${id}/sync`) +} +export function syncHosts(id) { + return request.post(`/ims/v1/hosts/${id}/sync`) +} + +export function getopo(params) { + return request.get('/ims/v1/instances/topology', { + params + }) +} diff --git a/src/services/platform/pool.js b/src/services/platform/pool.js new file mode 100644 index 0000000..43f2e73 --- /dev/null +++ b/src/services/platform/pool.js @@ -0,0 +1,16 @@ +import request from 'utils/request' +import { wrapperParams } from 'utils/index' + +const baseUrl = '/ims/v1/pool/groups' + +export function getPool(params, options = {}) { + return request.get(baseUrl, { + params, + ...options + }) +} +export function getPoolConditions(params) { + return request.get(`${baseUrl}/condition`, { + params + }) +} diff --git a/src/services/services/catelog.ts b/src/services/services/catelog.ts new file mode 100644 index 0000000..cb6aee8 --- /dev/null +++ b/src/services/services/catelog.ts @@ -0,0 +1,207 @@ +import request from 'utils/request' +import { wrapperParams } from 'utils/index' + +// 图标 +const iconUrl = '/cos/v1/icons' +export function getIcon(params: any) { + return request.get(iconUrl, { params }) +} + +export function removeIcon(id: number) { + return request.delete(`${iconUrl}/${id}`) +} + +export function createIcon(params: any) { + return request.post(iconUrl, { params }) +} + +// 服务菜单 +const menuUrl = '/cos/v1/services/menus' +export function getMenu(params: any) { + return request.get(menuUrl, { params }) +} + +export function createMenu(params: any) { + return request.post(menuUrl, wrapperParams(params)) +} + +export function modifyMenu(params: any) { + return request.put(`${menuUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeMenu(id: number) { + return request.delete(`${menuUrl}/${id}`) +} + +export function subnetDetail(id: number) { + return request.get(`${menuUrl}/${id}`) +} + +// 服务列表 +const itemUrl = '/cos/v1/services/items' +export function getItems(params: any) { + return request.get('/cos/v1/cloud/services', { params }) +} + +export function createItems(params: any) { + return request.post(itemUrl, wrapperParams(params)) +} + +export function modifyItems(params: any) { + return request.put(`${itemUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeItems(id: number) { + return request.delete(`${itemUrl}/${id}`) +} + +export function itemsDetail(id: number) { + return request.get(`${itemUrl}/${id}`) +} + +// 服务发布 +export function itemsRelease(id: number, params: any) { + return request.patch(`${itemUrl}/${id}`, params) +} + +// 服务下架 +export function itemsUnRelease(id: number, params: any) { + return request.patch(`${itemUrl}/${id}`, params) +} + +// 绑定流程 +export function itemsBindFlow(params: any) { + return request.patch(`${itemUrl}/${params.id}`, { params }) +} + +// 服务的绑定流程 +export function itemsBindFlows(params: any) { + return request.get(`${itemUrl}/${params.id}/flow`, { params }) +} + +// 是否绑定了流程 +export function isBindFlow(params: any) { + return request.get(`${itemUrl}/isBinding`, { params }) +} + +// 绑定流程的服务列表 +export function bindFlowItems(params: any) { + return request.get(`${itemUrl}/flows/services`, { params }) +} + +// 使用模板的服务列表 +export function templateItems(params: any) { + return request.get(`${itemUrl}/templates/servicess`, { params }) +} + +// 租户下的服务列表 +export function getTenantServices(id: number, params: any) { + return request.get(`/cos/v1/services/tenants/${id}/services/able`, { + params: params + }) +} + +// 租户下授权服务列表 +export function getTenantQuotaServices(id: number, params: any) { + return request.get(`/cos/v1/services/tenants/${id}/able`, { + params: params + }) +} + +// 租户下授权服务列表搜索 +export function searchServicesList(params: any) { + return request.get('/cos/v1/cloud/services', { + params: params + }) +} + +export function conditionServicesList(params: any) { + return request.get('/cos/v1/cloud/services/condition', { + params: params + }) +} + +// 租户下的服务列表 +export function getTenantServicesCode(params: any) { + return request.get('/cos/v1/services/tenants', { + params + }) +} + +// 服务使用记录 +const itemsLogUrl = '/cos/v1/services/items/records' +export function itemsLog(params: any) { + return request.get(itemsLogUrl, { params }) +} + +export function itemsLogChart(params: any) { + return request.get(`${itemsLogUrl}/stats`, { params }) +} + +export function itemsVmLogChart(params: any) { + return request.get(`${itemsLogUrl}/stats`, params) +} + +export function removeItemsLog(id: number) { + return request.delete(`${itemsLogUrl}/${id}`) +} + +// 流程绑定配置列表 +const flowBindConfigUrl = '/cos/v1/flows/configs' +export function flowBindConfig(params: any) { + return request.get(flowBindConfigUrl, { params }) +} + +export function modifyFlowBindConfig(params: any) { + return request.put(`${flowBindConfigUrl}/${params.id}`, wrapperParams(params)) +} + +export function flowBindConfigDetail(params: any) { + return request.get(`${flowBindConfigUrl}/${params.id}`, { params }) +} + +export function flowQueryBindConfigDetail(params: any) { + return request.get(`${flowBindConfigUrl}/query`, { params }) +} + +const flowBindControlConfigUrl = '/cos/v1/flows/tenants' +export function flowBindControlConfig(params: any) { + return request.get(flowBindControlConfigUrl, { params }) +} + +export function modifyFlowBindControlConfig(params: any) { + return request.post(`${flowBindControlConfigUrl}`, wrapperParams(params)) +} + +export function deleteFlow(params: any) { + return request.delete(`${flowBindControlConfigUrl}/${params.id}`) +} + +// 被授权服务的租户 +export function authTenant(id: number) { + return request.get(`${itemUrl}/${id}/tenants`) +} + +// 批量服务授权租户 +export function authAllTenant(params: any) { + return request.patch(`${itemUrl}/tenants/grant`, wrapperParams(params)) +} + +// 多服务授权租户 +export function authsAllTenant(id: number, params: any) { + return request.post(`/cos/v1/services/tenants/${id}/grant`, wrapperParams(params)) +} + +// 服务授权租户 +export function itemsAuthTenant(id: number, params: any) { + return request.patch(`${itemUrl}/${id}/grant`, wrapperParams(params)) +} + +// 通过租户删除租户服务关系 +export function removeTenantItems(id: number) { + return request.delete(`${itemUrl}/tenants/${id}`) +} + +export function patchServices(action: string, params: any) { + return request.patch(`/cos/v1/services/items//${params.id}`, { action: action, ...wrapperParams(params) }) +} diff --git a/src/services/services/flow.js b/src/services/services/flow.js new file mode 100644 index 0000000..77bbbff --- /dev/null +++ b/src/services/services/flow.js @@ -0,0 +1,92 @@ +/** + * Created by HaijunZhang on 2019/1/26. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +export function getFlow(params) { + return request.get('/cos/v1/definitions', { + params: params + }) +} +export function getFlowDetail(id) { + return request.get(`/cos/v1/definitions/${id}`) +} +export function createFlow(params) { + return request.post('/cos/v1/definitions', wrapperParams(params)) +} +export function modifyFlow(params) { + return request.put(`/cos/v1/definitions/${params.id}`, wrapperParams(params)) +} +export function removeFlow(id) { + return request.delete(`/cos/v1/definitions/${id}`) +} +// 终止/激活流程定义 +export function operateFlow(id, params) { + return request.patch(`/cos/v1/definitions/${id}`, params) +} +export function getFlowInstance(params) { + return request.get('/cos/v1/instances', { + params: params + }) +} +export function getFlowInstanceDetail(id) { + return request.get(`/cos/v1/instances/${id}`) +} +// 撤销审批 +export function terminateInstance(id) { + return request.patch( + `/cos/v1/instances/${id}`, + { action: 'terminate' }, + { + options: { + noParam: true + } + } + ) +} +// 审核节点 +export function auditNode(id, params) { + return request.patch(`/cos/v1/nodes/${id}`, params, { + headers: { 'Content-Type': 'multipart/form-data', BsmAjaxHeader: true, options: { noSeri: true } } + }) +} +// 获取审批节点 +export function getFlowNodes(id, type) { + return request.get(`/cos/v1/instances/${id}/nodes`, { + params: { + type: type + } + }) +} +// 审批流程操作历史 +export function flowHistory(id) { + return request.get(`/cos/v1/definitions/${id}/history`) +} +// 图标上传 +export function getIcon(params) { + return request({ + method: 'post', + url: '/resource/icon/list', + data: params + }) +} +export function getVar(type) { + return request.get('/cos/v1/variables', { + params: { type } + }) +} +export function createIcon(params) { + return request.post('/ams/v1/icons', wrapperParams(params)) +} +export function modifyIcon(params) { + return request.put(`/ams/v1/icons/${params.id}`, wrapperParams(params)) +} +export function removeIcon(id) { + return request.delete(`/ams/v1/icons/${id}`) +} +export function allJugde(params) { + return request.patch('/cos/v1/nodes', params, { + headers: { 'Content-Type': 'multipart/form-data', BsmAjaxHeader: true, options: { noSeri: true } } + }) +} diff --git a/src/services/services/monitor.js b/src/services/services/monitor.js new file mode 100644 index 0000000..d1147ba --- /dev/null +++ b/src/services/services/monitor.js @@ -0,0 +1,47 @@ +import request from 'utils/request' + +const baseUrl = '/cms//v1/monitor/resourcetype' +export function getMonitorSettings(params) { + return request.get(baseUrl, { params }) +} + +export function createMonitorSetting(params) { + return request.post(baseUrl, params) +} + +export function updateMonitorSetting(params, id) { + return request.put(`${baseUrl}/${id}`, params) +} + +export function deleteMonitorSetting(id) { + return request.delete(`${baseUrl}/${id}`) +} + +export function deleteAllMonitorSetting(ids) { + return request.delete(`${baseUrl}/remove`, { data: ids }) +} + +const metricUrl = '/cms/v1/metrics' +export function getMonitorList(params) { + return request.get(`${metricUrl}/monitor/list`, { params }) +} + +export function createMetric(params) { + return request.post(metricUrl, params) +} + +export function updateMetric(params, id) { + return request.put(`${metricUrl}/${id}`, params) +} + +export function deleteMetric(id) { + return request.delete(`${metricUrl}/${id}`) +} + +export function getMonitorIds(params) { + return request.get('/cms/v1/metrics/state/ids', { params }) +} + +export function bindMonitorList(params) { + return request.post('/cms/v1/monitor/resourcetype/binding/metrics', params) +} diff --git a/src/services/services/order.js b/src/services/services/order.js new file mode 100644 index 0000000..1a53c17 --- /dev/null +++ b/src/services/services/order.js @@ -0,0 +1,50 @@ +/** + * Created by HaijunZhang on 2019/1/26. + */ +import request from 'utils/request' +import { wrapperParams, downloadFile } from 'utils' + +const orderUrl = '/cos/v1/orders' + +export function getOrder(params) { + return request.get(orderUrl, { + params + }) +} +export function createOrder(params) { + return request.post(orderUrl, wrapperParams(params)) +} +export function modifyOrder(params) { + return request.put(`${orderUrl}/${params.id}`, wrapperParams(params)) +} +export function removeOrder(id) { + return request.delete(`${orderUrl}/${id}`) +} +export function operateOrder(action, params) { + return request.patch(`${orderUrl}`, { + action, + ...params + }) +} +export function getOrderItems(params) { + return request.get(`${orderUrl}/items`, { + params + }) +} + +export function conditionOrder(params) { + return request.get(`${orderUrl}/condition`, { params }) +} + +export function getOrderStats(params) { + return request.get(`${orderUrl}/stats`, { + params: wrapperParams(params) + }) +} +export function getOrderCount() { + return request.get('/cos/v1/orders/count') +} + +export function exportOrders(params) { + downloadFile('/cos/v1/orders/export', params) +} diff --git a/src/services/services/plugins.ts b/src/services/services/plugins.ts new file mode 100644 index 0000000..a0afa40 --- /dev/null +++ b/src/services/services/plugins.ts @@ -0,0 +1,63 @@ +import request from 'utils/request' + +interface PluginParams { + name?: String + code?: String + vendor_type?: String + status?: Boolean + remark?: String + id?: Number +} + +interface BasicParams { + page: Number + rows: Number + [key: string]: any +} + +interface BindParams { + permissionIdList: Array + pluginsCode: String + tenant: Boolean +} + +const baseUrl = '/sms/v1/plugins' +export function getPlugins(params: BasicParams) { + return request.get(baseUrl, { params }) +} + +export function getPluginsConfig(params: BasicParams) { + return request.get(`${baseUrl}/license`, { params }) +} + +export function getPluginById(id: Number | String) { + return request.get(`${baseUrl}/${id}`) +} + +export function addPlugin(params: PluginParams) { + return request.post(baseUrl, params) +} + +export function editPlugin(params: PluginParams) { + return request.put(`${baseUrl}/${params.id}`, params) +} + +export function deletePlugin(id: Number | String) { + return request.delete(`${baseUrl}/${id}`) +} + +export function deleteAllPlugin(ids: any) { + return request.delete(`${baseUrl}/remove`, { data: ids }) +} + +export function updateStatus(id: Number, status: Boolean) { + return request.patch(`${baseUrl}/status`, { id, status }) +} + +export function associateMenu(params: BindParams) { + return request.put('/sms/v1/permissions/binding/plugins', params) +} + +export function getVendors(params: { value: String }) { + return request.get('/sms/v1/dictionaries/children/tree', { params }) +} diff --git a/src/services/services/product.js b/src/services/services/product.js new file mode 100644 index 0000000..ef3a1bd --- /dev/null +++ b/src/services/services/product.js @@ -0,0 +1,53 @@ +import request from 'utils/request' +import { wrapperParams } from 'utils/index' + +const billUrl = '/cos/v1/bills' + +export function getCategories(params) { + return request.get('/cos/v1/services/categories/condition', { + params + }) +} +export function getCategoriesByCode(serviceCode) { + return request.get(`/cos/v1/cloud/services/${serviceCode}/categories`) +} +export function getSkus(params) { + return request.get('/cos/v1/services/skus/condition', { + params + }) +} +export function getSkusDetail(id) { + return request.get(`/cos/v1/services/skus/${id}`) +} + +export function getPrices(params) { + return request.get('/cos/v1/skus/prices', { + params + }) +} +export function getSlaDetail(id) { + return request.get(`cos/v1/services/slas/${id}`) +} +export function applyResource(params) { + return request.post('/cos/v1/resource/application', wrapperParams(params)) +} +export function deleteApplyResource(params) { + return request.delete('/cos/v1/resources/applies', { params: wrapperParams(params) }) +} +export function modifyResource(params) { + return request.post('/cos/v1/resource/alteration', wrapperParams(params)) +} +// 获取VPC列表 +export function getVpc(params) { + return request.get('/ims/v1/nsx/routers', { + params + }) +} +// 服务退订 +export function unsubscribeService(params) { + return request.post('/cos/v1/resource/cancelation', wrapperParams(params)) +} +// 服务延期 +export function delayService(params) { + return request.post('/cos/v1/resource/extension', wrapperParams(params)) +} diff --git a/src/services/services/service.ts b/src/services/services/service.ts new file mode 100644 index 0000000..b72fdfc --- /dev/null +++ b/src/services/services/service.ts @@ -0,0 +1,50 @@ +import { IService } from '@/models/service' +import request from 'utils/request' +import { wrapperParams } from 'utils/index' + +export function getVendorTypes(params: any) { + return request.get('/ims/v1/vendors/condition', { + params: { condition: JSON.stringify(params) } + }) +} +const baseUrl = '/cos/v1/cloud/services' +export function getService(params: Base.IListParams) { + return request.get>(baseUrl, { + params + }) +} +export function getServiceDetail(id: number) { + return request.get(`${baseUrl}/${id}`) +} +export function createService(params: IService) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifyService(params: IService) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function removeService(id: number) { + return request.delete(`${baseUrl}/${id}`) +} +export function batchOperateServices(ids: number[], action: 'PUBLISHED' | 'UNPUBLISHED') { + return request.patch(baseUrl, { action, ids }) +} +export function operateService(action: string, id: number) { + return request.patch(`${baseUrl}/${id}`, { + action + }) +} +// 产品树形列表 +export function getServiceTree() { + return request.get('/cos/v1/services/categories/tree') +} +// 流程绑定 +export function bindFlowToService(id: number, params: any[]) { + return request.post(`${baseUrl}/${id}/flows`, params) +} + +export function batchbindFlowToService(serviceIds: number[], serviceFlows: any[]) { + return request.post(`${baseUrl}/flows`, { + serviceIds, + serviceFlows + }) +} diff --git a/src/services/services/spec.ts b/src/services/services/spec.ts new file mode 100644 index 0000000..5efce29 --- /dev/null +++ b/src/services/services/spec.ts @@ -0,0 +1,86 @@ +/** + * Created by HaijunZhang on 2019/5/10. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils/index' +// sku操作 +export function getSku(params: Base.IListParams) { + return request.get('/cos/v1/services/skus', { + params: params + }) +} + +export function getServiceDetail() {} +export function getSkuDetail(id: number) { + return request.get(`/cos/v1/services/skus/${id}`) +} +export function removeSku(id: number) { + return request.delete(`/cos/v1/services/skus/${id}`) +} +export function createSku(params: any) { + return request.post('/cos/v1/services/skus', wrapperParams(params)) +} +export function modifySku(params: any) { + return request.put(`/cos/v1/services/skus/${params.id}`, wrapperParams(params)) +} +// 批量上下架 +export function batchOperateSku(ids: number[], action: string) { + return request.patch('/cos/v1/services/skus/batch', { action, ids }) +} +// 租户授权服务 +export function tenantGrantService(params: any) { + return request.post('/cos/v1/services/tenants/grantservices', wrapperParams(params)) +} +// 服务授权租户 +export function serviceGrantTenant(serviceId: number, tenantIds: any) { + return request.post(`/cos/v1/services/${serviceId}/grant`, tenantIds) +} +export function removeServiceTenant(id: number) { + return request.delete(`/cos/v1/services/tenants/${id}`) +} +// 服务授权租户 多对对 +export function serviceGrantBatch(params: any) { + return request.post('/cos/v1/services/tenants/grantbatch', wrapperParams(params)) +} +// 获取服务下的租户 +export function getTenantByservice(id: number) { + return request.get(`/cos/v1/services/${id}/tenants`) +} +// 使用记录 +export function serviceRecord(params: any) { + return request.get('/cos/v1/services/usages', { + params: params + }) +} +// 实用统计 +export function serviceStatistics(params: any) { + return request.get('/cos/v1/services/usages/statistics', { + params: wrapperParams(params) + }) +} +export function getCategory(params: any) { + return request.get('/cos/v1/services/categories', { + params: params + }) +} +export function createCategory(params: any) { + return request.post('/cos/v1/services/categories', wrapperParams(params)) +} +export function modifyCategory(params: any) { + return request.put(`/cos/v1/services/categories/${params.id}`, wrapperParams(params)) +} +export function removeCategory(id: number) { + return request.delete(`/cos/v1/services/categories/${id}`) +} +export function getCatalog(params: any) { + return request.get('/cos/v1/services/catalogs', { + params + }) +} +export function getCatalogDetail(id: number) { + return request.get(`/cos/v1/services/catalogs/${id}`) +} + +export function getServiceByCode(code: any) { + return request.get(`/cos/v1/services/catalogs/${code}/services`) +} diff --git a/src/services/system/account.js b/src/services/system/account.js new file mode 100644 index 0000000..a9debd4 --- /dev/null +++ b/src/services/system/account.js @@ -0,0 +1,45 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +const baseUrl = '/sms/v1/accounts' +export function getAccount(params) { + return request.get(`${baseUrl}/page`, { + params + }) +} +export function getUserDetail(id) { + return request.get(`${baseUrl}/${id}`) +} +export function createUser(params) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifyUser(params) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function removeUser(id) { + return request.delete(`${baseUrl}/${id}`) +} +/* + * action取值为: + * lock active reset accredit change + */ +export function operateUser(id, action, params) { + return request.patch(`${baseUrl}/${id}`, { + action, + ...wrapperParams(params) + }) +} +export function checkUser(id) { + return request.get(`${baseUrl}/${id}/status`) +} +export function getRolesByUser(id) { + return request.get(`${baseUrl}/${id}/roles`) +} +export function getTrack(params) { + return request.get(`${baseUrl}/track`, { + params: params + }) +} diff --git a/src/services/system/auth.js b/src/services/system/auth.js new file mode 100644 index 0000000..cc4e496 --- /dev/null +++ b/src/services/system/auth.js @@ -0,0 +1,28 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +export function getAuth(params) { + return request.get('/sms/v1/permissions/tree', { + params: wrapperParams(params) + }) +} +export function getAuthByCategory(params) { + return request.get('/sms/v1/permissions', { + params: wrapperParams(params) + }) +} +export function getAuthDetail(id) { + return request.get(`/sms/v1/permissions/${id}`) +} +export function createAuth(params) { + return request.post('/sms/v1/permissions', wrapperParams(params)) +} +export function modifyAuth(params) { + return request.put(`/sms/v1/permissions/${params.id}`, wrapperParams(params)) +} +export function removeAuth(id) { + return request.delete(`/sms/v1/permissions/${id}`) +} diff --git a/src/services/system/bizs.js b/src/services/system/bizs.js new file mode 100644 index 0000000..8b74dca --- /dev/null +++ b/src/services/system/bizs.js @@ -0,0 +1,60 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams, downloadFile } from 'utils/index' + +const baseUrl = '/sms/v1/bizs' +export function getBizs(params) { + console.log(params) + return request.get(baseUrl, { + params + }) +} +export function getBizsDetail(id) { + return request.get(`${baseUrl}/${id}`) +} +export function createBizs(params) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifyBizs(params) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function removeBizs(id) { + return request.delete(`${baseUrl}/${id}`) +} + +export function removeBizList(params) { + console.log(params) + return request.delete(`${baseUrl}`, { data: params }) +} + +export function getPoolByBiz(id, params) { + return request.get(`${baseUrl}/${id}/pools`, { + params: wrapperParams(params) + }) +} +export function configBizPool(id, params) { + return request.post(`${baseUrl}/${id}/pools`, wrapperParams(params)) +} + +// 获取单个业务的关联项目 +export function getProjectByBizList(id) { + return request.get(`${baseUrl}/${id}/projects`) +} + +export function pacthRelatioonBiz(id, params) { + return request.patch(`${baseUrl}/${id}`, wrapperParams(params)) +} + +export function operateBiz(id, action, params) { + return request.patch(`${baseUrl}/${id}`, { + action, + ...wrapperParams(params) + }) +} + +// 导出业务列表 +export function exportBizsList(params) { + downloadFile('/sms/v1/bizs/export', params) +} diff --git a/src/services/system/csc_login.js b/src/services/system/csc_login.js new file mode 100644 index 0000000..f59e4a7 --- /dev/null +++ b/src/services/system/csc_login.js @@ -0,0 +1,18 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils/index' + +export function login(params) { + return request.post('/sms/v1/users/login', params) +} +export function loginByTenant(params) { + return request.post('/sms/v1/tenants/login', params) +} +export function logout() { + return request.post('/sms/v1/users/logout') +} +export function logoutByTenant(params) { + return request.post('/sms/v1/tenants/logout', params) +} diff --git a/src/services/system/depart.ts b/src/services/system/depart.ts new file mode 100644 index 0000000..db8dc17 --- /dev/null +++ b/src/services/system/depart.ts @@ -0,0 +1,31 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils/index' +import { IDepart } from '@/models/depart' + +const baseUrl = '/sms/v1/departments' + +export function getDepart(params: any) { + return request.get(baseUrl, { + params + }) +} +export function getDepartLazy(params: any) { + return request.get(`${baseUrl}/listByParentId`, { + params + }) +} +export function getDepartDetail(id: number) { + return request.get(`${baseUrl}/${id}`) +} +export function createDepart(params: IDepart) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifyDepart(params: IDepart) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function removeDepart(id: number) { + return request.delete(`${baseUrl}/${id}`) +} diff --git a/src/services/system/dictionary.js b/src/services/system/dictionary.js new file mode 100644 index 0000000..7cf03ff --- /dev/null +++ b/src/services/system/dictionary.js @@ -0,0 +1,33 @@ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +const baseUrl = '/sms/v1/dictionaries' +export function getDict(params) { + return request.get(baseUrl, { params }) +} + +export function createDict(params) { + return request.post(baseUrl, wrapperParams(params)) +} + +export function modifyDict(params) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeDict(id) { + return request.delete(`${baseUrl}/${id}`) +} + +export function detailDict(id) { + return request.get(`${baseUrl}/${id}`) +} + +export function getDictChildren(params) { + return request.get(`${baseUrl}/children`, { params }) +} + +export function getDictChildrenTree(params) { + return request.get(`${baseUrl}/children/tree`, { + params: wrapperParams(params) + }) +} diff --git a/src/services/system/document.js b/src/services/system/document.js new file mode 100644 index 0000000..6591fc4 --- /dev/null +++ b/src/services/system/document.js @@ -0,0 +1,47 @@ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +const baseUrl = '/cos/v1/documents' +export function getDocument(params) { + return request.get(baseUrl, { + params + }) +} +export function getDocumentDetail(id) { + return request.get(`${baseUrl}/${id}`) +} +export function createDocument(params) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifyDocument(params) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function removeDocument(id) { + return request.delete(`${baseUrl}/${id}`) +} + +const categoryUrl = '/cos/v1/documents/category' +export function getCategory(params) { + return request.get(categoryUrl, { + params + }) +} +export function getCategoryDetail(id) { + return request.get(`${categoryUrl}/${id}`) +} +export function createCategory(params) { + return request.post(categoryUrl, wrapperParams(params)) +} +export function modifyCategory(params) { + return request.put(`${categoryUrl}/${params.id}`, wrapperParams(params)) +} +export function removeCategory(id) { + return request.delete(`${categoryUrl}/${id}`) +} + +export function uploadImage(params) { + console.log(params) + return request.post('/cos/v1/documents/pictures', params, { + headers: { 'Content-Type': 'multipart/form-data', BsmAjaxHeader: true, options: { noSeri: true } } + }) +} diff --git a/src/services/system/favorite.js b/src/services/system/favorite.js new file mode 100644 index 0000000..71b8380 --- /dev/null +++ b/src/services/system/favorite.js @@ -0,0 +1,25 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils/index' + +// 判断用户租户路径 +function getUrl(accountCategory) { + return accountCategory === 'Tenant' ? 'tenants' : 'users' +} +export function getService(accountCategory) { + return request.get(`/sms/v1/${getUrl(accountCategory)}/services`) +} +export function getFavorite(accountCategory) { + return request.get(`/sms/v1/${getUrl(accountCategory)}/favorites`) +} +export function createFavorite(id, accountCategory) { + return request.post(`/sms/v1/${getUrl(accountCategory)}/favorites/${id}`) +} +export function removeFavorite(id, accountCategory) { + return request.delete(`/sms/v1/${getUrl(accountCategory)}/favorites/${id}`) +} +export function orderFavorite(params, accountCategory) { + return request.post(`/sms/v1/${getUrl(accountCategory)}/favorites/order`, params) +} diff --git a/src/services/system/index.js b/src/services/system/index.js new file mode 100644 index 0000000..ab83e46 --- /dev/null +++ b/src/services/system/index.js @@ -0,0 +1,78 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +export function login(params) { + return request.post('/sms/v1/users/login', params) +} +export function getTokenInfo(params) { + return request.post('/sms/v1/sso/token/info', params) +} +export function getToken() { + return request.post('/sms/v1/sso/check') +} +export function getUserInfo() { + return request.get('/sms/v1/login/detail') +} +export function logout() { + return request.post('/sms/v1/users/logout') +} +export function getConfig(params) { + return request.get('/sms/v1/logo', { + params: wrapperParams(params) + }) +} +export function getDict(data) { + return request.get('/dict/children', { + params: wrapperParams(data) + }) +} +export function getSysconf() { + return request.get('/sms/v1/configs') +} +export function getSysconfCode(params) { + return request.get('/sms/v1/configs', { params }) +} +export function modifySysconf(data) { + return request.put('/sms/v1/configs', wrapperParams(data)) +} + +export function syncLdapApi() { + return request.post('/sms/v1/configs/syncLdap') +} +// 获取首页概览信息 +export function getPortal(params) { + return request.get('/ims/v1/portal/platform/stats', { params: wrapperParams(params) }) +} +export function getServiceQuota(tenantId, data) { + return request.get(`/cos/v1/tenants/${tenantId}/quotas`, { + params: wrapperParams(data) + }) +} +export function replaceToken(params) { + return request.get('/sms/v1/token', { params }) +} +// 获取用户权限 +export function getUserPermissions() { + return request.get('/sms/v1/users/permissions') +} +// 获取系统配置信息 +export function getSystemConfigs(params) { + return request.get('/sms/v1/configs', { params }) +} +// 获取树状系统配置信息 +export function getSystemTreeConfigs(params) { + return request.get('/sms/v1/configs/tree', { params }) +} +// 更新系统配置信息 +export function updateSystemConfigs(params) { + return request.put('/sms/v1/system-configs', params, { + headers: { 'Content-Type': 'multipart/form-data', BsmAjaxHeader: true, options: { noSeri: true } } + }) +} +// 测试连接 +export function testLinkApi(category) { + return request.get('/sms/v1/configs/test', { params: { category } }) +} diff --git a/src/services/system/ip_access.js b/src/services/system/ip_access.js new file mode 100644 index 0000000..e2787c0 --- /dev/null +++ b/src/services/system/ip_access.js @@ -0,0 +1,32 @@ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +const baseUrl = '/sms/v1/admissions' + +export function getIpAccess(params) { + return request.get(baseUrl, { + params + }) +} +export function getIpAccessDetail(id) { + return request.get(`${baseUrl}/${id}`) +} +export function createIpAccess(params) { + return request.post(baseUrl, wrapperParams(params)) +} +export function removeIpAccess(id) { + return request.delete(`${baseUrl}/${id}`) +} +export function batchRemoveIpAccess(params) { + return request.delete(`${baseUrl}`, { + data: params + }) +} +export function getStrategies(params) { + return request.get('/sms/v1/access/strategies', { + params + }) +} +export function modifyStrategies(params) { + return request.put(`/sms/v1/access/strategies/${params.id}`, wrapperParams(params)) +} diff --git a/src/services/system/license.js b/src/services/system/license.js new file mode 100644 index 0000000..cd0c95c --- /dev/null +++ b/src/services/system/license.js @@ -0,0 +1,26 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils' +const baseUrl = '/sms/v1/config' + +export function getStatus(params) { + return request.get(`${baseUrl}/status`, { + params + }) +} +export function getSid() { + return request.get('/sms/v1/status/sids') +} +export function getServer(params) { + return request.get(`${baseUrl}/servers`, { + params + }) +} +export function getLicense() { + return request.get(`${baseUrl}/license`) +} +export function installCaptcha(params) { + return request.post('/sms/v1/config/captcha/install', params) +} diff --git a/src/services/system/log.ts b/src/services/system/log.ts new file mode 100644 index 0000000..58257a8 --- /dev/null +++ b/src/services/system/log.ts @@ -0,0 +1,30 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams, downloadFile } from '@/common/utils' + +const baseUrl = '/sms/v1/logs' + +export function getLog(params: Base.IListParams) { + return request.get(baseUrl, { + params + }) +} +export function getLogStats() { + return request.get(`${baseUrl}/stats`) +} +export function getLogView() { + return request.get('/cos/v1/logview') +} +export function exportLog() { + downloadFile('/cos/v1/logfile') +} +export function accessLog(params: any) { + downloadFile('/sms/v1/logs/archive', params) +} +export function getRecords(params: any) { + return request.get('/sms/v1/archives', { + params + }) +} diff --git a/src/services/system/manager.ts b/src/services/system/manager.ts new file mode 100644 index 0000000..45cf0b0 --- /dev/null +++ b/src/services/system/manager.ts @@ -0,0 +1,55 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams, downloadFile } from 'utils/index' +import { IUser } from '@/models/user' + +const baseUrl = '/sms/v1/users' +export function getUser(params: Base.IListParams) { + return request.get>(baseUrl, { + params + }) +} +export function getUserDetail(id: number) { + return request.get(`${baseUrl}/${id}`) +} +export function createUser(params: IUser) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifyUser(params: IUser) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function removeUser(id: number) { + return request.delete(`${baseUrl}/${id}`) +} + +export function accreditManager(id: number, roleIds: number[]) { + return request.patch(`${baseUrl}/${id}/accredit`, roleIds) +} +export function resetManager(id: number, password: string) { + return request.patch(`${baseUrl}/${id}/reset`, { password }) +} +export function operateManager(id: number, action: string) { + return request.patch(`${baseUrl}/${id}`, { action }) +} +export function batchOperateManager(ids: number[], action: string) { + return request.patch(`${baseUrl}`, { action, ids }) +} +export function changePassword(id: number, params: { oldPassword: string; password: string }) { + return request.patch(`${baseUrl}/${id}/pwd`, params) +} +export function checkUser(id: number) { + return request.get(`${baseUrl}/${id}/status`) +} +export function getRolesByUser(id: number) { + return request.get(`${baseUrl}/${id}/roles`) +} +export function getTrack(params: Base.IListParams) { + return request.get(`${baseUrl}/track`, { + params + }) +} +export function exportUser(params: Base.IListParams) { + downloadFile(`${baseUrl}/export`, params) +} diff --git a/src/services/system/message.js b/src/services/system/message.js new file mode 100644 index 0000000..bc47a97 --- /dev/null +++ b/src/services/system/message.js @@ -0,0 +1,23 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' + +const baseUrl = '/sms/v1/messages' +export function getMessage(params) { + return request.get(baseUrl, { + params + }) +} +export function getMessageStats() { + return request.get(`${baseUrl}/stats`) +} +export function getMessageDetail(id) { + return request.get(`${baseUrl}/${id}`) +} +export function removeMessage(id) { + return request.delete(`${baseUrl}/${id}`) +} +export function readAllMessage(params) { + return request.patch(`${baseUrl}`, params) +} diff --git a/src/services/system/migration.js b/src/services/system/migration.js new file mode 100644 index 0000000..554fb06 --- /dev/null +++ b/src/services/system/migration.js @@ -0,0 +1,27 @@ +import request from 'utils/request' + +const baseUrl = '/sms/v1/upgrade' + +export function getMeta() { + return request.get(`${baseUrl}/datasource`) +} + +export function migrationData(params) { + return request.post(`${baseUrl}/datasource`, params) +} + +export function migrationById(recordId, taskId) { + return request.post(`${baseUrl}/records/${recordId}/tasks/${taskId}`) +} + +export function getMigrationData(params) { + return request.get(`${baseUrl}/records`, { params }) +} + +export function getDetail(id) { + return request.get(`${baseUrl}/records/${id}`) +} + +export function getDetailList(id, params) { + return request.get(`${baseUrl}/records/${id}/tasks`, { params }) +} diff --git a/src/services/system/notice.js b/src/services/system/notice.js new file mode 100644 index 0000000..ec3a066 --- /dev/null +++ b/src/services/system/notice.js @@ -0,0 +1,25 @@ +/** + * Created by HaijunZhang on 2019/1/26. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils/index' + +const baseUrl = '/sms/v1/system/notice' + +export function getNotice(params) { + return request.get(baseUrl, { + params + }) +} +export function createNotice(params) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifyNotice(params) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function removeNotice(id) { + return request.delete(`${baseUrl}/${id}`) +} +export function sendNotice(id) { + return request.post(`${baseUrl}/send/${id}`) +} diff --git a/src/services/system/order.js b/src/services/system/order.js new file mode 100644 index 0000000..a0cfd3a --- /dev/null +++ b/src/services/system/order.js @@ -0,0 +1,47 @@ +/** + * Created by HaijunZhang on 2019/1/26. + */ +import request from 'utils/request' +import { wrapperParams } from 'util' + +const orderUrl = '/cos/v1/orders' + +export function getOrder(params) { + return request.get(orderUrl, { + params + }) +} +export function createOrder(params) { + return request.post(orderUrl, wrapperParams(params)) +} +export function modifyOrder(params) { + return request.put(`${orderUrl}/${params.id}`, wrapperParams(params)) +} +export function removeOrder(id) { + return request.delete(`${orderUrl}/${id}`) +} + +export function getOrderDetail(id) { + return request.get(`${orderUrl}/${id}`) +} + +export function getOrderItems(params) { + return request.get(`${orderUrl}/items`, { + params + }) +} + +export function conditionOrder(params) { + return request.get(orderUrl, { + params + }) +} +export function operateOrder(action, params) { + return request.patch(`${orderUrl}`, { + action, + ...params + }) +} +export function getOrderCount() { + return request.get('/cos/v1/orders/count') +} diff --git a/src/services/system/platformTask.js b/src/services/system/platformTask.js new file mode 100644 index 0000000..e5c6ddd --- /dev/null +++ b/src/services/system/platformTask.js @@ -0,0 +1,10 @@ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +const baseUrl = '/sms/v1/system/tasks' + +export function getTasks(params) { + return request.get(baseUrl, { + params + }) +} diff --git a/src/services/system/portal.js b/src/services/system/portal.js new file mode 100644 index 0000000..c99173e --- /dev/null +++ b/src/services/system/portal.js @@ -0,0 +1,86 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +const baseUrl = '/cos/v1/portal' +export function getPanel(params) { + return request.get(`${baseUrl}/panels`, { + params: wrapperParams(params) + }) +} +export function savePanel(params) { + return request.patch(`${baseUrl}/panels`, wrapperParams(params)) +} +export function resetPanel() { + return request.put(`${baseUrl}/panels/reset`) +} +export function getPool(params) { + return request.get(`${baseUrl}/elementpools`, { + params: wrapperParams(params) + }) +} +export function getConfig(params) { + return request.get(`${baseUrl}/elements`, { + params: wrapperParams(params) + }) +} +export function getPlatformStats(params) { + return request.get('/ims/v1/portal/platform/stats', { + params: wrapperParams(params) + }) +} +export function getVendorStats(params) { + return request.get('/ims/v1/portal/vendor/stats', { + params: wrapperParams(params) + }) +} +export function getTaskStats(params) { + return request.get('/cop/v1/task/stats', { + params: wrapperParams(params) + }) +} +export function getVmServiceTrend(params) { + return request.get('/cos/v1/portal/platform/statisticsOfComputer', { + params: wrapperParams(params) + }) +} +export function getCharge(params) { + return request.get('/cmc/portal/charge/stats', { + params: wrapperParams(params) + }) +} + +export function getAlarmCount(params) { + return request.get('/cms/v1/alarms/chart', { + params + }) +} +export function conditionBill(params) { + return request.get('/cos/v1/bills/condition', { + params: { + condition: JSON.stringify(params) + } + }) +} +export function getOrderCount() { + return request.get('/cos/v1/soa/orders/count') +} + +export function getOrderDashboard(params) { + return request.get('/cos/v1/soa/orders/dashboard', { + params + }) +} +export function getResourceCountByDc(dcId) { + return request.get('/ims/v1/dcs/resource/count', { + params: { dcId } + }) +} +export function getSystemCount() { + return request.get('/sms/v1/system/count') +} +export function getTodoCount() { + return request.get('/cos/v1/soa/todo/count') +} diff --git a/src/services/system/project.js b/src/services/system/project.js new file mode 100644 index 0000000..63279fa --- /dev/null +++ b/src/services/system/project.js @@ -0,0 +1,65 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams, downloadFile } from 'utils' + +const baseUrl = '/sms/v1/projects' +export function getProject(params) { + return request.get(baseUrl, { + params + }) +} +export function getProjectDetailInfo(id) { + return request.get(`${baseUrl}/${id}`) +} +export function getProjectDetail(id) { + return request.get(`${baseUrl}/${id}/quotas`) +} +export function createProject(params) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifyProject(params) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function switchProject(id, params) { + return request.patch(`${baseUrl}/${id}`, wrapperParams(params)) +} +export function removeProject(id) { + return request.delete(`${baseUrl}/${id}`) +} + +export function removeProjectList(params) { + return request.delete(`${baseUrl}`, { data: params }) +} + +export function exportProject(params) { + downloadFile(`${baseUrl}/export`, { params }) +} +export function getProjectByTenant(id, params) { + return request.get(`/sms/v1/tenants/${id}/projects`, { + ...wrapperParams(params) + }) +} + +export function getProjectMemberList(id) { + return request.get(`${baseUrl}/${id}/users`) +} +// 获取项目下用户列表,不是全量的 +export function getProjectMemberInList(id) { + return request.get(`${baseUrl}/${id}/usersIn`) +} + +export function settingProjectUser(id, params) { + return request.post(`${baseUrl}/${id}/users`, wrapperParams(params)) +} + +export function exportProjects(params) { + downloadFile('/sms/v1/projects/export', params) +} + +export function conditionProject(params) { + return request.get(`${baseUrl}/condition`, { + params + }) +} diff --git a/src/services/system/role.js b/src/services/system/role.js new file mode 100644 index 0000000..5d5d3b1 --- /dev/null +++ b/src/services/system/role.js @@ -0,0 +1,47 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +const roleUrl = '/sms/v1/roles' + +export function getRole(params) { + return request.get(roleUrl, { + params + }) +} +export function getRoleDetail(id) { + return request.get(`${roleUrl}/${id}`) +} +export function createRole(params) { + return request.post(roleUrl, wrapperParams(params)) +} +export function modifyRole(params) { + return request.put(`${roleUrl}/${params.id}`, wrapperParams(params)) +} +export function removeRole(id) { + return request.delete(`${roleUrl}/${id}`) +} +export function getRoleAuth(id, params) { + return request.get(`${roleUrl}/${id}/permissions`, { + params: params + }) +} +export function accreditRole(id, params) { + return request.patch(`${roleUrl}/${id}`, params) +} +export function getModules() { + return request.get('/sms/v1/permissions/modules') +} +export function getModulesByName(name) { + return request.get(`/sms/v1/permissions/modules/${name}`) +} +export function getApiById(roleId, params) { + return request.get(`/sms/v1/roles/${roleId}/apis`, { + params: params + }) +} +export function updateApi(roleId, params) { + return request.patch(`/sms/v1/roles/${roleId}/apis`, params) +} diff --git a/src/services/system/service_system.js b/src/services/system/service_system.js new file mode 100644 index 0000000..0f4a7a3 --- /dev/null +++ b/src/services/system/service_system.js @@ -0,0 +1,32 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +const baseUrl = '/cms/v1/system' +export function getServers(params) { + return request.get(`${baseUrl}/servers`) +} +export function getServersDetail(params) { + return request.get(`${baseUrl}/charts`, { + params: wrapperParams(params) + }) +} +export function getServices(params) { + return request.get(`${baseUrl}/services`) +} +export function getPlugs(params) { + return request.get(`${baseUrl}/plugins`) +} +export function getComponents(params) { + return request.get(`${baseUrl}/components`) +} +export function getGateway() { + return request.get(`${baseUrl}/gateway`) +} +export function getStatus(params) { + return request.get(`${baseUrl}/status`, { + params + }) +} diff --git a/src/services/system/shop_cart.js b/src/services/system/shop_cart.js new file mode 100644 index 0000000..4c3054f --- /dev/null +++ b/src/services/system/shop_cart.js @@ -0,0 +1,22 @@ +import request from 'utils/request' +import { wrapperParams } from 'utils' +const shoppingUrl = '/cos/v1/shopping/cart' + +export function getShoppingCart(params) { + return request.get(shoppingUrl, { + params + }) +} +export function removeShoppingCart(id) { + return request.delete(`${shoppingUrl}/${id}`) +} +export function getShoppingCartDetail(id) { + return request.get(`${shoppingUrl}/${id}`) +} +export function emptyShoppingCart(params) { + return request.put(shoppingUrl, wrapperParams(params)) +} + +export function putShoppingCart(id, params) { + return request.put(`${shoppingUrl}/${id}`, wrapperParams(params)) +} diff --git a/src/services/system/system.js b/src/services/system/system.js new file mode 100644 index 0000000..4926690 --- /dev/null +++ b/src/services/system/system.js @@ -0,0 +1,24 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +const baseUrl = '/sms/v1/systems' +export function getSystems(params) { + return request.get(baseUrl, { + params + }) +} +export function getSystemsDetail(id) { + return request.get(`${baseUrl}/${id}`) +} +export function createSystems(params) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifySystems(params) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function removeSystems(id) { + return request.delete(`${baseUrl}/${id}`) +} diff --git a/src/services/system/tag.js b/src/services/system/tag.js new file mode 100644 index 0000000..ba1e9c1 --- /dev/null +++ b/src/services/system/tag.js @@ -0,0 +1,29 @@ +import request from 'utils/request' + +const baseUrl = 'sms/v1/tags' + +export function getTags(params) { + return request.get(baseUrl, { + params + }) +} + +export function getTagsDetail(id) { + return request.get(`${baseUrl}/${id}`) +} + +export function createTag(params) { + return request.post(baseUrl, { + ...params + }) +} + +export function modifyTag(params) { + return request.put(`${baseUrl}/${params.id}`, { + ...params + }) +} + +export function removeTag(id) { + return request.delete(`${baseUrl}/${id}`) +} diff --git a/src/services/system/tenant.ts b/src/services/system/tenant.ts new file mode 100644 index 0000000..a770b7c --- /dev/null +++ b/src/services/system/tenant.ts @@ -0,0 +1,176 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams, downloadFile } from 'utils/index' + +const baseUrl = '/sms/v1/tenants' +export function getTenant(params: any) { + return request.get(baseUrl, { + params + }) +} +export function checkedTenant(account: string) { + return request.get(`${baseUrl}/${account}/exist`) +} + +export function getTenantTree(params: any) { + return request.get(`${baseUrl}`, { + params: { + condition: JSON.stringify({ condition: 'children' }), + ...params + } + }) +} +export function getTenantDetail(id: number) { + return request.get(`${baseUrl}/${id}/quotas`) +} +// 租户信息 +export function getTenantInfo(id: number) { + return request.get(`${baseUrl}/${id}`) +} +// 租户下用户列表 +export function getTenantUserTrans(id: number, params: any) { + return request.get(`${baseUrl}/${id}/users`, { params }) +} +// 租户下服务列表 +export function getTenantService(id: number) { + return request.get(`/cos/v1/services/tenants/${id}/services`) +} +export function createTenant(params: any) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifyTenant(params: any) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function removeTenant(id: number) { + return request.delete(`${baseUrl}/${id}`) +} +export function getTenantStats(params: any) { + return request.get(`${baseUrl}/stats`, { + params: wrapperParams(params) + }) +} +export function getTenantPool(id: number) { + return request.get(`${baseUrl}/${id}/pools`) +} +export function assignTenantPools(params: any) { + return request.post(`${baseUrl}/${params.id}/pools`, JSON.stringify(params.poolIds)) +} + +export function resetTenantPsw(id: number, params: any) { + return request.patch(`${baseUrl}/${id}/reset`, { + ...wrapperParams(params) + }) +} + +/* + * action取值为: + * lock active reset accredit change + */ +export function operateTenant(id: number, action: string, params: any) { + return request.patch(`${baseUrl}/${id}`, { + action, + ...wrapperParams(params) + }) +} +// 租户配额 +export function getQuotaTenant(id: number, params: any) { + return request.get(`/cos/v1/tenants/${id}/quotas`, { params }) +} + +export function getCscQuotaTenant(params: any) { + return request.get(`/cos/v1/tenants/${params.tenantId ? params.tenantId : params.target}/quotas`, { params: wrapperParams(params) }) +} + +export function createQuotaTenant(id: number, params: any) { + return request.post(`/cos/v1/tenants/${id}/quotas`, wrapperParams(params)) +} + +export function getTenantBus(id: number, params: any) { + return request.get(`/sms/v1/tenants/${id}/businesses`, { params }) +} +export function createTenantBus(id: number, params: any) { + return request.post(`/sms/v1/tenants/${id}/businesses`, params) +} +export function createTenantPool(id: number, params: any) { + return request.post(`/sms/v1/tenants/${id}/pools`, params) +} +export function getOsTenant(params: any) { + return request.get('/ims/v1/ostenants', { + params + }) +} +export function createOsTenantt(params: any) { + return request.post('/ims/v1/ostenants', wrapperParams(params)) +} +export function modifyOsTenant(params: any) { + return request.put(`/ims/v1/ostenants/${params.id}`, wrapperParams(params)) +} +export function assignOsTenantt(params: any) { + return request.post(`/ims/v1/ostenants/${params.id}/tenant`, wrapperParams(params)) +} +export function deleteOsTenant(id: number) { + return request.delete(`/ims/v1/ostenants/${id}/tenant`) +} +export function removeOsTenant(id: number) { + return request.delete(`/ims/v1/ostenants/${id}`) +} +export function conditionOsTenant(params: any) { + return request.get('/ims/v1/ostenants/condition', { + params + }) +} +export function getTrack(params: any) { + return request.get(`${baseUrl}/track`, { + params: params + }) +} +export function getUser(params: any) { + return request.get('/sms/v1/users', { params }) +} +// 获取授信 +export function getTenantAccount(id: number) { + return request.get(`/cos/v1/tenants/${id}/account`) +} +// 授信修改 +export function createTenantAccount(params: any) { + return request.post('/cos/v1/tenants/account', wrapperParams(params)) +} +export function getApiById(id: number, params: any) { + return request.get(`/sms/v1/tenants/${id}/apis`, { + params: params + }) +} +export function updateApi(id: number, params: any) { + return request.patch(`/sms/v1/tenants/${id}/apis`, params) +} +// 配额 +export function getBaseQuotas() { + return request.get('/cos/v1/quotas/metas') +} + +export function getTenantBaseQuotas(id: number) { + return request.get(`/cos/v1/tenants/${id}/quotas/metas`) +} + +// 租户配置用户 +export function tenantCongigUser(params: any) { + return request.post(`/sms/v1/tenants/${params.id}/users`, params.ids) +} + +// 租户移除用户 +export function tenantRemoveUser(id: number) { + return request.patch(`/sms/v1/users/${id}/tenants`) +} + +// /sms/v1/tenants +// 租户移除用户 +export function lockTenant(params: any) { + return request.patch('/sms/v1/tenants', params) +} + +// 导出租户列表 +export function exportTenantList(params: any) { + downloadFile('/sms/v1/tenants/export', params) +} diff --git a/src/services/system/user.js b/src/services/system/user.js new file mode 100644 index 0000000..ff311c5 --- /dev/null +++ b/src/services/system/user.js @@ -0,0 +1,50 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils/index' + +const baseUrl = '/sms/v1/users' +export function getUser(params) { + return request.get(baseUrl, { + params + }) +} +export function getUserDetail(id) { + return request.get(`${baseUrl}/${id}`) +} +export function createUser(params) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifyUser(params) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function removeUser(id) { + return request.delete(`${baseUrl}/${id}`) +} +export function getManager(id) { + return request.get(`/sms/v1/tenants/${id}`) +} +/* + * action取值为: + * lock active reset accredit change + */ +export function operateUser(id, action, params) { + return request.patch(`${baseUrl}/${id}`, { + action, + ...wrapperParams(params) + }) +} +export function checkStatus(data) { + const { accountCategory, id } = data + const url = accountCategory === 'User' ? baseUrl : '/sms/v1/tenants' + return request.get(`${url}/${id}/status`) +} +export function getRolesByUser(id) { + return request.get(`${baseUrl}/${id}/roles`) +} +export function getTrack(params) { + return request.get(`${baseUrl}/track`, { + params: params + }) +} diff --git a/src/services/task/command.js b/src/services/task/command.js new file mode 100644 index 0000000..7c0593c --- /dev/null +++ b/src/services/task/command.js @@ -0,0 +1,33 @@ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +const baseUrl = '/cop/v1/commands' + +export function getCommand(params) { + return request.get(baseUrl, { + params + }) +} +export function getCommandDetail(id) { + return request.get(`${baseUrl}/${id}`) +} +export function createCommand(params) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifyCommand(params) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function removeCommand(id) { + return request.delete(`${baseUrl}/${id}`) +} +export function applyCommand(id) { + return request.patch(`${baseUrl}/${id}`) +} +export function getRoleCommand(params) { + return request.get(`${baseUrl}/authorized`, { + params: params + }) +} +export function accreditCommand(params) { + return request.patch(`${baseUrl}/accredit`, wrapperParams(params)) +} diff --git a/src/services/task/task.js b/src/services/task/task.js new file mode 100644 index 0000000..b11992c --- /dev/null +++ b/src/services/task/task.js @@ -0,0 +1,121 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams, downloadFile } from 'utils' + +const baseUrl = '/cop/v1/tasks' + +export function getTask(params) { + return request.get(baseUrl, { + params + }) +} +export function getTaskDetail(id) { + return request.get(`${baseUrl}/${id}`) +} +export function createTask(params) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifyTask(params) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function removeTask(id) { + return request.delete(`${baseUrl}/${id}`) +} +/* + * action取值为: + * start clone active suspend transfer applyStart applyRecover applyActive usage release recall + */ +// export function operateTask(id, action, params) { +// return request.patch(`${baseUrl}/${id}`, { +// action, +// ...wrapperParams(params) +// }) +// } + +const instanceUrl = '/cop/v1/tasks/instances' +export function getInstance(params) { + return request.get(instanceUrl, { + params + }) +} +export function removeInstance(id) { + return request.delete(`${instanceUrl}/${id}`) +} +export function getInstanceDetail(id) { + return request.get(`${instanceUrl}/${id}`) +} +export function getInstanceNode(id) { + return request.get(`${instanceUrl}/nodes/${id}`) +} +export function checkInstanceFile(params) { + return request.get(`${instanceUrl}/files/check`, { params }) +} +export function exportInstanceFile(path) { + downloadFile(`${instanceUrl}/files/download`, { path }) +} +/* + * action取值为: + * start recover cancel suspend active result + */ +// export function operateInstance(id, action, params) { +// return request.patch(`${instanceUrl}/${id}`, { +// action, +// ...wrapperParams(params) +// }) +// } +// action修改 +export function operateInstance(id, action, params) { + return request.patch(`${instanceUrl}/${id}/${action}`, wrapperParams(params)) +} +export function exportInstance(id, params) { + downloadFile(`${instanceUrl}/${id}/export`, params) +} + +const sceneUrl = '/cop/v1/tasks/scenes' +export function getScene(params) { + return request.get(sceneUrl, { + params + }) +} +// simple修改 +export function getSceneBySimple(params) { + return request.get(`${sceneUrl}/simple`, { + params + }) +} +export function getSceneDetail(id) { + return request.get(`${sceneUrl}/${id}`) +} +export function createScene(params) { + return request.post(sceneUrl, wrapperParams(params)) +} +export function modifyScene(params) { + return request.put(`${sceneUrl}/${params.id}`, wrapperParams(params)) +} +export function removeScene(id) { + return request.delete(`${sceneUrl}/${id}`) +} + +const templateUrl = '/cop/v1/tasks/templates' +export function getTemplate(params) { + return request.get(templateUrl, { + params + }) +} +// simple修改 +export function getTemplateBySimple(params) { + return request.get(`${templateUrl}/simple`, { + params + }) +} +export function getTemplateDetail(id) { + return request.get(`${templateUrl}/${id}`) +} +export function createTemplate(params) { + return request.post(templateUrl, wrapperParams(params)) +} +export function modifyTemplate(params) { + return request.put(`${templateUrl}/${params.id}`, wrapperParams(params)) +} diff --git a/src/shared/action.ts b/src/shared/action.ts new file mode 100644 index 0000000..57bdf3f --- /dev/null +++ b/src/shared/action.ts @@ -0,0 +1,30 @@ +type IState = { + name: string + onmessage: any +} +function emptyAction(state: any, fireImmediately?: boolean) {} +class Actions { + actions = { + name: '', + onGlobalStateChange: emptyAction, + setGlobalState: emptyAction + } + + init(props: any, callback: any) { + this.actions = props + this.onGlobalStateChange(callback) + } + + onGlobalStateChange(callback: any, fireImmediately: boolean = true) { + return this.actions.onGlobalStateChange(callback, fireImmediately) + } + + setGlobalState(state: IState) { + this.actions.setGlobalState({ + ...state, + name: this.actions.name + }) + } +} +const actions = new Actions() +export default actions diff --git a/src/store/getters.js b/src/store/getters.js new file mode 100644 index 0000000..9b06424 --- /dev/null +++ b/src/store/getters.js @@ -0,0 +1,7 @@ +const getters = { + addRoutes: (state) => state.permission.addRoutes, + userData: (state) => state.app.userData, + pageConfig: (state) => state.app.pageConfig, + systemConfig: (state) => state.app.systemConfig +} +export default getters diff --git a/src/store/index.js b/src/store/index.js new file mode 100644 index 0000000..16de8c4 --- /dev/null +++ b/src/store/index.js @@ -0,0 +1,23 @@ +/** + * Created by Zhang Haijun on 2017/8/25. + */ +import Vue from 'vue' +import Vuex from 'vuex' +import getters from './getters' + +Vue.use(Vuex) +const modulesFiles = require.context('./modules', true, /\.js$/) +const modules = modulesFiles.keys().reduce((arr, modulePath) => { + // set './app.js' => 'app' + const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1') + const value = modulesFiles(modulePath) + arr[moduleName] = value.default + return arr +}, {}) + +const store = new Vuex.Store({ + modules, + getters +}) + +export default store diff --git a/src/store/modules/app.js b/src/store/modules/app.js new file mode 100644 index 0000000..c35137c --- /dev/null +++ b/src/store/modules/app.js @@ -0,0 +1,125 @@ +/** + * Created by Zhang Haijun on 2018/6/15. + */ +import { userKey, enableUserStorage } from '@/config' +import { getSystemConfigs, getUserInfo } from 'services/system' +import { getLanguage } from '@/lang/index' +import { setBrowser } from '../utils' + +const state = { + isCollapsed: false, + layout: localStorage.getItem('layout') || 'sidemenu', + sideMenuData: [], + theme: { + name: 'default', + sidebarColor: '' + }, + pageConfig: {}, + systemConfig: {}, + userData: null, + desktopUrl: null, + operateTime: '', + basePath: '', + $webSocket: '', + appPath: '', + expire: false, + language: getLanguage() +} +const mutations = { + SET_EXPIRE(state, value) { + state.expire = value + }, + SET_OPERATETIME(state) { + state.operateTime = new Date().getTime() + }, + SET_LAYOUT(state, value) { + // state.layout = value; + // localStorage.setItem('layout', value) + }, + SET_WEBSOCKET(state, value) { + state.$webSocket = value + }, + SET_USERDATA(state, userData = {}) { + state.userData = userData + }, + SET_DESKTOPURL(state, value) { + state.desktopUrl = value + }, + RESET_USER(state) { + state.userData = {} + if (enableUserStorage) { + localStorage.removeItem(userKey) + } + }, + TOGGLE_SIDEBAR(state) { + state.isCollapsed = !state.isCollapsed + }, + SETTING_SIDE_MENU(state, data) { + state.sideMenuData = data + }, + SETTING_BASE_PATH(state, data) { + state.basePath = data + }, + SETTING_PAGE_CONFIG(state, data) { + const { browserIcon, browserTitle } = data + setBrowser(browserIcon, browserTitle) + state.pageConfig = data + }, + SETTING_SYSTEM_CONFIG(state, data) { + state.systemConfig = data + }, + SETTING_THEME(state, data) { + state.theme = data + }, + SET_LANGUAGE: (state, language) => { + state.language = language + localStorage.setItem('language', language) + }, + SET_APP_PATH(state, value) { + state.appPath = value + } +} +const actions = { + async GetUserInfo({ commit, state: { userData } }) { + // 如果启用了本地缓存,直接在缓存取数据 + if (enableUserStorage && !userData) { + const userData = JSON.parse(localStorage.getItem(userKey)) + if (userData) { + // 判断下菜单数据是否存在 + commit('SET_USERDATA', userData) + return + } + } + const data = await getUserInfo() + if (data.success) { + // 云桌面登录与系统登录返回值不同 + const { portrait, ...others } = data.data.Manager || {} + const result = { + ...others, + portrait: portrait || '/web-common-resource/img/avatar_default.png', + accountCategory: data.data.accountCategory + } + if (enableUserStorage) { + localStorage.setItem(userKey, JSON.stringify(result)) + } + commit('SET_USERDATA', result) + } + }, + async GetPageConfigs({ commit }) { + const data = await getSystemConfigs({ category: '界面配置' }) + if (data.success) { + commit('SETTING_PAGE_CONFIG', data.data) + } + }, + async GetSystemConfigs({ commit }) { + const data = await getSystemConfigs({ codes: 'pwdStrength,lockScreenTime' }) + if (data.success) { + commit('SETTING_SYSTEM_CONFIG', data.data) + } + } +} +export default { + state, + mutations, + actions +} diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js new file mode 100644 index 0000000..3c92246 --- /dev/null +++ b/src/store/modules/permission.js @@ -0,0 +1,201 @@ +/** + * Created by HaijunZhang on 2018/11/12. + */ +import { resolvePath } from 'utils/resolvePath' +import router, { asyncRouterMap, resetRouter } from '@/router' +import { removeToken } from 'utils/auth' +import { menuKey, enablePermissionStorage, baseUrl } from '@/config' +import { getUserPermissions } from 'services/system' +import { urlToList } from '../utils' + +// 是否为qinakun环境 +const POWERED_BY_QIANKUN = window.__POWERED_BY_QIANKUN__ +// 获取应用路由数据 +const getAppRoutes = (data) => { + const routes = [] + for (const item of data) { + if (item.path === baseUrl) { + routes.push(item) + break + } + } + return routes[0].children +} +const resultRoutes = [] +// 递归获取路由的父元素 +const getParent = (path, routes) => { + let res + for (const route of routes) { + const { path: ph, component } = route + // 组件存在并且路径相同 + if (component && ph === path) { + res = route + break + } else if (route.children) { + res = getParent(path, route.children) + } + } + return res +} +export const createRoute = (item) => { + const urlList = urlToList(item.path) + // ['/system','/system/configs','/system/configs/page'] -> ['/system/configs', '/system'] + const resultList = urlList.slice(0, urlList.length - 1).reverse() + let t = '' + for (const url of resultList) { + t = getParent(url, resultRoutes) + if (t) break + } + if (t) { + if (t.children) { + t.children.push(item) + } else { + t.children = [item] + } + router.addRoute(t.name, item) + } else { + resultRoutes.push(item) + if (POWERED_BY_QIANKUN) { + router.addRoute(item) + } else { + router.addRoute('Home', item) + } + } +} +// 对异步路由数据进行处理生成路由表 +const handleAsyncRouter = (routes, basePath = '/') => { + const res = [] + routes.forEach((route) => { + const { router, component, name, redirect, icon, id, category, meta, params } = route + // 生成meta对象 + const metaCache = {} + JSON.parse(meta).forEach((item) => { + metaCache[item.key] = item.value + }) + // 生成params对象 + const paramsCache = {} + JSON.parse(params).forEach((item) => { + paramsCache[item.key] = item.value + }) + const tmp = { + id, + path: resolvePath(basePath, route.path), + name: router, + redirect, + hidden: category === 'view', + meta: { + ...metaCache, + title: name, + icon + }, + params: paramsCache + } + if (component || redirect) { + createRoute({ + path: resolvePath(basePath, route.path), + component: asyncRouterMap[component], + name: router, + redirect: redirect && resolvePath(basePath, redirect), + meta: { + ...metaCache, + title: name, + icon + }, + params: paramsCache + }) + } + if (route.children) { + tmp.children = handleAsyncRouter(route.children, tmp.path) + } + res.push(tmp) + }) + return res +} +const state = { + addRoutes: null, + buttons: [] +} +const mutations = { + SET_ROUTES: (state, routers) => { + state.addRoutes = routers + }, + SET_BUTTONS: (state) => { + state.buttons = JSON.parse(localStorage.getItem('buttonData')) + } +} +const actions = { + GenerateRoutes({ commit, state: { addRoutes } }, permissions) { + return new Promise((resolve) => { + const callback = (permission) => { + resultRoutes.length = 0 + const asyncRouter = handleAsyncRouter(getAppRoutes(permission)) + commit('SET_ROUTES', asyncRouter) + commit('SETTING_SIDE_MENU', asyncRouter, { root: true }) + resolve(asyncRouter) + } + // permissions存在,作为子应用加载 + if (permissions) { + callback(permissions) + return + } + // 如果启用了本地缓存并且刷新界面进入,直接在缓存取数据,因为存在一种情况主动更新数据 + if (enablePermissionStorage && !addRoutes) { + const menuData = JSON.parse(localStorage.getItem(menuKey)) + if (menuData) { + // 判断下菜单数据是否存在 + callback(menuData) + return + } + } + getUserPermissions() + .then((data) => { + if (data.success) { + if (enablePermissionStorage) { + localStorage.setItem(menuKey, JSON.stringify(data.data)) + } + callback(data.data) + } + }) + .catch((err) => { + console.log(err) + }) + }) + }, + // 动态更新权限 + ChangeRoutes({ dispatch }) { + return new Promise((resolve) => { + resetRouter() + dispatch('GenerateRoutes').then((accessRoutes) => { + resolve() + }) + }) + }, + ResetRoutes({ commit, dispatch, rootGetters }, redirectToLogin = true) { + return new Promise((resolve) => { + resetRouter() + commit('SET_ROUTES', null) + if (enablePermissionStorage) { + localStorage.removeItem(menuKey) + } + // 重置用户信息 + commit('RESET_USER', null, { root: true }) + // 重置用户信息 + commit('SETTING_SIDE_MENU', [], { root: true }) + // 重置标签信息 + dispatch('tagsView/delAllViews', null, { root: true }) + removeToken() + if (POWERED_BY_QIANKUN) { + location.href = '/login' + } else if (redirectToLogin) { + router.replace('/login') + } + resolve() + }) + } +} +export default { + namespaced: true, + state, + mutations, + actions +} diff --git a/src/store/modules/tagsView.js b/src/store/modules/tagsView.js new file mode 100644 index 0000000..1ca1201 --- /dev/null +++ b/src/store/modules/tagsView.js @@ -0,0 +1,139 @@ +import { nth } from 'lodash-es' +const state = { + visitedViews: [], + cachedViews: [] +} + +const mutations = { + ADD_VISITED_VIEW: (state, view) => { + const { + meta: { noTag, title } + } = view + if (noTag || !title) return + if (state.visitedViews.some((v) => v.path === view.path)) return + state.visitedViews.push( + Object.assign({}, view, { + title + }) + ) + }, + ADD_CACHED_VIEW: (state, view) => { + if (state.cachedViews.includes(view.name)) return + if (view.name && !view.meta.noCache) { + state.cachedViews.push(view.name) + } + }, + + DEL_VISITED_VIEW: (state, view) => { + for (const [i, v] of state.visitedViews.entries()) { + if (v.path === view.path) { + state.visitedViews.splice(i, 1) + break + } + } + }, + DEL_CACHED_VIEW: (state, view) => { + const index = state.cachedViews.indexOf(view.name) + index > -1 && state.cachedViews.splice(index, 1) + }, + + DEL_OTHERS_VISITED_VIEWS: (state, view) => { + state.visitedViews = state.visitedViews.filter((v) => { + return v.meta.fix || v.path === view.path + }) + }, + DEL_OTHERS_CACHED_VIEWS: (state, view) => { + const index = state.cachedViews.indexOf(view.name) + if (index > -1) { + state.cachedViews = [view.name] + } else { + // if index = -1, there is no cached tags + state.cachedViews = [] + } + }, + DEL_LEFT_VISITED_VIEWS: (state, index) => { + const left = state.visitedViews.slice(0, index).filter((v) => v.meta.fix) + const right = state.visitedViews.slice(index) + state.visitedViews = [...left, ...right] + }, + DEL_RIGHT_VISITED_VIEWS: (state, index) => { + const left = state.visitedViews.slice(0, index + 1) + const right = state.visitedViews.slice(index + 1).filter((v) => v.meta.fix) + state.visitedViews = [...left, ...right] + }, + UPDATE_CACHE_VIEWS: (state) => { + state.cachedViews = state.visitedViews.filter((v) => !v.meta.noCache && v.name).map((v) => v.name) + }, + DEL_ALL_VISITED_VIEWS: (state) => { + // keep fix tags + const fixTags = state.visitedViews.filter((tag) => tag.meta.fix) + state.visitedViews = fixTags + }, + DEL_ALL_CACHED_VIEWS: (state) => { + state.cachedViews = [] + } +} + +const actions = { + addView({ commit }, view) { + commit('ADD_VISITED_VIEW', view) + commit('ADD_CACHED_VIEW', view) + }, + delView({ commit, state }, view) { + return new Promise((resolve) => { + commit('DEL_VISITED_VIEW', view) + commit('DEL_CACHED_VIEW', view) + resolve({ + visitedViews: [...state.visitedViews], + cachedViews: [...state.cachedViews] + }) + }) + }, + delOthersViews({ commit, state }, view) { + return new Promise((resolve) => { + commit('DEL_OTHERS_VISITED_VIEWS', view) + commit('DEL_OTHERS_CACHED_VIEWS', view) + resolve({ + visitedViews: [...state.visitedViews], + cachedViews: [...state.cachedViews] + }) + }) + }, + delLeftViews({ commit, state }, { view, index }) { + return new Promise((resolve) => { + commit('DEL_LEFT_VISITED_VIEWS', index) + commit('UPDATE_CACHE_VIEWS') + resolve({ + visitedViews: [...state.visitedViews], + cachedViews: [...state.cachedViews] + }) + }) + }, + delRightViews({ commit, state }, { view, index }) { + return new Promise((resolve) => { + commit('DEL_RIGHT_VISITED_VIEWS', index) + commit('UPDATE_CACHE_VIEWS') + resolve({ + visitedViews: [...state.visitedViews], + cachedViews: [...state.cachedViews] + }) + }) + }, + delAllViews({ commit, state }, view) { + return new Promise((resolve) => { + commit('DEL_ALL_VISITED_VIEWS') + commit('DEL_ALL_CACHED_VIEWS') + resolve({ + visitedViews: [...state.visitedViews], + cachedViews: [...state.cachedViews] + }) + }) + } +} + +export default { + namespaced: true, + state, + mutations, + actions +} diff --git a/src/store/utils.js b/src/store/utils.js new file mode 100644 index 0000000..1867ac9 --- /dev/null +++ b/src/store/utils.js @@ -0,0 +1,16 @@ +export const setBrowser = (icon, title) => { + const head = document.getElementsByTagName('head')[0] + const linkTag = document.createElement('link') + linkTag.href = icon + linkTag.setAttribute('rel', 'shortcut icon') + linkTag.setAttribute('type', 'image/x-icon') + head.appendChild(linkTag) + document.title = title +} +// /system/configs/page -> [ '/system','/system/configs','/system/configs/page'] +export const urlToList = (url) => { + const urllist = url.split('/').filter((i) => i) + return urllist.map((urlItem, index) => { + return `/${urllist.slice(0, index + 1).join('/')}` + }) +} diff --git a/src/validate/index.js b/src/validate/index.js new file mode 100644 index 0000000..24f6602 --- /dev/null +++ b/src/validate/index.js @@ -0,0 +1,125 @@ +/** + * Created by Zhang Haijun on 2018/1/25. + */ +const trigger = null +export default { + required: { required: true, message: '请输入内容', trigger }, + number: { type: 'number', trigger, message: '请输入数字' }, + email: { type: 'email', trigger, message: '请输入正确的邮箱' }, + code: { pattern: /^[a-zA-Z0-9]*$/, message: '仅支持数字、字母', trigger }, + name: { pattern: /^[a-zA-Z0-9-_.]*$/, message: '仅支持数字、字母、下划线、中划线、点', trigger }, // 正整数 + positiveInteger: { + validator: (rule, value, callback) => { + if (/^[1-9][0-9]*$/.test(value) || !value) { + callback() + } else { + callback(new Error('请输入正整数')) + } + }, + trigger + }, + password: { + validator: (rule, value, callback) => { + const reg = /^[\x21-\x7ea-zA-Z0-9_]{1,18}$/ + if (reg.test(value)) { + callback() + } else { + callback(new Error('请输入正确的密码格式')) + } + }, + trigger + }, + pswNoSpace: { + validator: (rule, value, callback) => { + const reg = /^[^\s]+$/ + if (reg.test(value)) { + callback() + } else { + callback(new Error('密码不能使用空格')) + } + }, + trigger + }, + complexPassword: { + validator: (rule, value, callback) => { + const reg = /^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d)(?=.*?[~!@#¥%&*()$])[a-zA-Z\d~!@#¥%&*()$]{6,12}$/ + if (reg.test(value)) { + callback() + } else { + callback(new Error('密码必须由6-12位大小写字母数字和~!@#¥%&*()$组成')) + } + }, + trigger + }, + // 手机 + mobile: { + validator: (rule, value, callback) => { + const reg = /^1[3-9]\d{9}$/ + if (reg.test(value) || !value) { + callback() + } else { + callback(new Error('请输入正确的手机号')) + } + }, + trigger + }, + // 座机 + phone: { + validator: (rule, value, callback) => { + const reg = /^0\d{2,3}-?\d{7,8}|4\d{2,3}-?\d{7,8}$/ + if (reg.test(value)) { + callback() + } else { + callback(new Error('请输入正确的座机号')) + } + }, + trigger + }, + // 手机或者座机 + mobileOrPhone: { + validator: (rule, value, callback) => { + const reg = /(^1[3|4|5|7|6|8|9]\d{9}$)|(^0\d{2,3}-?\d{7,8}$)/ + if (reg.test(value) || !value) { + callback() + } else { + callback(new Error('请输入正确的座机号或者手机号')) + } + }, + trigger + }, + // ip地址 + ip: { + validator: (rule, value, callback) => { + const reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/ + if (reg.test(value) || !value) { + callback() + } else { + callback(new Error('请输入正确的IP地址')) + } + }, + trigger + }, + mac: { + validator: (rule, value, callback) => { + const reg = /^[A-F0-9]{2}(-[A-F0-9]{2}){5}$|^[A-F0-9]{2}(:[A-F0-9]{2}){5}$/ + if (reg.test(value)) { + callback() + } else { + callback(new Error('请输入正确的Mac地址')) + } + }, + trigger + }, + // 端口号 + port: { + validator: (rule, value, callback) => { + const reg = /^([1-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/ + if (reg.test(value) || !value) { + callback() + } else { + callback(new Error('请输入正确的端口号')) + } + }, + trigger + } +} diff --git a/src/views/about/index.vue b/src/views/about/index.vue new file mode 100644 index 0000000..f6738fc --- /dev/null +++ b/src/views/about/index.vue @@ -0,0 +1,143 @@ + + + + + diff --git a/src/views/about/logActive.vue b/src/views/about/logActive.vue new file mode 100644 index 0000000..59313ad --- /dev/null +++ b/src/views/about/logActive.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/src/views/configs/AddDialog.vue b/src/views/configs/AddDialog.vue new file mode 100644 index 0000000..9b704ef --- /dev/null +++ b/src/views/configs/AddDialog.vue @@ -0,0 +1,156 @@ + + + diff --git a/src/views/configs/PlatformTask.vue b/src/views/configs/PlatformTask.vue new file mode 100644 index 0000000..2ee8e7b --- /dev/null +++ b/src/views/configs/PlatformTask.vue @@ -0,0 +1,64 @@ + + + diff --git a/src/views/configs/business/RelationProject.vue b/src/views/configs/business/RelationProject.vue new file mode 100644 index 0000000..4e5a840 --- /dev/null +++ b/src/views/configs/business/RelationProject.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/src/views/configs/business/index.vue b/src/views/configs/business/index.vue new file mode 100644 index 0000000..b67f25b --- /dev/null +++ b/src/views/configs/business/index.vue @@ -0,0 +1,280 @@ + + + + + diff --git a/src/views/configs/component/AddDialog.vue b/src/views/configs/component/AddDialog.vue new file mode 100644 index 0000000..24b6ca4 --- /dev/null +++ b/src/views/configs/component/AddDialog.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/src/views/configs/dictionary.vue b/src/views/configs/dictionary.vue new file mode 100644 index 0000000..d09cb3d --- /dev/null +++ b/src/views/configs/dictionary.vue @@ -0,0 +1,128 @@ + + + diff --git a/src/views/configs/enviroment.vue b/src/views/configs/enviroment.vue new file mode 100644 index 0000000..5dd442f --- /dev/null +++ b/src/views/configs/enviroment.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/src/views/configs/migration/configs.js b/src/views/configs/migration/configs.js new file mode 100644 index 0000000..ae992d0 --- /dev/null +++ b/src/views/configs/migration/configs.js @@ -0,0 +1,63 @@ +export const getStatus = function (type, value) { + const colorMap = { + SUCCEED: 'success', + FAILED: 'danger', + RUNNING: 'normal', + WAITING: 'warning', + INTERRUPTED: 'primary' + } + const textMap = { + SUCCEED: '执行成功', + FAILED: '执行失败', + RUNNING: '正在执行', + WAITING: '等待执行', + INTERRUPTED: '打断执行' + } + return type === 'color' ? colorMap[value] : textMap[value] +} + +export const columns = [ + { + label: '迁移记录id', + prop: 'id', + scopedSlots: { customRender: 'id' } + }, + { + label: '总任务数', + prop: 'total' + }, + { + label: '已完成任务数', + prop: 'completeCnt' + }, + { + label: '任务进度', + prop: 'percent', + scopedSlots: { customRender: 'percent' } + }, + { + label: '执行状态', + prop: 'status', + scopedSlots: { customRender: 'status' } + }, + { + label: '执行结果', + prop: 'result' + }, + { + label: '执行人', + prop: 'creator' + }, + { + label: '开始时间', + prop: 'startTime' + }, + { + label: '结束时间', + prop: 'endTime' + }, + { + label: '任务耗时(ms)', + prop: 'used' + } +] diff --git a/src/views/configs/migration/detail.vue b/src/views/configs/migration/detail.vue new file mode 100644 index 0000000..4eee5be --- /dev/null +++ b/src/views/configs/migration/detail.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/src/views/configs/migration/index.vue b/src/views/configs/migration/index.vue new file mode 100644 index 0000000..590c50c --- /dev/null +++ b/src/views/configs/migration/index.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/src/views/configs/namerule.vue b/src/views/configs/namerule.vue new file mode 100644 index 0000000..812cedb --- /dev/null +++ b/src/views/configs/namerule.vue @@ -0,0 +1,240 @@ + + + + diff --git a/src/views/configs/notice/Dialog.vue b/src/views/configs/notice/Dialog.vue new file mode 100644 index 0000000..1942480 --- /dev/null +++ b/src/views/configs/notice/Dialog.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/src/views/configs/notice/config.js b/src/views/configs/notice/config.js new file mode 100644 index 0000000..f19c9c6 --- /dev/null +++ b/src/views/configs/notice/config.js @@ -0,0 +1,54 @@ +export const columns = [ + { + label: '标题', + prop: 'title', + scopedSlots: { customRender: 'title' } + }, + { + label: '状态', + prop: 'status', + scopedSlots: { customRender: 'status' } + }, + { + label: '发布范围', + prop: 'sendGroups', + scopedSlots: { customRender: 'sendGroups' } + }, + { + label: '发布方式', + prop: 'sendWays', + scopedSlots: { customRender: 'sendWays' } + }, + { + label: '发布人', + prop: 'creatorName' + }, + { + label: '发布时间', + prop: 'sendTime' + }, + { + label: '创建时间', + prop: 'gmtCreate' + }, + { + label: '操作', + disabled: true, + width: '220px', + scopedSlots: { customRender: 'operate' } + } +] + +export const searchConfigs = [ + { label: '标题', value: 'title', type: 'Input', width: '220px' }, + { + label: '状态', + value: 'status', + type: 'Select', + data: [ + { name: '待发布', id: 'NOTSEND' }, + { name: '已发布', id: 'SEND' } + ] + }, + { type: 'DateRange', label: '', value: 'gmtCreate' } +] diff --git a/src/views/configs/notice/index.vue b/src/views/configs/notice/index.vue new file mode 100644 index 0000000..8f1370e --- /dev/null +++ b/src/views/configs/notice/index.vue @@ -0,0 +1,202 @@ + + + + + diff --git a/src/views/configs/project/components/basicinfo.vue b/src/views/configs/project/components/basicinfo.vue new file mode 100644 index 0000000..9b544bb --- /dev/null +++ b/src/views/configs/project/components/basicinfo.vue @@ -0,0 +1,102 @@ + + + + + diff --git a/src/views/configs/project/components/member.vue b/src/views/configs/project/components/member.vue new file mode 100644 index 0000000..ae84ee3 --- /dev/null +++ b/src/views/configs/project/components/member.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/src/views/configs/project/index.vue b/src/views/configs/project/index.vue new file mode 100644 index 0000000..286ec94 --- /dev/null +++ b/src/views/configs/project/index.vue @@ -0,0 +1,415 @@ + + + + + diff --git a/src/views/configs/project/projectDetail.vue b/src/views/configs/project/projectDetail.vue new file mode 100644 index 0000000..f1e1d6a --- /dev/null +++ b/src/views/configs/project/projectDetail.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/src/views/configs/setting/components/UploadButton.vue b/src/views/configs/setting/components/UploadButton.vue new file mode 100644 index 0000000..4dadb17 --- /dev/null +++ b/src/views/configs/setting/components/UploadButton.vue @@ -0,0 +1,69 @@ + + + + diff --git a/src/views/configs/setting/components/UploadImage.vue b/src/views/configs/setting/components/UploadImage.vue new file mode 100644 index 0000000..faa2044 --- /dev/null +++ b/src/views/configs/setting/components/UploadImage.vue @@ -0,0 +1,54 @@ + + + + diff --git a/src/views/configs/setting/components/index.scss b/src/views/configs/setting/components/index.scss new file mode 100644 index 0000000..4fa32ec --- /dev/null +++ b/src/views/configs/setting/components/index.scss @@ -0,0 +1,25 @@ +.item-card { + background: #fff; + border: 1px solid #ebebeb; + margin-bottom: 10px; + .item-title { + font-size: 13px; + padding: 10px 15px; + border-bottom: 1px solid #ebebeb; + } + .item-body { + padding: 20px; + } +} + +.item-wrapper { + display: flex; + .color-select { + margin-left: 20px; + display: flex; + } + .desc-text { + margin: 0 10px 0 5px; + color: #999; + } +} diff --git a/src/views/configs/setting/general.vue b/src/views/configs/setting/general.vue new file mode 100644 index 0000000..a656b4f --- /dev/null +++ b/src/views/configs/setting/general.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/views/configs/setting/interface/CardItem.vue b/src/views/configs/setting/interface/CardItem.vue new file mode 100644 index 0000000..af49308 --- /dev/null +++ b/src/views/configs/setting/interface/CardItem.vue @@ -0,0 +1,75 @@ + + + + diff --git a/src/views/configs/setting/interface/index.vue b/src/views/configs/setting/interface/index.vue new file mode 100644 index 0000000..b35bc64 --- /dev/null +++ b/src/views/configs/setting/interface/index.vue @@ -0,0 +1,57 @@ + + + diff --git a/src/views/configs/setting/monitor/index.vue b/src/views/configs/setting/monitor/index.vue new file mode 100644 index 0000000..90db92b --- /dev/null +++ b/src/views/configs/setting/monitor/index.vue @@ -0,0 +1,202 @@ + + diff --git a/src/views/configs/setting/monitor/metrics.vue b/src/views/configs/setting/monitor/metrics.vue new file mode 100644 index 0000000..482efc0 --- /dev/null +++ b/src/views/configs/setting/monitor/metrics.vue @@ -0,0 +1,247 @@ + + diff --git a/src/views/configs/setting/page/BannerItem.vue b/src/views/configs/setting/page/BannerItem.vue new file mode 100644 index 0000000..ec1aa2d --- /dev/null +++ b/src/views/configs/setting/page/BannerItem.vue @@ -0,0 +1,108 @@ + + + + diff --git a/src/views/configs/setting/page/BrowserItem.vue b/src/views/configs/setting/page/BrowserItem.vue new file mode 100644 index 0000000..863a7a4 --- /dev/null +++ b/src/views/configs/setting/page/BrowserItem.vue @@ -0,0 +1,63 @@ + + + + diff --git a/src/views/configs/setting/page/ContentItem.vue b/src/views/configs/setting/page/ContentItem.vue new file mode 100644 index 0000000..a9f1446 --- /dev/null +++ b/src/views/configs/setting/page/ContentItem.vue @@ -0,0 +1,120 @@ + + + + diff --git a/src/views/configs/setting/page/LoginItem.vue b/src/views/configs/setting/page/LoginItem.vue new file mode 100644 index 0000000..e3279aa --- /dev/null +++ b/src/views/configs/setting/page/LoginItem.vue @@ -0,0 +1,78 @@ + + + + diff --git a/src/views/configs/setting/page/cmc.vue b/src/views/configs/setting/page/cmc.vue new file mode 100644 index 0000000..ebb801b --- /dev/null +++ b/src/views/configs/setting/page/cmc.vue @@ -0,0 +1,48 @@ + + + diff --git a/src/views/configs/setting/page/csc.vue b/src/views/configs/setting/page/csc.vue new file mode 100644 index 0000000..0fc673f --- /dev/null +++ b/src/views/configs/setting/page/csc.vue @@ -0,0 +1,45 @@ + + + diff --git a/src/views/configs/setting/page/index.vue b/src/views/configs/setting/page/index.vue new file mode 100644 index 0000000..a881300 --- /dev/null +++ b/src/views/configs/setting/page/index.vue @@ -0,0 +1,24 @@ + + diff --git a/src/views/configs/setting/page/utils.js b/src/views/configs/setting/page/utils.js new file mode 100644 index 0000000..a9a357d --- /dev/null +++ b/src/views/configs/setting/page/utils.js @@ -0,0 +1,3 @@ +export const isDefault = (value1, default1, value2, default2) => { + return default1 === value1 && default2 === value2 ? 'default' : 'custom' +} diff --git a/src/views/configs/setting/security/index.vue b/src/views/configs/setting/security/index.vue new file mode 100644 index 0000000..47cbad5 --- /dev/null +++ b/src/views/configs/setting/security/index.vue @@ -0,0 +1,130 @@ + + + + diff --git a/src/views/configs/setting/security/limit.vue b/src/views/configs/setting/security/limit.vue new file mode 100644 index 0000000..99bd232 --- /dev/null +++ b/src/views/configs/setting/security/limit.vue @@ -0,0 +1,171 @@ + + + diff --git a/src/views/configs/setting_dashboard/AccessControl.vue b/src/views/configs/setting_dashboard/AccessControl.vue new file mode 100644 index 0000000..7cf830c --- /dev/null +++ b/src/views/configs/setting_dashboard/AccessControl.vue @@ -0,0 +1,107 @@ + + + diff --git a/src/views/configs/setting_dashboard/AlarmCount.vue b/src/views/configs/setting_dashboard/AlarmCount.vue new file mode 100644 index 0000000..b54d86e --- /dev/null +++ b/src/views/configs/setting_dashboard/AlarmCount.vue @@ -0,0 +1,80 @@ + + + diff --git a/src/views/configs/setting_dashboard/CommonOperation.vue b/src/views/configs/setting_dashboard/CommonOperation.vue new file mode 100644 index 0000000..fe3da1a --- /dev/null +++ b/src/views/configs/setting_dashboard/CommonOperation.vue @@ -0,0 +1,89 @@ + + + diff --git a/src/views/configs/setting_dashboard/CountCard.vue b/src/views/configs/setting_dashboard/CountCard.vue new file mode 100644 index 0000000..c80d50b --- /dev/null +++ b/src/views/configs/setting_dashboard/CountCard.vue @@ -0,0 +1,49 @@ + + + diff --git a/src/views/configs/setting_dashboard/DataCenterOverview.vue b/src/views/configs/setting_dashboard/DataCenterOverview.vue new file mode 100644 index 0000000..1f6ce3a --- /dev/null +++ b/src/views/configs/setting_dashboard/DataCenterOverview.vue @@ -0,0 +1,113 @@ + + + diff --git a/src/views/configs/setting_dashboard/DataView.vue b/src/views/configs/setting_dashboard/DataView.vue new file mode 100644 index 0000000..2a0f285 --- /dev/null +++ b/src/views/configs/setting_dashboard/DataView.vue @@ -0,0 +1,79 @@ + + + diff --git a/src/views/configs/setting_dashboard/ResUsed.vue b/src/views/configs/setting_dashboard/ResUsed.vue new file mode 100644 index 0000000..cd36851 --- /dev/null +++ b/src/views/configs/setting_dashboard/ResUsed.vue @@ -0,0 +1,112 @@ + + + diff --git a/src/views/configs/setting_dashboard/SelectVendor.vue b/src/views/configs/setting_dashboard/SelectVendor.vue new file mode 100644 index 0000000..8a19267 --- /dev/null +++ b/src/views/configs/setting_dashboard/SelectVendor.vue @@ -0,0 +1,86 @@ + + + diff --git a/src/views/configs/setting_dashboard/TaskHistory.vue b/src/views/configs/setting_dashboard/TaskHistory.vue new file mode 100644 index 0000000..4e76af9 --- /dev/null +++ b/src/views/configs/setting_dashboard/TaskHistory.vue @@ -0,0 +1,85 @@ + + diff --git a/src/views/configs/setting_dashboard/data.ts b/src/views/configs/setting_dashboard/data.ts new file mode 100644 index 0000000..3edc605 --- /dev/null +++ b/src/views/configs/setting_dashboard/data.ts @@ -0,0 +1,108 @@ +export const shortcuts = [ + { + name: '资源接入', + path: '/cmp-web/vendors' + }, + { + name: '云平台', + path: '/cmp-web/compute/cloud/list' + }, + { + name: '云主机', + path: '/cmp-web/compute/vms' + }, + { + name: 'IP地址池', + path: '/cmp-web/base_resource/ips' + }, + { + name: '镜像资源', + path: '/cmp-web/base_resource/repository' + }, + { + name: '数据库', + path: '/cmp-web/db/rds/mysql' + }, + { + name: '中间件', + path: '/cmp-web/middleware/mq/kafka' + }, + { + name: '执行历史', + path: '/cop-web/task/history/list' + }, + { + name: '常规作业', + path: '/cop-web/task/task/list' + }, + { + name: '定时作业', + path: '/cop-web/task/shedule/list' + }, + { + name: '服务目录', + path: '/cos/products/catalogs' + }, + { + name: '流程管理', + path: '/cos/flow/define/list' + }, + { + name: '流程工单', + path: '/cos/flow/workorder' + }, + { + name: '监控概览', + path: '/cms-web/dashboard' + }, + { + name: '用户管理', + path: '/sms-web/auth/managers' + }, + { + name: '租户管理', + path: '/sms-web/auth/tenants' + }, + { + name: '角色管理', + path: '/sms-web/auth/roles' + }, + { + name: '系统配置', + path: '/sms-web/config/system_security' + } + // { + // name: '文档中心', + // path: '/cos/opc/document/list' + // } + // { + // name: '资源接入', + // path: '' + // }, + // { + // name: '资源接入', + // path: '' + // }, + // { + // name: '资源接入', + // path: '' + // } +] +export const topSetting = { + series: { + label: { + show: true, + position: 'right' + } + }, + yAxis: { + axisLabel: { + show: true, + color: '#707274', + rotate: 30, + formatter(value: string) { + return `${value?.substr(0, 5)}${value.length > 5 ? '...' : ''}` + } + } + } +} diff --git a/src/views/configs/setting_dashboard/index.vue b/src/views/configs/setting_dashboard/index.vue new file mode 100644 index 0000000..ce65add --- /dev/null +++ b/src/views/configs/setting_dashboard/index.vue @@ -0,0 +1,544 @@ + + + diff --git a/src/views/configs/setting_dashboard/utils.ts b/src/views/configs/setting_dashboard/utils.ts new file mode 100644 index 0000000..6ba043c --- /dev/null +++ b/src/views/configs/setting_dashboard/utils.ts @@ -0,0 +1,67 @@ +import { conditionBill, getOrderDashboard, getAlarmCount, getOrderCount, getTodoCount } from 'services/system/portal' + +async function getPayWayCount() { + const res = await getOrderDashboard({ + time: 'Months' + }) + return res.data.typeOrders +} + +async function getTodayAlarmCount() { + const res = await getAlarmCount({ + action: 'pieChart', + time: 'TODAY' + }) + return res.data +} + +async function getOrders() { + const res = await getOrderCount() + return res.data +} + +export async function getCardData(item: any) { + switch (item.config.code) { + case 'ToDoWork': + { + const res = await getTodoCount() + if (res.success) { + item.data = res.data + } + } + break + case 'OrderCount': + item.data = await getOrders() + break + case 'MoneyCount': + const res = await conditionBill({ + condition: 'totalBills' + }) + if (res.success) { + item.data = [ + { + name: '租户消费总计', + value: res.data + } + ] + } + break + case 'tenantTop5': + case 'userTop5': + { + const res = await conditionBill({ + condition: item.config.code + }) + if (res.success) { + item.data = res.data + } + } + break + case 'PayWayCount': + item.data = await getPayWayCount() + break + case 'TodayAlarmCount': + item.data = await getTodayAlarmCount() + break + } +} diff --git a/src/views/configs/tag.vue b/src/views/configs/tag.vue new file mode 100644 index 0000000..7d35d6f --- /dev/null +++ b/src/views/configs/tag.vue @@ -0,0 +1,214 @@ + + + + + diff --git a/src/views/errorPage/401.vue b/src/views/errorPage/401.vue new file mode 100644 index 0000000..de5487f --- /dev/null +++ b/src/views/errorPage/401.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/src/views/errorPage/404.vue b/src/views/errorPage/404.vue new file mode 100644 index 0000000..4bd8f3a --- /dev/null +++ b/src/views/errorPage/404.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/src/views/log/audit.vue b/src/views/log/audit.vue new file mode 100644 index 0000000..d995071 --- /dev/null +++ b/src/views/log/audit.vue @@ -0,0 +1,201 @@ + + + diff --git a/src/views/log/loginLog.vue b/src/views/log/loginLog.vue new file mode 100644 index 0000000..943b4a1 --- /dev/null +++ b/src/views/log/loginLog.vue @@ -0,0 +1,90 @@ + + + + diff --git a/src/views/login/lockme.vue b/src/views/login/lockme.vue new file mode 100644 index 0000000..48874af --- /dev/null +++ b/src/views/login/lockme.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/src/views/login/login.vue b/src/views/login/login.vue new file mode 100644 index 0000000..670df3e --- /dev/null +++ b/src/views/login/login.vue @@ -0,0 +1,232 @@ + + + + + diff --git a/src/views/login/sso.vue b/src/views/login/sso.vue new file mode 100644 index 0000000..08d7e3a --- /dev/null +++ b/src/views/login/sso.vue @@ -0,0 +1,23 @@ + + + diff --git a/src/views/login/tools.js b/src/views/login/tools.js new file mode 100644 index 0000000..83d9422 --- /dev/null +++ b/src/views/login/tools.js @@ -0,0 +1,15 @@ +import { setToken } from 'utils/auth' +import { enablePermissionStorage, menuKey, enableUserStorage, userKey } from '@/config' + +export function setLoginData(data) { + const { accountCategory, manager = {}, servicePermissions } = data + if (enableUserStorage) { + localStorage.setItem(userKey, JSON.stringify({ ...manager, accountCategory })) + } + if (enablePermissionStorage) { + localStorage.setItem(menuKey, JSON.stringify(servicePermissions || [])) + } + localStorage.setItem('buttonData', JSON.stringify(data.buttons || [])) + localStorage.removeItem('lockData') + setToken(data.token) +} diff --git a/src/views/monitor/components/Component.vue b/src/views/monitor/components/Component.vue new file mode 100644 index 0000000..c9aba11 --- /dev/null +++ b/src/views/monitor/components/Component.vue @@ -0,0 +1,63 @@ + + + + diff --git a/src/views/monitor/components/Host.vue b/src/views/monitor/components/Host.vue new file mode 100644 index 0000000..3d2bb0d --- /dev/null +++ b/src/views/monitor/components/Host.vue @@ -0,0 +1,89 @@ +/** * Created by HaijunZhang on 2019/12/16. */ + + + + + + diff --git a/src/views/monitor/components/HostOverview.vue b/src/views/monitor/components/HostOverview.vue new file mode 100644 index 0000000..672fb03 --- /dev/null +++ b/src/views/monitor/components/HostOverview.vue @@ -0,0 +1,212 @@ + + + diff --git a/src/views/monitor/components/Plug.vue b/src/views/monitor/components/Plug.vue new file mode 100644 index 0000000..14ada41 --- /dev/null +++ b/src/views/monitor/components/Plug.vue @@ -0,0 +1,123 @@ + + + + diff --git a/src/views/monitor/components/Service.vue b/src/views/monitor/components/Service.vue new file mode 100644 index 0000000..ee037d2 --- /dev/null +++ b/src/views/monitor/components/Service.vue @@ -0,0 +1,158 @@ + + + + diff --git a/src/views/monitor/components/filters.js b/src/views/monitor/components/filters.js new file mode 100644 index 0000000..310cf03 --- /dev/null +++ b/src/views/monitor/components/filters.js @@ -0,0 +1,31 @@ +/** + * Created by HaijunZhang on 2019/12/17. + */ +// 任务执行状态 +export function statusFilter(value, type = 'name') { + const obj = { + running: { + name: '运行中', + color: 'success' + }, + error: { + name: '异常', + color: 'danger' + }, + warning: { + name: '告警', + color: 'warning' + } + } + return obj[value] && obj[value][type] // 容错处理(初始化值不存在) +} +export const colorMap = { + running: 'green', + warning: 'yellow', + error: 'red' +} +export const borderColorMap = { + running: '#A3E5C3', + warning: '#FF9900', + error: '#DC1A1A' +} diff --git a/src/views/monitor/components/index.scss b/src/views/monitor/components/index.scss new file mode 100644 index 0000000..2183729 --- /dev/null +++ b/src/views/monitor/components/index.scss @@ -0,0 +1,175 @@ +.component-container { + //padding: 20px 10px; + background: #fff; + flex-wrap: wrap; + + //margin: 0 0 10px 0 !important; + .cell { + position: relative; + border: 1px #b8d3f4 dashed; + padding: 30px 10px 10px 10px; + margin-top: 15px; + + .cell-title { + background: #deeffd; + color: #2e8cf0; + text-align: center; + height: 30px; + line-height: 30px; + width: 50%; + position: absolute; + top: -15px; + left: 25%; + } + + .cell-body { + position: relative; + display: inline-block; + border: 1px solid #b8d3f4; + background: #fff; + min-width: 1px; + padding: 10px; + overflow-x: auto; + overflow-y: hidden; + cursor: pointer; + + .setting { + position: absolute; + top: -10px; + right: 0; + font-size: 14px; + } + + .cell-checked { + position: absolute; + right: 10px; + top: 5px; + } + + &:hover { + z-index: 2; + -webkit-box-shadow: 0 7px 15px rgba(0, 0, 0, 0.1); + box-shadow: 0 3px 15px rgba(0, 0, 0, 0.1); + -webkit-transform: translate3d(0, -1px, 0); + transform: translate3d(0, -1px, 0); + } + + span.status { + display: inline-block; + position: relative; + top: 3px; + } + + .progress-wrap { + display: inline-block; + width: calc(100% - 50px); + overflow: hidden; + text-overflow: ellipsis; + } + } + + .cell-ip { + text-align: center; + height: 30px; + line-height: 30px; + margin-bottom: 15px; + border: 1px solid #b8d3f4; + width: 100%; + } + + .attr-value { + display: inline-block; + } + } + + .green { + .cell { + border: 1px #a3e5c3 dashed; + //background: #F6FCF9; + margin-top: 20px; + + .cell-title { + background: #d1f2e1; + color: #17be6a; + } + + .cell-body { + border: 1px solid #a3e5c3; + } + + .el-button--text { + color: #17be6a; + } + } + } + + .yellow { + .cell { + border: 1px #ff9900 dashed; + //background: #ff990030; + margin-top: 20px; + + .cell-title { + background: #f3debf; + color: #ff9900; + } + + .cell-body { + border: 1px solid #a3e5c3; + } + + .el-button--text { + color: #ff9900; + } + } + } + + .red { + .cell { + border: 1px #dc1a1a dashed; + //background: #F6C6C6; + margin-top: 20px; + + .cell-title { + background: #efa8a8; + color: #dc1a1a; + } + + .el-button--text { + color: #dc1a1a; + } + } + } + + &.blue { + .cell { + background: rgba(247, 251, 253, 0.63); + border: 1px #9cd3e2 dashed; + + .cell-title { + background: #d6f3fb; + color: #3bc3ea; + } + + .cell-body { + border: 1px solid #9cd3e2; + } + + .el-button--text { + color: #3bc3ea; + } + } + } + + &.purple { + .cell { + min-width: auto !important; + border: 1px #e9e9f9 dashed; + + .cell-title { + background: #e9e9f9; + color: #a5a6e6; + } + } + } +} diff --git a/src/views/monitor/components/logDownload.vue b/src/views/monitor/components/logDownload.vue new file mode 100644 index 0000000..f1aeb6b --- /dev/null +++ b/src/views/monitor/components/logDownload.vue @@ -0,0 +1,108 @@ + + + diff --git a/src/views/monitor/components/next.vue b/src/views/monitor/components/next.vue new file mode 100644 index 0000000..ce33471 --- /dev/null +++ b/src/views/monitor/components/next.vue @@ -0,0 +1,572 @@ + + + diff --git a/src/views/monitor/components/realLog.vue b/src/views/monitor/components/realLog.vue new file mode 100644 index 0000000..50e962e --- /dev/null +++ b/src/views/monitor/components/realLog.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/src/views/monitor/components/userDefind.vue b/src/views/monitor/components/userDefind.vue new file mode 100644 index 0000000..a4b6444 --- /dev/null +++ b/src/views/monitor/components/userDefind.vue @@ -0,0 +1,69 @@ + + + diff --git a/src/views/monitor/index.vue b/src/views/monitor/index.vue new file mode 100644 index 0000000..a224fdb --- /dev/null +++ b/src/views/monitor/index.vue @@ -0,0 +1,48 @@ +/** * Created by HaijunZhang on 2019/12/16. */ + + + + + diff --git a/src/views/permisson/auth/AddDialog.vue b/src/views/permisson/auth/AddDialog.vue new file mode 100644 index 0000000..e1cba07 --- /dev/null +++ b/src/views/permisson/auth/AddDialog.vue @@ -0,0 +1,260 @@ + + + diff --git a/src/views/permisson/auth/api_auth.vue b/src/views/permisson/auth/api_auth.vue new file mode 100644 index 0000000..9d1c20c --- /dev/null +++ b/src/views/permisson/auth/api_auth.vue @@ -0,0 +1,143 @@ + + diff --git a/src/views/permisson/auth/auth.vue b/src/views/permisson/auth/auth.vue new file mode 100644 index 0000000..eaed1ab --- /dev/null +++ b/src/views/permisson/auth/auth.vue @@ -0,0 +1,257 @@ + + + + diff --git a/src/views/permisson/auth/console_auth/AddDialog.vue b/src/views/permisson/auth/console_auth/AddDialog.vue new file mode 100644 index 0000000..2b40f84 --- /dev/null +++ b/src/views/permisson/auth/console_auth/AddDialog.vue @@ -0,0 +1,323 @@ + + + diff --git a/src/views/permisson/auth/console_auth/index.vue b/src/views/permisson/auth/console_auth/index.vue new file mode 100644 index 0000000..46658f3 --- /dev/null +++ b/src/views/permisson/auth/console_auth/index.vue @@ -0,0 +1,234 @@ + + + + diff --git a/src/views/permisson/auth/index.vue b/src/views/permisson/auth/index.vue new file mode 100644 index 0000000..63f7391 --- /dev/null +++ b/src/views/permisson/auth/index.vue @@ -0,0 +1,33 @@ + + + + diff --git a/src/views/permisson/department.vue b/src/views/permisson/department.vue new file mode 100644 index 0000000..3ad33c2 --- /dev/null +++ b/src/views/permisson/department.vue @@ -0,0 +1,152 @@ + + + diff --git a/src/views/permisson/manager/AddDialog.vue b/src/views/permisson/manager/AddDialog.vue new file mode 100644 index 0000000..e09ec43 --- /dev/null +++ b/src/views/permisson/manager/AddDialog.vue @@ -0,0 +1,220 @@ + + diff --git a/src/views/permisson/manager/GrantRole.vue b/src/views/permisson/manager/GrantRole.vue new file mode 100644 index 0000000..e9c6901 --- /dev/null +++ b/src/views/permisson/manager/GrantRole.vue @@ -0,0 +1,65 @@ + + diff --git a/src/views/permisson/manager/ResetPassword.vue b/src/views/permisson/manager/ResetPassword.vue new file mode 100644 index 0000000..a515fa3 --- /dev/null +++ b/src/views/permisson/manager/ResetPassword.vue @@ -0,0 +1,59 @@ + + diff --git a/src/views/permisson/manager/SubnetCidr.vue b/src/views/permisson/manager/SubnetCidr.vue new file mode 100644 index 0000000..5fb6acb --- /dev/null +++ b/src/views/permisson/manager/SubnetCidr.vue @@ -0,0 +1,76 @@ + + diff --git a/src/views/permisson/manager/UserDetail.vue b/src/views/permisson/manager/UserDetail.vue new file mode 100644 index 0000000..b48d74f --- /dev/null +++ b/src/views/permisson/manager/UserDetail.vue @@ -0,0 +1,127 @@ + + diff --git a/src/views/permisson/manager/config.ts b/src/views/permisson/manager/config.ts new file mode 100644 index 0000000..b80c8c9 --- /dev/null +++ b/src/views/permisson/manager/config.ts @@ -0,0 +1,83 @@ +export const columns = [ + { + type: 'selection' + }, + { + label: '登录账号', + prop: 'account', + sortable: 'custom', + scopedSlots: { customRender: 'account' } + }, + { + label: '用户姓名', + prop: 'name', + sortable: 'custom' + }, + { + label: '账号类型', + prop: 'isManager', + customRender(val: boolean) { + return val ? '管理用户' : '普通用户' + } + }, + { + label: '性别', + prop: 'sex', + scopedSlots: { customRender: 'sex' } + }, + { + label: '状态', + prop: 'status', + scopedSlots: { customRender: 'status' } + }, + { + label: '所属租户', + prop: 'tenantName' + }, + { + label: '联系方式', + prop: 'mobile' + }, + { + label: '用户邮箱', + prop: 'email', + showOverflowTooltip: true + }, + { + label: '创建时间', + prop: 'gmtCreate', + sortable: 'custom' + }, + { + label: '用户工号', + prop: 'jobNumber', + checked: false + }, + { + label: '公司名称', + prop: 'company', + checked: false + }, + { + label: '用户描述', + prop: 'remark', + checked: false + }, + { + label: '操作', + disabled: true, + width: '220px', + scopedSlots: { customRender: 'operate' } + } +] +export const searchConfigs: Base.ISearchConfig[] = [ + { label: '登录账号', value: 'account', type: 'Input' }, + { label: '用户名称', value: 'name', type: 'Input' }, + { label: '联系方式', value: 'mobile', type: 'Input' }, + { label: '角色', value: 'roleId', type: 'Select', data: [] }, + { label: '所属租户', value: 'tenantId', type: 'Select', data: [] } +] +export const sexData = [ + { name: '女', value: '0', value1: 'false' }, + { name: '男', value: '1', value1: 'true' } +] diff --git a/src/views/permisson/manager/index.vue b/src/views/permisson/manager/index.vue new file mode 100644 index 0000000..405b827 --- /dev/null +++ b/src/views/permisson/manager/index.vue @@ -0,0 +1,212 @@ + + diff --git a/src/views/permisson/plugins/configIndex.vue b/src/views/permisson/plugins/configIndex.vue new file mode 100644 index 0000000..7022003 --- /dev/null +++ b/src/views/permisson/plugins/configIndex.vue @@ -0,0 +1,129 @@ + + + diff --git a/src/views/permisson/plugins/index.vue b/src/views/permisson/plugins/index.vue new file mode 100644 index 0000000..b3a2ac8 --- /dev/null +++ b/src/views/permisson/plugins/index.vue @@ -0,0 +1,290 @@ + + diff --git a/src/views/permisson/role.vue b/src/views/permisson/role.vue new file mode 100644 index 0000000..7601dc9 --- /dev/null +++ b/src/views/permisson/role.vue @@ -0,0 +1,619 @@ + + + + + diff --git a/src/views/permisson/tenant/AddDialog.vue b/src/views/permisson/tenant/AddDialog.vue new file mode 100644 index 0000000..5a531f6 --- /dev/null +++ b/src/views/permisson/tenant/AddDialog.vue @@ -0,0 +1,205 @@ + + + diff --git a/src/views/permisson/tenant/ServiceDialog.vue b/src/views/permisson/tenant/ServiceDialog.vue new file mode 100644 index 0000000..874a722 --- /dev/null +++ b/src/views/permisson/tenant/ServiceDialog.vue @@ -0,0 +1,60 @@ + + diff --git a/src/views/permisson/tenant/assignPool.vue b/src/views/permisson/tenant/assignPool.vue new file mode 100644 index 0000000..3f8f418 --- /dev/null +++ b/src/views/permisson/tenant/assignPool.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/src/views/permisson/tenant/components/LeftMenu.vue b/src/views/permisson/tenant/components/LeftMenu.vue new file mode 100644 index 0000000..d680f8d --- /dev/null +++ b/src/views/permisson/tenant/components/LeftMenu.vue @@ -0,0 +1,67 @@ + + + diff --git a/src/views/permisson/tenant/components/QuotaItem.vue b/src/views/permisson/tenant/components/QuotaItem.vue new file mode 100644 index 0000000..155888b --- /dev/null +++ b/src/views/permisson/tenant/components/QuotaItem.vue @@ -0,0 +1,41 @@ +/** * Created by HaijunZhang on 2019/8/30. */ + + + + + diff --git a/src/views/permisson/tenant/components/ServiceItem.vue b/src/views/permisson/tenant/components/ServiceItem.vue new file mode 100644 index 0000000..b187d5f --- /dev/null +++ b/src/views/permisson/tenant/components/ServiceItem.vue @@ -0,0 +1,160 @@ + + + diff --git a/src/views/permisson/tenant/components/basicInfo.vue b/src/views/permisson/tenant/components/basicInfo.vue new file mode 100644 index 0000000..5fd9fa6 --- /dev/null +++ b/src/views/permisson/tenant/components/basicInfo.vue @@ -0,0 +1,168 @@ +/** * Created by HaijunZhang on 2019/8/30. */ + + + + + diff --git a/src/views/permisson/tenant/components/quota.vue b/src/views/permisson/tenant/components/quota.vue new file mode 100644 index 0000000..c799b4d --- /dev/null +++ b/src/views/permisson/tenant/components/quota.vue @@ -0,0 +1,84 @@ +/** * Created by HaijunZhang on 2019/8/30. */ + + + + + diff --git a/src/views/permisson/tenant/components/quotaData.js b/src/views/permisson/tenant/components/quotaData.js new file mode 100644 index 0000000..daf1ead --- /dev/null +++ b/src/views/permisson/tenant/components/quotaData.js @@ -0,0 +1,8 @@ +/** + * Created by HaijunZhang on 2019/7/8. + */ +export default [ + { name: 'CPU', unit: 'C', code: 'meta.cpu', min: 0, max: 999999, quota: 0 }, + { name: '内存', unit: 'GB', code: 'meta.mem', min: 0, max: 999999, quota: 0 }, + { name: '磁盘', unit: 'GB', code: 'meta.disk', min: 0, max: 9999999, quota: 0 } +] diff --git a/src/views/permisson/tenant/components/transfer.vue b/src/views/permisson/tenant/components/transfer.vue new file mode 100644 index 0000000..2ac7e55 --- /dev/null +++ b/src/views/permisson/tenant/components/transfer.vue @@ -0,0 +1,140 @@ + + + + + diff --git a/src/views/permisson/tenant/config.js b/src/views/permisson/tenant/config.js new file mode 100644 index 0000000..fdb99aa --- /dev/null +++ b/src/views/permisson/tenant/config.js @@ -0,0 +1,53 @@ +export const columns = [ + { + type: 'selection' + }, + { + label: '登录账号', + prop: 'account', + scopedSlots: { customRender: 'account' } + }, + { + label: '名称', + prop: 'name' + }, + { + label: '所属组织', + prop: 'departmentName' + }, + { + label: '状态', + prop: 'status', + scopedSlots: { customRender: 'status' } + }, + { + label: '折扣率', + prop: 'discount' + }, + { + label: '创建时间', + prop: 'gmtCreate' + }, + { + label: '操作', + disabled: true, + width: '220px', + scopedSlots: { customRender: 'operate' } + } +] + +export const searchConfigs = [ + { label: '登录账号', value: 'account', type: 'Input', width: '220px' }, + { label: '名称', value: 'name', type: 'Input' }, + { + label: '状态', + value: 'status', + type: 'Select', + data: [ + { name: '正常', id: 'NORMAL' }, + { name: '冻结', id: 'ABNORMAL' }, + { name: '注销', id: 'LOGOUT' } + ] + }, + { type: 'DateRange', label: '', value: 'gmtCreate' } +] diff --git a/src/views/permisson/tenant/index.scss b/src/views/permisson/tenant/index.scss new file mode 100644 index 0000000..de2f796 --- /dev/null +++ b/src/views/permisson/tenant/index.scss @@ -0,0 +1,7 @@ +.name-cell { + display: flex; + align-items: center; + img { + height: 20px; + } +} diff --git a/src/views/permisson/tenant/index.vue b/src/views/permisson/tenant/index.vue new file mode 100644 index 0000000..08d1dec --- /dev/null +++ b/src/views/permisson/tenant/index.vue @@ -0,0 +1,586 @@ + + + diff --git a/src/views/permisson/tenant/quotaDialog.vue b/src/views/permisson/tenant/quotaDialog.vue new file mode 100644 index 0000000..abee8d0 --- /dev/null +++ b/src/views/permisson/tenant/quotaDialog.vue @@ -0,0 +1,57 @@ + + diff --git a/src/views/permisson/tenant/tenantDetail.vue b/src/views/permisson/tenant/tenantDetail.vue new file mode 100644 index 0000000..5f3a29c --- /dev/null +++ b/src/views/permisson/tenant/tenantDetail.vue @@ -0,0 +1,342 @@ + + + + + diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..a101182 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "target": "esnext", + "module": "esnext", + "strict": true, + "jsx": "preserve", + "importHelpers": true, + "moduleResolution": "node", + "experimentalDecorators": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "sourceMap": true, + "allowJs": true, + "baseUrl": ".", + "types": ["webpack-env"], + "skipLibCheck": true, + // "typeRoots": ["./node_modules/@types/", "./types"], + "paths": { + "@/*": ["src/*"], + "services/*": ["src/services/*"], + "utils/*": ["src/common/utils/*"], + "components/*": ["src/common/components/*"], + "hooks/*": ["src/common/hooks/*"], + "filters/*": ["src/common/filters/*"] + }, + "lib": ["esnext", "dom", "dom.iterable", "scripthost"] + }, + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue", "tests/**/*.ts", "tests/**/*.tsx"], + "exclude": ["node_modules"] +} diff --git a/upload.js b/upload.js new file mode 100644 index 0000000..60f517f --- /dev/null +++ b/upload.js @@ -0,0 +1,28 @@ +'use strict' +// 引入scp2 +const client = require('scp2') +const ora = require('ora') +const chalk = require('chalk') +const spinner = ora(chalk.green('正在发布到服务器...')) +const startTime = new Date().getTime() +spinner.start() +client.scp( + './dist/', + { + // 本地打包文件的位置 + host: '**.**.**.**', // 服务器的IP地址 + port: '**', // 服务器端口, 一般为 22 + username: '***', // 用户名 + password: '******', // 密码 + path: '/opt/test/' // 项目部署的服务器目标位置 + }, + (err) => { + spinner.stop() + if (!err) { + console.log(chalk.green('Success! Project ready deploy successful...')) + console.log(chalk.green(`Time: ${new Date().getTime() - startTime}ms`)) + } else { + console.log(chalk.red('Fail!' + err)) + } + } +) diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..74b33df --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,72 @@ +import { createVuePlugin } from 'vite-plugin-vue2' +import { defineConfig } from 'vite' +import path from 'path' +import viteSvgIcons from 'vite-plugin-svg-icons' + +function resolve(dir) { + return path.join(__dirname, dir) +} + +const httpType = 'http://' +const proxyUrl = '23.33.3.3:60006/' // 代理地址设置 + +export default defineConfig({ + resolve: { + alias: { + vue: 'vue/dist/vue.min.js', + '@': resolve('src'), + assets: resolve('src/assets'), + services: resolve('src/services'), + utils: resolve('src/common/utils'), + interface: resolve('src/common/interface'), + components: resolve('src/common/components'), + hooks: resolve('src/common/hooks'), + task: resolve('src/views/task'), + filters: resolve('src/common/filters'), + views: resolve('src/views') + } + }, + base: '/', + plugins: [ + // vue() + createVuePlugin(), + viteSvgIcons({ + // Specify the icon folder to be cached + iconDirs: [path.resolve(process.cwd(), './src/icons/svg')], + // Specify symbolId format + symbolId: 'icon-[dir]-[name]' + }) + ], + server: { + host: '0.0.0.0', + port: 8088, + proxy: { + // '/api/sms/messageService': { + // target: 'ws://' + proxyUrl, + // changeOrigin: true, + // ws: true + // }, + '/api': { + target: httpType + proxyUrl, + changeOrigin: true, + secure: false + }, + '/config-files': { + target: httpType + proxyUrl, + secure: false + }, + '/web-common-resource': { + target: httpType + proxyUrl, + secure: false + } + } + }, + css: { + preprocessorOptions: { + scss: { + additionalData: '@import "@/common/css/common-var.scss";', + charset: false + } + } + } +}) diff --git a/vue.config.js b/vue.config.js new file mode 100644 index 0000000..6a8212e --- /dev/null +++ b/vue.config.js @@ -0,0 +1,124 @@ +/** + * Created by Zhang Haijun on 2018/7/24. + */ +const path = require('path') +const { name } = require('./package') +const webpack = require('webpack') +const CompressPlugin = require('compress-webpack-plugin') + +function resolve(dir) { + return path.join(__dirname, dir) +} +const httpType = 'http://' +const proxyUrl = '23.33.3.3:60006' // 代理地址设置 + +const publicPath = process.env.NODE_ENV === 'production' ? '/sms-web/' : '/' +module.exports = { + publicPath, + assetsDir: 'static', + outputDir: 'sms-web', + // 构建时不进行eslint校验 + lintOnSave: process.env.NODE_ENV !== 'production', + // 生产环境禁止source map + productionSourceMap: false, + devServer: { + headers: { + 'Access-Control-Allow-Origin': '*' + }, + port: 8085, + overlay: { + warnings: true, + errors: true + }, + proxy: { + '/api/sms/messageService': { + target: 'ws://' + proxyUrl, + changeOrigin: true, + ws: false + }, + '/api': { + target: httpType + proxyUrl, + changeOrigin: true, + secure: false + }, + '/captcha': { + target: httpType + proxyUrl + }, + '/config-files': { + target: httpType + proxyUrl + }, + '/web-common-resource': { + target: httpType + proxyUrl + } + } + }, + css: { + loaderOptions: { + sass: { + prependData: '@import "@/common/css/common-var.scss";' + } + } + }, + configureWebpack: (config) => { + const plugins = [] + if (process.env.NODE_ENV === 'production') { + plugins.push( + new CompressPlugin({ + test: /\.js$|\.html$|\.css$/, + threshold: 10240, + deleteOriginalAssets: false + }) + ) + } + return { + plugins, + output: { + // 把子应用打包成 umd 库格式 + library: `${name}-[name]`, + libraryTarget: 'umd', + jsonpFunction: `webpackJsonp_${name}` + } + } + }, + chainWebpack: (config) => { + // set svg-sprite-loader + config.module.rule('svg').exclude.add(resolve('src/icons')).end() + config.module + .rule('icons') + .test(/\.svg$/) + .include.add(resolve('src/icons')) + .end() + .use('svg-sprite-loader') + .loader('svg-sprite-loader') + .options({ + symbolId: 'icon-[name]' + }) + .end() + config.resolve.alias + .set('@', resolve('src')) + .set('assets', resolve('src/assets')) + .set('services', resolve('src/services')) + .set('utils', resolve('src/common/utils')) + .set('interface', resolve('src/common/interface')) + .set('components', resolve('src/common/components')) + .set('hooks', resolve('src/common/hooks')) + .set('task', resolve('src/views/task')) + .set('filters', resolve('src/filters')) + .set('views', resolve('src/views')) + config.module + .rule('fonts') + .use('url-loader') + .loader('url-loader') + .options({ + limit: 4096, // 小于4kb将会被打包成 base64 + fallback: { + loader: 'file-loader', + options: { + name: 'fonts/[name].[ext]', + publicPath: '/web-common-resource' + } + } + }) + .end() + } +}