Jacky 3 дней назад
Родитель
Сommit
88cec9af4b
100 измененных файлов с 342 добавлено и 464 удалено
  1. 2 2
      app/package.json
  2. 175 297
      app/pnpm-lock.yaml
  3. 3 3
      app/src/App.vue
  4. 1 1
      app/src/api/cert.ts
  5. 1 1
      app/src/api/passkey.ts
  6. 1 1
      app/src/api/stream.ts
  7. 1 1
      app/src/components/AutoCertForm/DNSChallenge.vue
  8. 2 2
      app/src/components/Chart/AreaChart.vue
  9. 1 1
      app/src/components/Chart/RadialBarChart.vue
  10. 5 5
      app/src/components/ChatGPT/ChatGPT.vue
  11. 1 1
      app/src/components/CodeEditor/CodeCompletion.ts
  12. 3 3
      app/src/components/ConfigHistory/ConfigHistory.vue
  13. 2 2
      app/src/components/ConfigHistory/DiffViewer.vue
  14. 1 1
      app/src/components/EnvGroupTabs/EnvGroupTabs.vue
  15. 1 1
      app/src/components/EnvIndicator/EnvIndicator.vue
  16. 2 2
      app/src/components/NginxControl/NginxControl.vue
  17. 1 1
      app/src/components/NgxConfigEditor/LocationEditor.vue
  18. 2 2
      app/src/components/NgxConfigEditor/NgxUpstream.vue
  19. 1 1
      app/src/components/NgxConfigEditor/directive/DirectiveAdd.vue
  20. 2 2
      app/src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue
  21. 2 2
      app/src/components/NodeSelector/NodeSelector.vue
  22. 5 5
      app/src/components/Notification/Notification.vue
  23. 1 1
      app/src/components/ProcessingStatus/ProcessingStatus.vue
  24. 1 1
      app/src/components/SelfCheck/store.ts
  25. 1 1
      app/src/components/SelfCheck/tasks/frontend/https-check.ts
  26. 1 1
      app/src/components/SelfCheck/tasks/frontend/sse.ts
  27. 1 1
      app/src/components/SelfCheck/tasks/frontend/websocket.ts
  28. 1 1
      app/src/components/SetLanguage/SetLanguage.vue
  29. 1 1
      app/src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue
  30. 2 2
      app/src/components/StdDesign/StdDataDisplay/StdCurd.vue
  31. 2 2
      app/src/components/StdDesign/StdDataDisplay/StdCurdDetail.vue
  32. 6 6
      app/src/components/StdDesign/StdDataDisplay/StdTable.vue
  33. 2 2
      app/src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts
  34. 1 1
      app/src/components/StdDesign/StdDataDisplay/methods/sortable.ts
  35. 2 2
      app/src/components/StdDesign/StdDataEntry/StdDataEntry.vue
  36. 1 1
      app/src/components/StdDesign/StdDataEntry/StdFormItem.vue
  37. 1 1
      app/src/components/StdDesign/StdDataEntry/components/StdSelector.vue
  38. 2 2
      app/src/components/StdDesign/StdDataEntry/index.tsx
  39. 4 4
      app/src/components/StdDesign/StdDetail/StdDetail.vue
  40. 3 3
      app/src/components/StdDesign/types.d.ts
  41. 2 2
      app/src/components/SystemRestore/SystemRestoreContent.vue
  42. 2 2
      app/src/components/TwoFA/Authorization.vue
  43. 2 2
      app/src/components/TwoFA/use2FAModal.ts
  44. 2 2
      app/src/composables/useSSE.ts
  45. 2 2
      app/src/layouts/BaseLayout.vue
  46. 4 4
      app/src/layouts/HeaderLayout.vue
  47. 1 1
      app/src/layouts/SideBar.vue
  48. 2 2
      app/src/lib/http/interceptors.ts
  49. 2 2
      app/src/lib/websocket/index.ts
  50. 1 1
      app/src/main.ts
  51. 1 1
      app/src/routes/index.ts
  52. 1 1
      app/src/routes/modules/environments.ts
  53. 1 1
      app/src/routes/modules/system.ts
  54. 1 1
      app/src/views/certificate/ACMEUser.vue
  55. 2 2
      app/src/views/certificate/CertificateEditor.vue
  56. 1 1
      app/src/views/certificate/CertificateList/Certificate.vue
  57. 2 2
      app/src/views/certificate/CertificateList/certColumns.tsx
  58. 2 2
      app/src/views/certificate/components/ACMEUserSelector.vue
  59. 1 1
      app/src/views/certificate/components/DNSChallenge.vue
  60. 1 1
      app/src/views/certificate/components/RemoveCert.vue
  61. 1 1
      app/src/views/certificate/components/RenewCert.vue
  62. 2 2
      app/src/views/certificate/components/WildcardCertificate.vue
  63. 4 4
      app/src/views/config/ConfigEditor.vue
  64. 1 1
      app/src/views/config/components/ConfigName.vue
  65. 1 1
      app/src/views/config/components/Mkdir.vue
  66. 1 1
      app/src/views/config/components/Rename.vue
  67. 1 1
      app/src/views/config/configColumns.tsx
  68. 2 2
      app/src/views/dashboard/Environments.vue
  69. 1 1
      app/src/views/dashboard/NginxDashBoard.vue
  70. 1 1
      app/src/views/dashboard/ServerAnalytic.vue
  71. 2 2
      app/src/views/dashboard/components/ModulesTable.vue
  72. 1 1
      app/src/views/dashboard/components/NodeAnalyticItem.vue
  73. 1 1
      app/src/views/dashboard/components/ParamsOptimization.vue
  74. 1 1
      app/src/views/dashboard/components/PerformanceTablesCard.vue
  75. 2 2
      app/src/views/environments/list/BatchUpgrader.vue
  76. 1 1
      app/src/views/environments/list/Environment.vue
  77. 2 2
      app/src/views/environments/list/envColumns.tsx
  78. 1 1
      app/src/views/install/components/InstallForm.vue
  79. 1 1
      app/src/views/install/components/InstallView.vue
  80. 2 2
      app/src/views/nginx_log/NginxLog.vue
  81. 1 1
      app/src/views/nginx_log/NginxLogList.vue
  82. 1 1
      app/src/views/notification/Notification.vue
  83. 1 1
      app/src/views/notification/notificationColumns.tsx
  84. 3 3
      app/src/views/other/Login.vue
  85. 2 2
      app/src/views/preference/components/AuthSettings/AddPasskey.vue
  86. 4 4
      app/src/views/preference/components/AuthSettings/Passkey.vue
  87. 2 2
      app/src/views/preference/components/AuthSettings/RecoveryCodes.vue
  88. 3 3
      app/src/views/preference/components/AuthSettings/TOTP.vue
  89. 1 1
      app/src/views/preference/components/ExternalNotify/ExternalNotifyEditor.vue
  90. 2 2
      app/src/views/preference/store/index.ts
  91. 3 3
      app/src/views/preference/tabs/AuthSettings.vue
  92. 1 1
      app/src/views/site/components/SiteStatusSegmented.vue
  93. 1 1
      app/src/views/site/site_add/SiteAdd.vue
  94. 1 1
      app/src/views/site/site_edit/components/Cert/IssueCert.vue
  95. 1 1
      app/src/views/site/site_edit/components/Cert/ObtainCert.vue
  96. 1 1
      app/src/views/site/site_edit/components/Cert/ObtainCertLive.vue
  97. 1 1
      app/src/views/site/site_edit/components/ConfigName/ConfigName.vue
  98. 1 1
      app/src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue
  99. 1 1
      app/src/views/site/site_edit/components/ConfigTemplate/TemplateFormItem.vue
  100. 1 1
      app/src/views/site/site_edit/components/ConfigTemplate/store.ts

+ 2 - 2
app/package.json

@@ -56,7 +56,7 @@
     "vuedraggable": "^4.1.0"
   },
   "devDependencies": {
-    "@antfu/eslint-config": "^4.13.0",
+    "@antfu/eslint-config": "^4.13.1",
     "@iconify-json/fa": "1.2.1",
     "@iconify-json/tabler": "^1.2.17",
     "@iconify/tools": "^4.1.2",
@@ -72,7 +72,7 @@
     "@vue/tsconfig": "^0.7.0",
     "ace-builds": "^1.41.0",
     "autoprefixer": "^10.4.21",
-    "eslint": "9.26.0",
+    "eslint": "^9.27.0",
     "eslint-plugin-sonarjs": "^3.0.2",
     "less": "^4.3.0",
     "postcss": "^8.5.3",

Разница между файлами не показана из-за своего большого размера
+ 175 - 297
app/pnpm-lock.yaml


+ 3 - 3
app/src/App.vue

@@ -1,11 +1,11 @@
 <script setup lang="ts">
-import loadTranslations from '@/api/translations'
-import gettext from '@/gettext'
-import { useSettingsStore, useUserStore } from '@/pinia'
 import { theme } from 'ant-design-vue'
 import en_US from 'ant-design-vue/es/locale/en_US'
 import zh_CN from 'ant-design-vue/es/locale/zh_CN'
 import zh_TW from 'ant-design-vue/es/locale/zh_TW'
+import loadTranslations from '@/api/translations'
+import gettext from '@/gettext'
+import { useSettingsStore, useUserStore } from '@/pinia'
 
 const route = useRoute()
 const router = useRouter()

+ 1 - 1
app/src/api/cert.ts

@@ -1,8 +1,8 @@
+import type { AutoCertChallengeMethod } from './auto_cert'
 import type { AcmeUser } from '@/api/acme_user'
 import type { ModelBase } from '@/api/curd'
 import type { DnsCredential } from '@/api/dns_credential'
 import type { PrivateKeyType } from '@/constants'
-import type { AutoCertChallengeMethod } from './auto_cert'
 import Curd from '@/api/curd'
 
 export interface Cert extends ModelBase {

+ 1 - 1
app/src/api/passkey.ts

@@ -1,5 +1,5 @@
-import type { ModelBase } from '@/api/curd'
 import type { RegistrationResponseJSON } from '@simplewebauthn/browser'
+import type { ModelBase } from '@/api/curd'
 import http from '@/lib/http'
 
 export interface Passkey extends ModelBase {

+ 1 - 1
app/src/api/stream.ts

@@ -1,6 +1,6 @@
+import type { EnvGroup } from './env_group'
 import type { NgxConfig } from '@/api/ngx'
 import type { ChatComplicationMessage } from '@/api/openai'
-import type { EnvGroup } from './env_group'
 import Curd from '@/api/curd'
 import http from '@/lib/http'
 

+ 1 - 1
app/src/components/AutoCertForm/DNSChallenge.vue

@@ -1,7 +1,7 @@
 <script setup lang="ts">
-import type { AutoCertOptions, DNSProvider } from '@/api/auto_cert'
 import type { SelectProps } from 'ant-design-vue'
 import type { Ref } from 'vue'
+import type { AutoCertOptions, DNSProvider } from '@/api/auto_cert'
 import auto_cert from '@/api/auto_cert'
 import dns_credential from '@/api/dns_credential'
 

+ 2 - 2
app/src/components/Chart/AreaChart.vue

@@ -1,9 +1,9 @@
 <script setup lang="ts">
-import type { Series } from '@/components/Chart/types'
 import type { Ref } from 'vue'
-import { useSettingsStore } from '@/pinia'
+import type { Series } from '@/components/Chart/types'
 import { storeToRefs } from 'pinia'
 import VueApexCharts from 'vue3-apexcharts'
+import { useSettingsStore } from '@/pinia'
 
 const { series, max, yFormatter } = defineProps<{
   series: Series[]

+ 1 - 1
app/src/components/Chart/RadialBarChart.vue

@@ -1,9 +1,9 @@
 <script setup lang="ts">
 import type { Series } from '@/components/Chart/types'
 
-import { useSettingsStore } from '@/pinia'
 import { storeToRefs } from 'pinia'
 import VueApexCharts from 'vue3-apexcharts'
+import { useSettingsStore } from '@/pinia'
 
 const props = defineProps<{
   series: Series[] | number[]

+ 5 - 5
app/src/components/ChatGPT/ChatGPT.vue

@@ -1,16 +1,16 @@
 <script setup lang="ts">
 import type { ChatComplicationMessage } from '@/api/openai'
-import openai from '@/api/openai'
-import ChatGPT_logo from '@/assets/svg/ChatGPT_logo.svg?component'
-import { urlJoin } from '@/lib/helper'
-import { useSettingsStore, useUserStore } from '@/pinia'
 import Icon, { SendOutlined } from '@ant-design/icons-vue'
 import hljs from 'highlight.js'
 import nginx from 'highlight.js/lib/languages/nginx'
-
 import { Marked } from 'marked'
 import { markedHighlight } from 'marked-highlight'
 import { storeToRefs } from 'pinia'
+import openai from '@/api/openai'
+
+import ChatGPT_logo from '@/assets/svg/ChatGPT_logo.svg?component'
+import { urlJoin } from '@/lib/helper'
+import { useSettingsStore, useUserStore } from '@/pinia'
 import 'highlight.js/styles/vs2015.css'
 
 const props = defineProps<{

+ 1 - 1
app/src/components/CodeEditor/CodeCompletion.ts

@@ -1,8 +1,8 @@
 import type { Editor } from 'ace-builds'
 import type { Point } from 'ace-builds-internal/document'
-import openai from '@/api/openai'
 import { debounce } from 'lodash'
 import { v4 as uuidv4 } from 'uuid'
+import openai from '@/api/openai'
 
 // eslint-disable-next-line ts/no-explicit-any
 function debug(...args: any[]) {

+ 3 - 3
app/src/components/ConfigHistory/ConfigHistory.vue

@@ -1,11 +1,11 @@
 <script setup lang="ts">
+import type { Key } from 'ant-design-vue/es/_util/type'
 import type { ConfigBackup } from '@/api/config'
 import type { GetListResponse } from '@/api/curd'
-import type { Key } from 'ant-design-vue/es/_util/type'
-import config from '@/api/config'
-import StdPagination from '@/components/StdDesign/StdDataDisplay/StdPagination.vue'
 import { message } from 'ant-design-vue'
 import { defineAsyncComponent } from 'vue'
+import config from '@/api/config'
+import StdPagination from '@/components/StdDesign/StdDataDisplay/StdPagination.vue'
 import { datetime } from '../StdDesign/StdDataDisplay/StdTableTransformer'
 
 // Define props for the component

+ 2 - 2
app/src/components/ConfigHistory/DiffViewer.vue

@@ -1,10 +1,10 @@
 <script setup lang="ts">
-import type { ConfigBackup } from '@/api/config'
 import type { Ace } from 'ace-builds'
-import { formatDateTime } from '@/lib/helper'
+import type { ConfigBackup } from '@/api/config'
 import ace from 'ace-builds'
 // Import required modules
 import extLanguageToolsUrl from 'ace-builds/src-min-noconflict/ext-language_tools?url'
+import { formatDateTime } from '@/lib/helper'
 import 'ace-builds/src-noconflict/mode-nginx'
 
 import 'ace-builds/src-noconflict/theme-monokai'

+ 1 - 1
app/src/components/EnvGroupTabs/EnvGroupTabs.vue

@@ -1,9 +1,9 @@
 <script setup lang="ts">
 import type { EnvGroup } from '@/api/env_group'
 import type { Environment } from '@/api/environment'
+import { message } from 'ant-design-vue'
 import nodeApi from '@/api/node'
 import { useSSE } from '@/composables/useSSE'
-import { message } from 'ant-design-vue'
 
 const props = defineProps<{
   envGroups: EnvGroup[]

+ 1 - 1
app/src/components/EnvIndicator/EnvIndicator.vue

@@ -1,8 +1,8 @@
 <script setup lang="ts">
-import { useSettingsStore } from '@/pinia'
 import { CloseOutlined, DashboardOutlined, DatabaseOutlined } from '@ant-design/icons-vue'
 import { storeToRefs } from 'pinia'
 import { useRouter } from 'vue-router'
+import { useSettingsStore } from '@/pinia'
 
 const settingsStore = useSettingsStore()
 

+ 2 - 2
app/src/components/NginxControl/NginxControl.vue

@@ -1,10 +1,10 @@
 <script setup lang="ts">
+import { ReloadOutlined } from '@ant-design/icons-vue'
+import { message } from 'ant-design-vue'
 import ngx from '@/api/ngx'
 import { NginxStatus } from '@/constants'
 import { useGlobalStore } from '@/pinia'
 import { logLevel } from '@/views/config/constants'
-import { ReloadOutlined } from '@ant-design/icons-vue'
-import { message } from 'ant-design-vue'
 
 const global = useGlobalStore()
 const { nginxStatus: status } = storeToRefs(global)

+ 1 - 1
app/src/components/NgxConfigEditor/LocationEditor.vue

@@ -1,9 +1,9 @@
 <script setup lang="ts">
 import type { NgxLocation } from '@/api/ngx'
-import CodeEditor from '@/components/CodeEditor'
 import { CopyOutlined, DeleteOutlined, HolderOutlined } from '@ant-design/icons-vue'
 import { cloneDeep } from 'lodash'
 import Draggable from 'vuedraggable'
+import CodeEditor from '@/components/CodeEditor'
 
 defineProps<{
   readonly?: boolean

+ 2 - 2
app/src/components/NgxConfigEditor/NgxUpstream.vue

@@ -1,11 +1,11 @@
 <script setup lang="ts">
+import type ReconnectingWebSocket from 'reconnecting-websocket'
 import type { NgxDirective } from '@/api/ngx'
 import type { UpstreamStatus } from '@/api/upstream'
-import type ReconnectingWebSocket from 'reconnecting-websocket'
-import upstream from '@/api/upstream'
 import { MoreOutlined, PlusOutlined } from '@ant-design/icons-vue'
 import { Modal } from 'ant-design-vue'
 import { throttle } from 'lodash'
+import upstream from '@/api/upstream'
 import { DirectiveEditor, Server, useNgxConfigStore } from '.'
 
 const [modal, ContextHolder] = Modal.useModal()

+ 1 - 1
app/src/components/NgxConfigEditor/directive/DirectiveAdd.vue

@@ -1,6 +1,6 @@
 <script setup lang="ts">
-import CodeEditor from '@/components/CodeEditor'
 import { DeleteOutlined } from '@ant-design/icons-vue'
+import CodeEditor from '@/components/CodeEditor'
 import { MultiLineDirective, SingleLineDirective } from '.'
 import { useDirectiveStore } from './store'
 

+ 2 - 2
app/src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue

@@ -1,9 +1,9 @@
 <script setup lang="ts">
 import type { NgxDirective } from '@/api/ngx'
-import config from '@/api/config'
-import CodeEditor from '@/components/CodeEditor'
 import { DeleteOutlined, HolderOutlined, InfoCircleOutlined } from '@ant-design/icons-vue'
 import { message } from 'ant-design-vue'
+import config from '@/api/config'
+import CodeEditor from '@/components/CodeEditor'
 import { Include } from '..'
 import DirectiveDocuments from './DirectiveDocuments.vue'
 import { useDirectiveStore } from './store'

+ 2 - 2
app/src/components/NodeSelector/NodeSelector.vue

@@ -1,8 +1,8 @@
 <script setup lang="ts">
-import type { Environment } from '@/api/environment'
 import type { SSEvent } from 'sse.js'
-import { useUserStore } from '@/pinia'
+import type { Environment } from '@/api/environment'
 import { SSE } from 'sse.js'
+import { useUserStore } from '@/pinia'
 
 const props = defineProps<{
   hiddenLocal?: boolean

+ 5 - 5
app/src/components/Notification/Notification.vue

@@ -1,16 +1,16 @@
 <script setup lang="ts">
+import type { Ref } from 'vue'
 import type { Notification } from '@/api/notification'
 import type { CustomRender } from '@/components/StdDesign/StdDataDisplay/StdTableTransformer'
-import type { Ref } from 'vue'
+import { BellOutlined, CheckCircleOutlined, CloseCircleOutlined, DeleteOutlined, InfoCircleOutlined, WarningOutlined } from '@ant-design/icons-vue'
+import { message, notification } from 'ant-design-vue'
+import dayjs from 'dayjs'
+import relativeTime from 'dayjs/plugin/relativeTime'
 import notificationApi from '@/api/notification'
 import { detailRender } from '@/components/Notification/detailRender'
 import { useSSE } from '@/composables/useSSE'
 import { NotificationTypeT } from '@/constants'
 import { useUserStore } from '@/pinia'
-import { BellOutlined, CheckCircleOutlined, CloseCircleOutlined, DeleteOutlined, InfoCircleOutlined, WarningOutlined } from '@ant-design/icons-vue'
-import { message, notification } from 'ant-design-vue'
-import dayjs from 'dayjs'
-import relativeTime from 'dayjs/plugin/relativeTime'
 import notifications from './notifications'
 
 defineProps<{

+ 1 - 1
app/src/components/ProcessingStatus/ProcessingStatus.vue

@@ -1,7 +1,7 @@
 <script setup lang="tsx">
+import { SyncOutlined } from '@ant-design/icons-vue'
 import { useSSE } from '@/composables/useSSE'
 import { useGlobalStore } from '@/pinia'
-import { SyncOutlined } from '@ant-design/icons-vue'
 
 const { connect } = useSSE()
 

+ 1 - 1
app/src/components/SelfCheck/store.ts

@@ -1,6 +1,6 @@
 import type { TaskReport } from './tasks'
-import selfCheck, { ReportStatus } from '@/api/self_check'
 import { debounce } from 'lodash'
+import selfCheck, { ReportStatus } from '@/api/self_check'
 import frontendTasks from './tasks/frontend'
 
 export const useSelfCheckStore = defineStore('selfCheck', () => {

+ 1 - 1
app/src/components/SelfCheck/tasks/frontend/https-check.ts

@@ -1,5 +1,5 @@
-import type { ReportStatusType } from '@/api/self_check'
 import type { FrontendTask } from '../types'
+import type { ReportStatusType } from '@/api/self_check'
 import { ReportStatus } from '@/api/self_check'
 
 /**

+ 1 - 1
app/src/components/SelfCheck/tasks/frontend/sse.ts

@@ -1,5 +1,5 @@
-import type { ReportStatusType } from '@/api/self_check'
 import type { FrontendTask } from '../types'
+import type { ReportStatusType } from '@/api/self_check'
 import { ReportStatus } from '@/api/self_check'
 import { useSSE } from '@/composables/useSSE'
 

+ 1 - 1
app/src/components/SelfCheck/tasks/frontend/websocket.ts

@@ -1,5 +1,5 @@
-import type { ReportStatusType } from '@/api/self_check'
 import type { FrontendTask } from '../types'
+import type { ReportStatusType } from '@/api/self_check'
 import selfCheck, { ReportStatus } from '@/api/self_check'
 
 /**

+ 1 - 1
app/src/components/SetLanguage/SetLanguage.vue

@@ -1,8 +1,8 @@
 <script setup lang="ts">
+import dayjs from 'dayjs'
 import loadTranslations from '@/api/translations'
 import gettext from '@/gettext'
 import { useSettingsStore } from '@/pinia'
-import dayjs from 'dayjs'
 
 import 'dayjs/locale/fr'
 import 'dayjs/locale/ja'

+ 1 - 1
app/src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue

@@ -1,9 +1,9 @@
 <script setup lang="ts">
 import type Curd from '@/api/curd'
 import type { Column } from '@/components/StdDesign/types'
+import { message } from 'ant-design-vue'
 import { getPithyColumns } from '@/components/StdDesign/StdDataDisplay/methods/columns'
 import StdDataEntry from '@/components/StdDesign/StdDataEntry'
-import { message } from 'ant-design-vue'
 
 const props = defineProps<{
   // eslint-disable-next-line ts/no-explicit-any

+ 2 - 2
app/src/components/StdDesign/StdDataDisplay/StdCurd.vue

@@ -1,11 +1,11 @@
 <script setup lang="ts" generic="T=any">
+import type { ComputedRef } from 'vue'
 import type { StdCurdProps, StdTableProps } from '@/components/StdDesign/StdDataDisplay/types'
 import type { Column } from '@/components/StdDesign/types'
-import type { ComputedRef } from 'vue'
+import { message } from 'ant-design-vue'
 import StdBatchEdit from '@/components/StdDesign/StdDataDisplay/StdBatchEdit.vue'
 import StdCurdDetail from '@/components/StdDesign/StdDataDisplay/StdCurdDetail.vue'
 import StdDataEntry from '@/components/StdDesign/StdDataEntry'
-import { message } from 'ant-design-vue'
 import StdTable from './StdTable.vue'
 
 const props = defineProps<StdTableProps<T> & StdCurdProps<T>>()

+ 2 - 2
app/src/components/StdDesign/StdDataDisplay/StdCurdDetail.vue

@@ -1,9 +1,9 @@
 <script setup lang="ts">
-import type { Column } from '@/components/StdDesign/types'
 import type { ComputedRef } from 'vue'
+import type { Column } from '@/components/StdDesign/types'
+import { get } from 'lodash'
 import { CustomRender } from '@/components/StdDesign/StdDataDisplay/components/CustomRender'
 import { labelRender } from '@/components/StdDesign/StdDataEntry'
-import { get } from 'lodash'
 
 const props = defineProps<{
   columns: Column[]

+ 6 - 6
app/src/components/StdDesign/StdDataDisplay/StdTable.vue

@@ -1,20 +1,20 @@
 <script setup lang="ts" generic="T=any">
-import type { GetListResponse, Pagination } from '@/api/curd'
-import type { StdTableProps } from '@/components/StdDesign/StdDataDisplay/types'
-import type { Column } from '@/components/StdDesign/types'
 import type { TableProps } from 'ant-design-vue'
 import type { Key } from 'ant-design-vue/es/_util/type'
 import type { FilterValue } from 'ant-design-vue/es/table/interface'
 import type { SorterResult, TablePaginationConfig } from 'ant-design-vue/lib/table/interface'
 import type { ComputedRef, Ref } from 'vue'
 import type { RouteParams } from 'vue-router'
+import type { GetListResponse, Pagination } from '@/api/curd'
+import type { StdTableProps } from '@/components/StdDesign/StdDataDisplay/types'
+import type { Column } from '@/components/StdDesign/types'
+import { HolderOutlined } from '@ant-design/icons-vue'
+import { message } from 'ant-design-vue'
+import { debounce } from 'lodash'
 import { getPithyColumns } from '@/components/StdDesign/StdDataDisplay/methods/columns'
 import useSortable from '@/components/StdDesign/StdDataDisplay/methods/sortable'
 import StdBulkActions from '@/components/StdDesign/StdDataDisplay/StdBulkActions.vue'
 import StdDataEntry, { labelRender } from '@/components/StdDesign/StdDataEntry'
-import { HolderOutlined } from '@ant-design/icons-vue'
-import { message } from 'ant-design-vue'
-import { debounce } from 'lodash'
 import StdPagination from './StdPagination.vue'
 
 const props = withDefaults(defineProps<StdTableProps<T>>(), {

+ 2 - 2
app/src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts

@@ -1,9 +1,9 @@
+import type { ComputedRef } from 'vue'
 import type { StdTableProps } from '@/components/StdDesign/StdDataDisplay/types'
 import type { Column, StdTableResponse } from '@/components/StdDesign/types'
-import type { ComputedRef } from 'vue'
-import { downloadCsv } from '@/lib/helper'
 import dayjs from 'dayjs'
 import { get, set } from 'lodash'
+import { downloadCsv } from '@/lib/helper'
 
 async function exportCsv(props: StdTableProps, pithyColumns: ComputedRef<Column[]>) {
   const header: { title?: string, key: Column['dataIndex'] }[] = []

+ 1 - 1
app/src/components/StdDesign/StdDataDisplay/methods/sortable.ts

@@ -1,6 +1,6 @@
-import type { StdTableProps } from '@/components/StdDesign/StdDataDisplay/types'
 import type { Key } from 'ant-design-vue/es/_util/type'
 import type { Ref } from 'vue'
+import type { StdTableProps } from '@/components/StdDesign/StdDataDisplay/types'
 import { message } from 'ant-design-vue'
 import sortable from 'sortablejs'
 

+ 2 - 2
app/src/components/StdDesign/StdDataEntry/StdDataEntry.vue

@@ -1,10 +1,10 @@
 <script setup lang="tsx">
-import type { Column, JSXElements, StdDesignEdit } from '@/components/StdDesign/types'
 import type { FormInstance } from 'ant-design-vue'
 import type { Ref } from 'vue'
+import type { Column, JSXElements, StdDesignEdit } from '@/components/StdDesign/types'
+import { Form } from 'ant-design-vue'
 import { labelRender } from '@/components/StdDesign/StdDataEntry'
 import StdFormItem from '@/components/StdDesign/StdDataEntry/StdFormItem.vue'
-import { Form } from 'ant-design-vue'
 
 const props = defineProps<{
   dataList: Column[]

+ 1 - 1
app/src/components/StdDesign/StdDataEntry/StdFormItem.vue

@@ -1,6 +1,6 @@
 <script setup lang="ts">
-import type { Column } from '@/components/StdDesign/types'
 import type { Rule } from 'ant-design-vue/es/form'
+import type { Column } from '@/components/StdDesign/types'
 import FormErrors from '@/constants/form_errors'
 
 const props = defineProps<Props>()

+ 1 - 1
app/src/components/StdDesign/StdDataEntry/components/StdSelector.vue

@@ -1,10 +1,10 @@
 <script setup lang="ts">
 import type Curd from '@/api/curd'
 import type { Column } from '@/components/StdDesign/types'
-import StdTable from '@/components/StdDesign/StdDataDisplay/StdTable.vue'
 import { CloseCircleFilled } from '@ant-design/icons-vue'
 import { watchOnce } from '@vueuse/core'
 import { clone } from 'lodash'
+import StdTable from '@/components/StdDesign/StdDataDisplay/StdTable.vue'
 
 const props = defineProps<{
   placeholder?: string

+ 2 - 2
app/src/components/StdDesign/StdDataEntry/index.tsx

@@ -1,6 +1,5 @@
-import type { StdDesignEdit } from '@/components/StdDesign/types'
 import type { Dayjs } from 'dayjs'
-import { DATE_FORMAT } from '@/constants'
+import type { StdDesignEdit } from '@/components/StdDesign/types'
 import {
   DatePicker,
   Input,
@@ -10,6 +9,7 @@ import {
 } from 'ant-design-vue'
 import dayjs from 'dayjs'
 import { h } from 'vue'
+import { DATE_FORMAT } from '@/constants'
 import StdPassword from './components/StdPassword.vue'
 import StdSelect from './components/StdSelect.vue'
 import StdSelector from './components/StdSelector.vue'

+ 4 - 4
app/src/components/StdDesign/StdDetail/StdDetail.vue

@@ -1,14 +1,14 @@
 <script setup lang="ts" generic="T extends ModelBase">
+import type { ButtonProps, FormInstance } from 'ant-design-vue'
+import type { DataIndex } from 'ant-design-vue/es/vc-table/interface'
 import type { ModelBase } from '@/api/curd'
 import type Curd from '@/api/curd'
 import type { Column, StdDesignEdit } from '@/components/StdDesign/types'
-import type { ButtonProps, FormInstance } from 'ant-design-vue'
-import type { DataIndex } from 'ant-design-vue/es/vc-table/interface'
-import { labelRender } from '@/components/StdDesign/StdDataEntry'
 import { message } from 'ant-design-vue'
-
 import { cloneDeep, get } from 'lodash'
 
+import { labelRender } from '@/components/StdDesign/StdDataEntry'
+
 const props = defineProps<{
   title?: string
   dataSource?: T

+ 3 - 3
app/src/components/StdDesign/types.d.ts

@@ -1,11 +1,11 @@
 /* eslint-disable ts/no-explicit-any */
 
-import type { Pagination } from '@/api/curd'
-import type Curd from '@/api/curd'
-
 import type { TableColumnType } from 'ant-design-vue'
 import type { RuleObject } from 'ant-design-vue/es/form'
+
 import type { JSX } from 'vue/jsx'
+import type { Pagination } from '@/api/curd'
+import type Curd from '@/api/curd'
 
 export type JSXElements = JSX.Element[]
 

+ 2 - 2
app/src/components/SystemRestore/SystemRestoreContent.vue

@@ -1,9 +1,9 @@
 <script setup lang="ts">
-import type { RestoreOptions, RestoreResponse } from '@/api/backup'
 import type { UploadFile } from 'ant-design-vue'
-import backup from '@/api/backup'
+import type { RestoreOptions, RestoreResponse } from '@/api/backup'
 import { InboxOutlined } from '@ant-design/icons-vue'
 import { message } from 'ant-design-vue'
+import backup from '@/api/backup'
 
 // Define props using TypeScript interface
 interface SystemRestoreProps {

+ 2 - 2
app/src/components/TwoFA/Authorization.vue

@@ -1,10 +1,10 @@
 <script setup lang="ts">
 import type { TwoFAStatus } from '@/api/2fa'
+import { KeyOutlined } from '@ant-design/icons-vue'
+import { startAuthentication } from '@simplewebauthn/browser'
 import twoFA from '@/api/2fa'
 import OTPInput from '@/components/OTPInput/OTPInput.vue'
 import { useUserStore } from '@/pinia'
-import { KeyOutlined } from '@ant-design/icons-vue'
-import { startAuthentication } from '@simplewebauthn/browser'
 
 defineProps<{
   twoFAStatus: TwoFAStatus

+ 2 - 2
app/src/components/TwoFA/use2FAModal.ts

@@ -1,8 +1,8 @@
+import { message, Modal } from 'ant-design-vue'
+import { createVNode, render } from 'vue'
 import twoFA from '@/api/2fa'
 import Authorization from '@/components/TwoFA/Authorization.vue'
 import { useUserStore } from '@/pinia'
-import { message, Modal } from 'ant-design-vue'
-import { createVNode, render } from 'vue'
 
 function use2FAModal() {
   const refOTPAuthorization = ref<typeof Authorization>()

+ 2 - 2
app/src/composables/useSSE.ts

@@ -1,8 +1,8 @@
 import type { SSEvent } from 'sse.js'
-import { urlJoin } from '@/lib/helper'
-import { useSettingsStore, useUserStore } from '@/pinia'
 import { storeToRefs } from 'pinia'
 import { SSE } from 'sse.js'
+import { urlJoin } from '@/lib/helper'
+import { useSettingsStore, useUserStore } from '@/pinia'
 
 const userStore = useUserStore()
 const { token } = storeToRefs(userStore)

+ 2 - 2
app/src/layouts/BaseLayout.vue

@@ -1,9 +1,9 @@
 <script setup lang="ts">
+import { throttle } from 'lodash'
+import { storeToRefs } from 'pinia'
 import settings from '@/api/settings'
 import PageHeader from '@/components/PageHeader/PageHeader.vue'
 import { useSettingsStore, useUserStore } from '@/pinia'
-import { throttle } from 'lodash'
-import { storeToRefs } from 'pinia'
 import FooterLayout from './FooterLayout.vue'
 import HeaderLayout from './HeaderLayout.vue'
 import SideBar from './SideBar.vue'

+ 4 - 4
app/src/layouts/HeaderLayout.vue

@@ -1,4 +1,8 @@
 <script setup lang="ts">
+import { DesktopOutlined, HomeOutlined, LogoutOutlined, MenuUnfoldOutlined } from '@ant-design/icons-vue'
+import { useElementSize } from '@vueuse/core'
+import { message } from 'ant-design-vue'
+import { useRouter } from 'vue-router'
 import auth from '@/api/auth'
 import NginxControl from '@/components/NginxControl'
 import Notification from '@/components/Notification'
@@ -6,10 +10,6 @@ import ProcessingStatus from '@/components/ProcessingStatus'
 import { SelfCheckHeaderBanner } from '@/components/SelfCheck'
 import SetLanguage from '@/components/SetLanguage'
 import SwitchAppearance from '@/components/SwitchAppearance'
-import { DesktopOutlined, HomeOutlined, LogoutOutlined, MenuUnfoldOutlined } from '@ant-design/icons-vue'
-import { useElementSize } from '@vueuse/core'
-import { message } from 'ant-design-vue'
-import { useRouter } from 'vue-router'
 
 const emit = defineEmits<{
   clickUnFold: [void]

+ 1 - 1
app/src/layouts/SideBar.vue

@@ -1,8 +1,8 @@
 <script setup lang="ts">
-import type { NgxModule } from '@/api/ngx'
 import type { IconComponentProps } from '@ant-design/icons-vue/es/components/Icon'
 import type { AntdIconType } from '@ant-design/icons-vue/lib/components/AntdIcon'
 import type { Key } from 'ant-design-vue/es/_util/type'
+import type { NgxModule } from '@/api/ngx'
 import ngx from '@/api/ngx'
 import EnvIndicator from '@/components/EnvIndicator'
 import Logo from '@/components/Logo'

+ 2 - 2
app/src/lib/http/interceptors.ts

@@ -1,10 +1,10 @@
 import type { CosyError } from './types'
+import JSEncrypt from 'jsencrypt'
+import { storeToRefs } from 'pinia'
 import use2FAModal from '@/components/TwoFA/use2FAModal'
 import { useNProgress } from '@/lib/nprogress/nprogress'
 import { useSettingsStore, useUserStore } from '@/pinia'
 import router from '@/routes'
-import JSEncrypt from 'jsencrypt'
-import { storeToRefs } from 'pinia'
 import { http, instance } from './client'
 import { handleApiError, useMessageDedupe } from './error'
 

+ 2 - 2
app/src/lib/websocket/index.ts

@@ -1,7 +1,7 @@
-import { urlJoin } from '@/lib/helper'
-import { useSettingsStore, useUserStore } from '@/pinia'
 import { storeToRefs } from 'pinia'
 import ReconnectingWebSocket from 'reconnecting-websocket'
+import { urlJoin } from '@/lib/helper'
+import { useSettingsStore, useUserStore } from '@/pinia'
 
 function ws(url: string, reconnect: boolean = true): ReconnectingWebSocket | WebSocket {
   const user = useUserStore()

+ 1 - 1
app/src/main.ts

@@ -1,9 +1,9 @@
-import { useSettingsStore } from '@/pinia'
 import { autoAnimatePlugin } from '@formkit/auto-animate/vue'
 import { createPinia } from 'pinia'
 import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
 import { createApp } from 'vue'
 import VueDOMPurifyHTML from 'vue-dompurify-html'
+import { useSettingsStore } from '@/pinia'
 import App from './App.vue'
 import gettext from './gettext'
 import router from './routes'

+ 1 - 1
app/src/routes/index.ts

@@ -1,7 +1,7 @@
 import type { RouteRecordRaw } from 'vue-router'
+import { createRouter, createWebHashHistory } from 'vue-router'
 import { useNProgress } from '@/lib/nprogress/nprogress'
 import { useUserStore } from '@/pinia'
-import { createRouter, createWebHashHistory } from 'vue-router'
 import { authRoutes } from './modules/auth'
 
 import { certificatesRoutes } from './modules/certificates'

+ 1 - 1
app/src/routes/modules/environments.ts

@@ -1,6 +1,6 @@
 import type { RouteRecordRaw } from 'vue-router'
-import { useSettingsStore } from '@/pinia'
 import { DatabaseOutlined } from '@ant-design/icons-vue'
+import { useSettingsStore } from '@/pinia'
 
 export const environmentsRoutes: RouteRecordRaw[] = [
   {

+ 1 - 1
app/src/routes/modules/system.ts

@@ -1,6 +1,6 @@
 import type { RouteRecordRaw } from 'vue-router'
-import { useSettingsStore } from '@/pinia'
 import { InfoCircleOutlined } from '@ant-design/icons-vue'
+import { useSettingsStore } from '@/pinia'
 
 export const systemRoutes: RouteRecordRaw[] = [
   {

+ 1 - 1
app/src/views/certificate/ACMEUser.vue

@@ -2,11 +2,11 @@
 import type { AcmeUser } from '@/api/acme_user'
 import type { CustomRender } from '@/components/StdDesign/StdDataDisplay/StdTableTransformer'
 import type { Column } from '@/components/StdDesign/types'
+import { message, Tag } from 'ant-design-vue'
 import acme_user from '@/api/acme_user'
 import { StdCurd } from '@/components/StdDesign/StdDataDisplay'
 import { datetime } from '@/components/StdDesign/StdDataDisplay/StdTableTransformer'
 import { input, switcher } from '@/components/StdDesign/StdDataEntry'
-import { message, Tag } from 'ant-design-vue'
 
 const columns: Column[] = [
   {

+ 2 - 2
app/src/views/certificate/CertificateEditor.vue

@@ -1,6 +1,7 @@
 <script setup lang="ts">
-import type { Cert } from '@/api/cert'
 import type { Ref } from 'vue'
+import type { Cert } from '@/api/cert'
+import { message } from 'ant-design-vue'
 import cert from '@/api/cert'
 import AutoCertForm from '@/components/AutoCertForm'
 import CertInfo from '@/components/CertInfo'
@@ -8,7 +9,6 @@ import CodeEditor from '@/components/CodeEditor'
 import FooterToolBar from '@/components/FooterToolbar'
 import NodeSelector from '@/components/NodeSelector'
 import { AutoCertState } from '@/constants'
-import { message } from 'ant-design-vue'
 import RenewCert from './components/RenewCert.vue'
 
 const route = useRoute()

+ 1 - 1
app/src/views/certificate/CertificateList/Certificate.vue

@@ -1,8 +1,8 @@
 <script setup lang="tsx">
+import { CloudUploadOutlined, SafetyCertificateOutlined } from '@ant-design/icons-vue'
 import cert from '@/api/cert'
 import StdTable from '@/components/StdDesign/StdDataDisplay/StdTable.vue'
 import { useGlobalStore } from '@/pinia'
-import { CloudUploadOutlined, SafetyCertificateOutlined } from '@ant-design/icons-vue'
 import RemoveCert from '../components/RemoveCert.vue'
 import WildcardCertificate from '../components/WildcardCertificate.vue'
 import certColumns from './certColumns'

+ 2 - 2
app/src/views/certificate/CertificateList/certColumns.tsx

@@ -1,10 +1,10 @@
 import type { CustomRender } from '@/components/StdDesign/StdDataDisplay/StdTableTransformer'
 import type { Column, JSXElements } from '@/components/StdDesign/types'
+import { Badge, Tag } from 'ant-design-vue'
+import dayjs from 'dayjs'
 import { datetime, mask } from '@/components/StdDesign/StdDataDisplay/StdTableTransformer'
 import { input } from '@/components/StdDesign/StdDataEntry'
 import { PrivateKeyTypeMask } from '@/constants'
-import { Badge, Tag } from 'ant-design-vue'
-import dayjs from 'dayjs'
 
 const columns: Column[] = [{
   title: () => $gettext('Name'),

+ 2 - 2
app/src/views/certificate/components/ACMEUserSelector.vue

@@ -1,8 +1,8 @@
 <script setup lang="ts">
-import type { AcmeUser } from '@/api/acme_user'
-import type { AutoCertOptions } from '@/api/auto_cert'
 import type { SelectProps } from 'ant-design-vue'
 import type { Ref } from 'vue'
+import type { AcmeUser } from '@/api/acme_user'
+import type { AutoCertOptions } from '@/api/auto_cert'
 import acme_user from '@/api/acme_user'
 
 const users = ref([]) as Ref<AcmeUser[]>

+ 1 - 1
app/src/views/certificate/components/DNSChallenge.vue

@@ -1,7 +1,7 @@
 <script setup lang="ts">
-import type { DNSProvider } from '@/api/auto_cert'
 import type { SelectProps } from 'ant-design-vue'
 import type { Ref } from 'vue'
+import type { DNSProvider } from '@/api/auto_cert'
 import auto_cert from '@/api/auto_cert'
 
 const providers = ref([]) as Ref<DNSProvider[]>

+ 1 - 1
app/src/views/certificate/components/RemoveCert.vue

@@ -1,7 +1,7 @@
 <script setup lang="ts">
+import { message } from 'ant-design-vue'
 import cert from '@/api/cert'
 import websocket from '@/lib/websocket'
-import { message } from 'ant-design-vue'
 
 const props = defineProps<{
   id: number

+ 1 - 1
app/src/views/certificate/components/RenewCert.vue

@@ -1,8 +1,8 @@
 <script setup lang="ts">
 import type { AutoCertOptions } from '@/api/auto_cert'
+import { message } from 'ant-design-vue'
 import { useGlobalStore } from '@/pinia'
 import ObtainCertLive from '@/views/site/site_edit/components/Cert/ObtainCertLive.vue'
-import { message } from 'ant-design-vue'
 
 const props = defineProps<{
   options: AutoCertOptions

+ 2 - 2
app/src/views/certificate/components/WildcardCertificate.vue

@@ -1,9 +1,9 @@
 <script setup lang="ts">
-import type { AutoCertOptions } from '@/api/auto_cert'
 import type { Ref } from 'vue'
+import type { AutoCertOptions } from '@/api/auto_cert'
+import { message } from 'ant-design-vue'
 import AutoCertForm from '@/components/AutoCertForm/AutoCertForm.vue'
 import ObtainCertLive from '@/views/site/site_edit/components/Cert/ObtainCertLive.vue'
-import { message } from 'ant-design-vue'
 
 const emit = defineEmits<{
   issued: [void]

+ 4 - 4
app/src/views/config/ConfigEditor.vue

@@ -1,7 +1,10 @@
 <script setup lang="ts">
+import type { Ref } from 'vue'
 import type { Config } from '@/api/config'
 import type { ChatComplicationMessage } from '@/api/openai'
-import type { Ref } from 'vue'
+import { HistoryOutlined, InfoCircleOutlined } from '@ant-design/icons-vue'
+import { message } from 'ant-design-vue'
+import { trim, trimEnd } from 'lodash'
 import config from '@/api/config'
 import ngx from '@/api/ngx'
 import ChatGPT from '@/components/ChatGPT/ChatGPT.vue'
@@ -14,9 +17,6 @@ import { formatDateTime } from '@/lib/helper'
 import { useSettingsStore } from '@/pinia'
 import ConfigName from '@/views/config/components/ConfigName.vue'
 import InspectConfig from '@/views/config/InspectConfig.vue'
-import { HistoryOutlined, InfoCircleOutlined } from '@ant-design/icons-vue'
-import { message } from 'ant-design-vue'
-import { trim, trimEnd } from 'lodash'
 
 const settings = useSettingsStore()
 const route = useRoute()

+ 1 - 1
app/src/views/config/components/ConfigName.vue

@@ -1,7 +1,7 @@
 <script setup lang="ts">
+import { message } from 'ant-design-vue'
 import config from '@/api/config'
 import use2FAModal from '@/components/TwoFA/use2FAModal'
-import { message } from 'ant-design-vue'
 
 const props = defineProps<{
   dir?: string

+ 1 - 1
app/src/views/config/components/Mkdir.vue

@@ -1,7 +1,7 @@
 <script setup lang="ts">
+import { message } from 'ant-design-vue'
 import config from '@/api/config'
 import use2FAModal from '@/components/TwoFA/use2FAModal'
-import { message } from 'ant-design-vue'
 
 const emit = defineEmits(['created'])
 const visible = ref(false)

+ 1 - 1
app/src/views/config/components/Rename.vue

@@ -1,8 +1,8 @@
 <script setup lang="ts">
+import { message } from 'ant-design-vue'
 import config from '@/api/config'
 import NodeSelector from '@/components/NodeSelector/NodeSelector.vue'
 import use2FAModal from '@/components/TwoFA/use2FAModal'
-import { message } from 'ant-design-vue'
 
 const emit = defineEmits(['renamed'])
 const visible = ref(false)

+ 1 - 1
app/src/views/config/configColumns.tsx

@@ -1,7 +1,7 @@
 import type { CustomRender } from '@/components/StdDesign/StdDataDisplay/StdTableTransformer'
+import { FileFilled, FolderFilled } from '@ant-design/icons-vue'
 import { datetime } from '@/components/StdDesign/StdDataDisplay/StdTableTransformer'
 import { input } from '@/components/StdDesign/StdDataEntry'
-import { FileFilled, FolderFilled } from '@ant-design/icons-vue'
 
 const configColumns = [{
   title: () => $gettext('Name'),

+ 2 - 2
app/src/views/dashboard/Environments.vue

@@ -1,7 +1,8 @@
 <script setup lang="ts">
-import type { Node } from '@/api/environment'
 import type ReconnectingWebSocket from 'reconnecting-websocket'
 import type { Ref } from 'vue'
+import type { Node } from '@/api/environment'
+import Icon, { LinkOutlined, SendOutlined, ThunderboltOutlined } from '@ant-design/icons-vue'
 import analytic from '@/api/analytic'
 import environment from '@/api/environment'
 import logo from '@/assets/img/logo.png'
@@ -9,7 +10,6 @@ import pulse from '@/assets/svg/pulse.svg?component'
 import { formatDateTime } from '@/lib/helper'
 import { useSettingsStore } from '@/pinia'
 import { version } from '@/version.json'
-import Icon, { LinkOutlined, SendOutlined, ThunderboltOutlined } from '@ant-design/icons-vue'
 import NodeAnalyticItem from './components/NodeAnalyticItem.vue'
 
 const data = ref([]) as Ref<Node[]>

+ 1 - 1
app/src/views/dashboard/NginxDashBoard.vue

@@ -1,10 +1,10 @@
 <script setup lang="ts">
+import { ClockCircleOutlined, ReloadOutlined } from '@ant-design/icons-vue'
 import ngx from '@/api/ngx'
 import { useNginxPerformance } from '@/composables/useNginxPerformance'
 import { useSSE } from '@/composables/useSSE'
 import { NginxStatus } from '@/constants'
 import { useGlobalStore } from '@/pinia'
-import { ClockCircleOutlined, ReloadOutlined } from '@ant-design/icons-vue'
 import ConnectionMetricsCard from './components/ConnectionMetricsCard.vue'
 import ParamsOptimization from './components/ParamsOptimization.vue'
 import PerformanceStatisticsCard from './components/PerformanceStatisticsCard.vue'

+ 1 - 1
app/src/views/dashboard/ServerAnalytic.vue

@@ -1,7 +1,7 @@
 <script setup lang="ts">
+import type ReconnectingWebSocket from 'reconnecting-websocket'
 import type { CPUInfoStat, DiskStat, HostInfoStat, LoadStat, MemStat } from '@/api/analytic'
 import type { Series } from '@/components/Chart/types'
-import type ReconnectingWebSocket from 'reconnecting-websocket'
 import analytic from '@/api/analytic'
 import AreaChart from '@/components/Chart/AreaChart.vue'
 import RadialBarChart from '@/components/Chart/RadialBarChart.vue'

+ 2 - 2
app/src/views/dashboard/components/ModulesTable.vue

@@ -1,10 +1,10 @@
 <script setup lang="tsx">
-import type { CustomRender } from '@/components/StdDesign/StdDataDisplay/StdTableTransformer'
 import type { TableColumnType } from 'ant-design-vue'
 import type { FilterResetProps } from 'ant-design-vue/es/table/interface'
-import { useGlobalStore } from '@/pinia'
+import type { CustomRender } from '@/components/StdDesign/StdDataDisplay/StdTableTransformer'
 import { SearchOutlined } from '@ant-design/icons-vue'
 import { Button as AButton, Input as AInput } from 'ant-design-vue'
+import { useGlobalStore } from '@/pinia'
 
 const globalStore = useGlobalStore()
 const { modules } = storeToRefs(globalStore)

+ 1 - 1
app/src/views/dashboard/components/NodeAnalyticItem.vue

@@ -1,9 +1,9 @@
 <script setup lang="ts">
+import Icon, { ArrowDownOutlined, ArrowUpOutlined, DatabaseOutlined, LineChartOutlined } from '@ant-design/icons-vue'
 import cpu from '@/assets/svg/cpu.svg?component'
 import memory from '@/assets/svg/memory.svg?component'
 import UsageProgressLine from '@/components/Chart/UsageProgressLine.vue'
 import { bytesToSize } from '@/lib/helper'
-import Icon, { ArrowDownOutlined, ArrowUpOutlined, DatabaseOutlined, LineChartOutlined } from '@ant-design/icons-vue'
 
 defineProps<{
   item: {

+ 1 - 1
app/src/views/dashboard/components/ParamsOptimization.vue

@@ -1,10 +1,10 @@
 <script setup lang="ts">
 import type { NginxConfigInfo, NginxPerfOpt } from '@/api/ngx'
-import ngx from '@/api/ngx'
 import {
   SettingOutlined,
 } from '@ant-design/icons-vue'
 import { message } from 'ant-design-vue'
+import ngx from '@/api/ngx'
 import PerformanceConfig from './ParamsOpt/PerformanceConfig.vue'
 import ProxyCacheConfig from './ParamsOpt/ProxyCacheConfig.vue'
 // Performance settings modal

+ 1 - 1
app/src/views/dashboard/components/PerformanceTablesCard.vue

@@ -1,6 +1,6 @@
 <script setup lang="tsx">
-import type { NginxPerformanceInfo } from '@/api/ngx'
 import type { TableColumnType } from 'ant-design-vue'
+import type { NginxPerformanceInfo } from '@/api/ngx'
 import { InfoCircleOutlined } from '@ant-design/icons-vue'
 import ModulesTable from './ModulesTable.vue'
 

+ 2 - 2
app/src/views/environments/list/BatchUpgrader.vue

@@ -1,10 +1,10 @@
 <script setup lang="ts">
 import type { Environment } from '@/api/environment'
 import type { RuntimeInfo } from '@/api/upgrade'
-import upgrade from '@/api/upgrade'
-import websocket from '@/lib/websocket'
 import { cloneDeep } from 'lodash'
 import { marked } from 'marked'
+import upgrade from '@/api/upgrade'
+import websocket from '@/lib/websocket'
 
 const route = useRoute()
 const visible = ref(false)

+ 1 - 1
app/src/views/environments/list/Environment.vue

@@ -1,9 +1,9 @@
 <script setup lang="tsx">
+import { message } from 'ant-design-vue'
 import environment from '@/api/environment'
 import node from '@/api/node'
 import FooterToolBar from '@/components/FooterToolbar'
 import StdCurd from '@/components/StdDesign/StdDataDisplay/StdCurd.vue'
-import { message } from 'ant-design-vue'
 import BatchUpgrader from './BatchUpgrader.vue'
 import envColumns from './envColumns'
 

+ 2 - 2
app/src/views/environments/list/envColumns.tsx

@@ -1,9 +1,9 @@
 import type { CustomRender } from '@/components/StdDesign/StdDataDisplay/StdTableTransformer'
 import type { Column, JSXElements } from '@/components/StdDesign/types'
-import { datetime } from '@/components/StdDesign/StdDataDisplay/StdTableTransformer'
-import { input, switcher } from '@/components/StdDesign/StdDataEntry'
 import { Badge, Tag } from 'ant-design-vue'
 import { h } from 'vue'
+import { datetime } from '@/components/StdDesign/StdDataDisplay/StdTableTransformer'
+import { input, switcher } from '@/components/StdDesign/StdDataEntry'
 
 const columns: Column[] = [{
   title: () => $gettext('Name'),

+ 1 - 1
app/src/views/install/components/InstallForm.vue

@@ -1,8 +1,8 @@
 <script setup lang="ts">
-import install from '@/api/install'
 import { LockOutlined, MailOutlined, UserOutlined } from '@ant-design/icons-vue'
 import { Form, message } from 'ant-design-vue'
 import { useRouter } from 'vue-router'
+import install from '@/api/install'
 
 const emit = defineEmits<{
   (e: 'installSuccess'): void

+ 1 - 1
app/src/views/install/components/InstallView.vue

@@ -1,8 +1,8 @@
 <script setup lang="ts">
+import { message } from 'ant-design-vue'
 import install from '@/api/install'
 import SelfCheck, { useSelfCheckStore } from '@/components/SelfCheck'
 import SystemRestoreContent from '@/components/SystemRestore'
-import { message } from 'ant-design-vue'
 import InstallFooter from './InstallFooter.vue'
 import InstallForm from './InstallForm.vue'
 import InstallHeader from './InstallHeader.vue'

+ 2 - 2
app/src/views/nginx_log/NginxLog.vue

@@ -1,10 +1,10 @@
 <script setup lang="ts">
-import type { INginxLogData } from '@/api/nginx_log'
 import type ReconnectingWebSocket from 'reconnecting-websocket'
+import type { INginxLogData } from '@/api/nginx_log'
+import { debounce } from 'lodash'
 import nginx_log from '@/api/nginx_log'
 import FooterToolBar from '@/components/FooterToolbar'
 import ws from '@/lib/websocket'
-import { debounce } from 'lodash'
 
 const logContainer = useTemplateRef('logContainer')
 let websocket: ReconnectingWebSocket | WebSocket

+ 1 - 1
app/src/views/nginx_log/NginxLogList.vue

@@ -1,10 +1,10 @@
 <script setup lang="tsx">
 import type { CustomRender } from '@/components/StdDesign/StdDataDisplay/StdTableTransformer'
 import type { Column } from '@/components/StdDesign/types'
+import { Tag } from 'ant-design-vue'
 import nginxLog from '@/api/nginx_log'
 import StdCurd from '@/components/StdDesign/StdDataDisplay/StdCurd.vue'
 import { input, select } from '@/components/StdDesign/StdDataEntry'
-import { Tag } from 'ant-design-vue'
 
 const router = useRouter()
 const stdCurdRef = ref()

+ 1 - 1
app/src/views/notification/Notification.vue

@@ -1,9 +1,9 @@
 <script setup lang="ts">
+import { message } from 'ant-design-vue'
 import notification from '@/api/notification'
 import StdCurd from '@/components/StdDesign/StdDataDisplay/StdCurd.vue'
 import { useUserStore } from '@/pinia'
 import notificationColumns from '@/views/notification/notificationColumns'
-import { message } from 'ant-design-vue'
 
 const { unreadCount } = storeToRefs(useUserStore())
 

+ 1 - 1
app/src/views/notification/notificationColumns.tsx

@@ -1,9 +1,9 @@
 import type { CustomRender } from '@/components/StdDesign/StdDataDisplay/StdTableTransformer'
 import type { Column } from '@/components/StdDesign/types'
+import { Tag } from 'ant-design-vue'
 import { detailRender } from '@/components/Notification/detailRender'
 import { datetime } from '@/components/StdDesign/StdDataDisplay/StdTableTransformer'
 import { NotificationTypeT } from '@/constants'
-import { Tag } from 'ant-design-vue'
 
 const columns: Column[] = [{
   title: () => $gettext('Type'),

+ 3 - 3
app/src/views/other/Login.vue

@@ -1,4 +1,7 @@
 <script setup lang="ts">
+import { KeyOutlined, LockOutlined, UserOutlined } from '@ant-design/icons-vue'
+import { startAuthentication } from '@simplewebauthn/browser'
+import { Form, message } from 'ant-design-vue'
 import auth from '@/api/auth'
 import install from '@/api/install'
 import passkey from '@/api/passkey'
@@ -8,9 +11,6 @@ import SwitchAppearance from '@/components/SwitchAppearance'
 import Authorization from '@/components/TwoFA'
 import gettext from '@/gettext'
 import { useUserStore } from '@/pinia'
-import { KeyOutlined, LockOutlined, UserOutlined } from '@ant-design/icons-vue'
-import { startAuthentication } from '@simplewebauthn/browser'
-import { Form, message } from 'ant-design-vue'
 
 const thisYear = new Date().getFullYear()
 

+ 2 - 2
app/src/views/preference/components/AuthSettings/AddPasskey.vue

@@ -1,8 +1,8 @@
 <script setup lang="ts">
-import passkey from '@/api/passkey'
-import { useUserStore } from '@/pinia'
 import { startRegistration } from '@simplewebauthn/browser'
 import { message } from 'ant-design-vue'
+import passkey from '@/api/passkey'
+import { useUserStore } from '@/pinia'
 
 const emit = defineEmits(['created'])
 

+ 4 - 4
app/src/views/preference/components/AuthSettings/Passkey.vue

@@ -1,13 +1,13 @@
 <script setup lang="ts">
 import type { Passkey } from '@/api/passkey'
-import passkey from '@/api/passkey'
-import ReactiveFromNow from '@/components/ReactiveFromNow'
-import { formatDateTime } from '@/lib/helper'
-import { useUserStore } from '@/pinia'
 import { DeleteOutlined, EditOutlined, KeyOutlined } from '@ant-design/icons-vue'
 import { message } from 'ant-design-vue'
 import dayjs from 'dayjs'
 import relativeTime from 'dayjs/plugin/relativeTime'
+import passkey from '@/api/passkey'
+import ReactiveFromNow from '@/components/ReactiveFromNow'
+import { formatDateTime } from '@/lib/helper'
+import { useUserStore } from '@/pinia'
 import AddPasskey from './AddPasskey.vue'
 
 dayjs.extend(relativeTime)

+ 2 - 2
app/src/views/preference/components/AuthSettings/RecoveryCodes.vue

@@ -1,11 +1,11 @@
 <script setup lang="ts">
 import type { TwoFAStatus } from '@/api/2fa'
 import type { RecoveryCode } from '@/api/recovery'
-import recovery from '@/api/recovery'
-import { use2FAModal } from '@/components/TwoFA'
 import { CopyOutlined, WarningOutlined } from '@ant-design/icons-vue'
 import { UseClipboard } from '@vueuse/components'
 import { message } from 'ant-design-vue'
+import recovery from '@/api/recovery'
+import { use2FAModal } from '@/components/TwoFA'
 
 const props = defineProps<{
   recoveryCodes?: RecoveryCode[]

+ 3 - 3
app/src/views/preference/components/AuthSettings/TOTP.vue

@@ -1,11 +1,11 @@
 <script setup lang="ts">
 import type { RecoveryCode } from '@/api/recovery'
-import otp from '@/api/otp'
-import OTPInput from '@/components/OTPInput'
-import { use2FAModal } from '@/components/TwoFA'
 import { CheckCircleOutlined } from '@ant-design/icons-vue'
 import { UseClipboard } from '@vueuse/components'
 import { message } from 'ant-design-vue'
+import otp from '@/api/otp'
+import OTPInput from '@/components/OTPInput'
+import { use2FAModal } from '@/components/TwoFA'
 
 const { status = false } = defineProps<{
   status?: boolean

+ 1 - 1
app/src/views/preference/components/ExternalNotify/ExternalNotifyEditor.vue

@@ -1,6 +1,6 @@
 <script setup lang="ts">
-import type { Column } from '@/components/StdDesign/types'
 import type { ExternalNotifyConfig } from './types'
+import type { Column } from '@/components/StdDesign/types'
 import StdDataEntry, { input } from '@/components/StdDesign/StdDataEntry'
 import configMap from './index'
 

+ 2 - 2
app/src/views/preference/store/index.ts

@@ -1,9 +1,9 @@
 import type { Settings } from '@/api/settings'
+import { message } from 'ant-design-vue'
+import { defineStore } from 'pinia'
 import settings from '@/api/settings'
 import { use2FAModal } from '@/components/TwoFA'
 import { useSettingsStore } from '@/pinia'
-import { message } from 'ant-design-vue'
-import { defineStore } from 'pinia'
 
 const useSystemSettingsStore = defineStore('systemSettings', () => {
   const data = ref<Settings>({

+ 3 - 3
app/src/views/preference/tabs/AuthSettings.vue

@@ -1,13 +1,13 @@
 <script setup lang="tsx">
+import type { Ref } from 'vue'
 import type { TwoFAStatus } from '@/api/2fa'
 import type { RecoveryCode } from '@/api/recovery'
 import type { BannedIP } from '@/api/settings'
 import type { CustomRender } from '@/components/StdDesign/StdDataDisplay/StdTableTransformer'
-import type { Ref } from 'vue'
-import twoFA from '@/api/2fa'
-import setting from '@/api/settings'
 import { message } from 'ant-design-vue'
 import dayjs from 'dayjs'
+import twoFA from '@/api/2fa'
+import setting from '@/api/settings'
 import { Passkey, RecoveryCodes, TOTP } from '../components/AuthSettings'
 import useSystemSettingsStore from '../store'
 

+ 1 - 1
app/src/views/site/components/SiteStatusSegmented.vue

@@ -1,8 +1,8 @@
 <script setup lang="ts">
 import type { SiteStatus } from '@/api/site'
+import { message, Modal } from 'ant-design-vue'
 import site from '@/api/site'
 import { ConfigStatus } from '@/constants'
-import { message, Modal } from 'ant-design-vue'
 
 // Define props with TypeScript
 const props = defineProps<{

+ 1 - 1
app/src/views/site/site_add/SiteAdd.vue

@@ -1,8 +1,8 @@
 <script setup lang="ts">
+import { message } from 'ant-design-vue'
 import ngx from '@/api/ngx'
 import site from '@/api/site'
 import NgxConfigEditor, { DirectiveEditor, LocationEditor, useNgxConfigStore } from '@/components/NgxConfigEditor'
-import { message } from 'ant-design-vue'
 
 const currentStep = ref(0)
 

+ 1 - 1
app/src/views/site/site_edit/components/Cert/IssueCert.vue

@@ -1,8 +1,8 @@
 <script setup lang="ts">
+import { Modal } from 'ant-design-vue'
 import template from '@/api/template'
 import { useGlobalStore } from '@/pinia'
 import { useSiteEditorStore } from '@/views/site/site_edit/components/SiteEditor/store'
-import { Modal } from 'ant-design-vue'
 import ObtainCert from './ObtainCert.vue'
 
 const editorStore = useSiteEditorStore()

+ 1 - 1
app/src/views/site/site_edit/components/Cert/ObtainCert.vue

@@ -2,11 +2,11 @@
 import type { AutoCertOptions } from '@/api/auto_cert'
 import type { CertificateResult } from '@/api/cert'
 import type { PrivateKeyType } from '@/constants'
+import { message, Modal } from 'ant-design-vue'
 import { AutoCertChallengeMethod } from '@/api/auto_cert'
 import site from '@/api/site'
 import AutoCertStepOne from '@/components/AutoCertForm/AutoCertForm.vue'
 import { PrivateKeyTypeEnum } from '@/constants'
-import { message, Modal } from 'ant-design-vue'
 import { useSiteEditorStore } from '../SiteEditor/store'
 import ObtainCertLive from './ObtainCertLive.vue'
 

+ 1 - 1
app/src/views/site/site_edit/components/Cert/ObtainCertLive.vue

@@ -1,7 +1,7 @@
 <script setup lang="ts">
+import type { Ref } from 'vue'
 import type { AutoCertOptions } from '@/api/auto_cert'
 import type { CertificateResult } from '@/api/cert'
-import type { Ref } from 'vue'
 import websocket from '@/lib/websocket'
 import { useSiteEditorStore } from '../SiteEditor/store'
 

+ 1 - 1
app/src/views/site/site_edit/components/ConfigName/ConfigName.vue

@@ -1,6 +1,6 @@
 <script setup lang="ts">
-import site from '@/api/site'
 import { message } from 'ant-design-vue'
+import site from '@/api/site'
 
 const props = defineProps<{
   name: string

+ 1 - 1
app/src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue

@@ -1,10 +1,10 @@
 <script setup lang="ts">
 import type { Template } from '@/api/template'
+import { storeToRefs } from 'pinia'
 import template from '@/api/template'
 import CodeEditor from '@/components/CodeEditor/CodeEditor.vue'
 import { DirectiveEditor, LocationEditor, useNgxConfigStore } from '@/components/NgxConfigEditor'
 import { useSettingsStore } from '@/pinia'
-import { storeToRefs } from 'pinia'
 import { useConfigTemplateStore } from './store'
 import TemplateForm from './TemplateForm.vue'
 

+ 1 - 1
app/src/views/site/site_edit/components/ConfigTemplate/TemplateFormItem.vue

@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import type { Variable } from '@/api/template'
-import { useSettingsStore } from '@/pinia'
 import { storeToRefs } from 'pinia'
+import { useSettingsStore } from '@/pinia'
 import { useConfigTemplateStore } from './store'
 
 const data = defineModel<Variable>({

+ 1 - 1
app/src/views/site/site_edit/components/ConfigTemplate/store.ts

@@ -1,7 +1,7 @@
 import type { Template } from '@/api/template'
-import template from '@/api/template'
 import { debounce } from 'lodash'
 import { defineStore } from 'pinia'
+import template from '@/api/template'
 
 export const useConfigTemplateStore = defineStore('configTemplate', () => {
   const data = ref<Template>({} as Template)

Некоторые файлы не были показаны из-за большого количества измененных файлов