@e-xi/xion 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (542) hide show
  1. package/README.md +1 -0
  2. package/dist/bin/icon-generator.d.ts +22 -0
  3. package/dist/bin/index.d.ts +5 -0
  4. package/dist/bin/index.js +92 -0
  5. package/dist/bin/logo-generator.d.ts +22 -0
  6. package/dist/chunk-files/chunk-34OODP7M.js +147 -0
  7. package/dist/chunk-files/chunk-3KBZWBNP.js +51 -0
  8. package/dist/chunk-files/chunk-3R6EJDYR.js +10 -0
  9. package/dist/chunk-files/chunk-3RVKOFMP.js +68 -0
  10. package/dist/chunk-files/chunk-3S5OTD47.js +35 -0
  11. package/dist/chunk-files/chunk-3XB4IEWO.js +195 -0
  12. package/dist/chunk-files/chunk-3XOVD6UX.js +8 -0
  13. package/dist/chunk-files/chunk-4HEDNQUP.js +426 -0
  14. package/dist/chunk-files/chunk-4SSGMLEE.js +934 -0
  15. package/dist/chunk-files/chunk-5PKWVAQP.js +92 -0
  16. package/dist/chunk-files/chunk-6BOPFOZD.js +19 -0
  17. package/dist/chunk-files/chunk-6FDO72PN.js +25 -0
  18. package/dist/chunk-files/chunk-6X74EPRM.js +0 -0
  19. package/dist/chunk-files/chunk-B2FI5WI5.js +67 -0
  20. package/dist/chunk-files/chunk-B7DTBTWQ.js +74 -0
  21. package/dist/chunk-files/chunk-BFD2LHLK.js +60 -0
  22. package/dist/chunk-files/chunk-BJOPQNB2.js +319 -0
  23. package/dist/chunk-files/chunk-BMOLIJ3W.js +89 -0
  24. package/dist/chunk-files/chunk-BPTFUGTP.js +97 -0
  25. package/dist/chunk-files/chunk-CSUNGWAE.js +405 -0
  26. package/dist/chunk-files/chunk-D5ZV4VMI.js +627 -0
  27. package/dist/chunk-files/chunk-DD6WZ4NY.js +841 -0
  28. package/dist/chunk-files/chunk-DEODEAKM.js +19 -0
  29. package/dist/chunk-files/chunk-DRMV3M5V.js +1970 -0
  30. package/dist/chunk-files/chunk-EQTU45UO.js +21 -0
  31. package/dist/chunk-files/chunk-F7YTK2MY.js +154 -0
  32. package/dist/chunk-files/chunk-FMQTZ3QV.js +17 -0
  33. package/dist/chunk-files/chunk-FPN7JYR4.js +67 -0
  34. package/dist/chunk-files/chunk-FULHNQ4O.js +1243 -0
  35. package/dist/chunk-files/chunk-GN2FNR3Z.js +259 -0
  36. package/dist/chunk-files/chunk-GROGDGEL.js +177 -0
  37. package/dist/chunk-files/chunk-GUOSVDXA.js +34 -0
  38. package/dist/chunk-files/chunk-HT5V5A7S.js +6 -0
  39. package/dist/chunk-files/chunk-ID3YDA2K.js +19 -0
  40. package/dist/chunk-files/chunk-IH3R2NDR.js +230 -0
  41. package/dist/chunk-files/chunk-IMGYTSWY.js +261 -0
  42. package/dist/chunk-files/chunk-J34MOWJP.js +26 -0
  43. package/dist/chunk-files/chunk-KFK47PDH.js +77 -0
  44. package/dist/chunk-files/chunk-KFV4GXVE.js +11 -0
  45. package/dist/chunk-files/chunk-LFHJJQW3.js +723 -0
  46. package/dist/chunk-files/chunk-LQ67F6EY.js +32 -0
  47. package/dist/chunk-files/chunk-MJ6Q3TIX.js +703 -0
  48. package/dist/chunk-files/chunk-OUFO3LM4.js +135 -0
  49. package/dist/chunk-files/chunk-P4CX6I4J.js +14 -0
  50. package/dist/chunk-files/chunk-PL5KNBCY.js +78 -0
  51. package/dist/chunk-files/chunk-PVWRRUOK.js +11 -0
  52. package/dist/chunk-files/chunk-Q7LCZIQP.js +15 -0
  53. package/dist/chunk-files/chunk-Q7YMMN7J.js +220 -0
  54. package/dist/chunk-files/chunk-RAVPJRBA.js +118 -0
  55. package/dist/chunk-files/chunk-RN7AI33H.js +26 -0
  56. package/dist/chunk-files/chunk-RODB64YF.js +148 -0
  57. package/dist/chunk-files/chunk-SVTZ4T6S.js +10 -0
  58. package/dist/chunk-files/chunk-T3QCAOCO.js +20 -0
  59. package/dist/chunk-files/chunk-U4XEWVBH.js +19 -0
  60. package/dist/chunk-files/chunk-UCMR6V67.js +746 -0
  61. package/dist/chunk-files/chunk-UFYEZIUE.js +1269 -0
  62. package/dist/chunk-files/chunk-UIJUY7QZ.js +18 -0
  63. package/dist/chunk-files/chunk-VGDNICVG.js +67 -0
  64. package/dist/chunk-files/chunk-W2I3I7U7.js +35 -0
  65. package/dist/chunk-files/chunk-WGYOMA43.js +33 -0
  66. package/dist/chunk-files/chunk-WKVLVI6N.js +44 -0
  67. package/dist/chunk-files/chunk-WOJ2UKI7.js +11 -0
  68. package/dist/chunk-files/chunk-Y3OEXVQ2.js +59 -0
  69. package/dist/chunk-files/chunk-YLZRRUY7.js +6 -0
  70. package/dist/chunk-files/chunk-YTHS2ZV7.js +51 -0
  71. package/dist/chunk-files/chunk-YXAEUJKJ.js +331 -0
  72. package/dist/chunk-files/chunk-YZOJOLFL.js +121 -0
  73. package/dist/main/app/app-lifecycle-abstract.d.ts +190 -0
  74. package/dist/main/app/app-lifecycle.d.ts +7 -0
  75. package/dist/main/app/icons/icon.ico +0 -0
  76. package/dist/main/app/index.d.ts +8 -0
  77. package/dist/main/app/index.js +1226 -0
  78. package/dist/main/app/types/app.d.ts +74 -0
  79. package/dist/main/app/xo-app-abstract.d.ts +464 -0
  80. package/dist/main/app/xo-app.d.ts +23 -0
  81. package/dist/main/auth/index.d.ts +8 -0
  82. package/dist/main/auth/index.js +109 -0
  83. package/dist/main/auth/jwt-auth-manager.d.ts +302 -0
  84. package/dist/main/auth/jwt-auth-provider-abstract.d.ts +100 -0
  85. package/dist/main/auth/jwt-auth-refresh-rejected-error.d.ts +12 -0
  86. package/dist/main/auth/jwt-auth-session-changed-error.d.ts +12 -0
  87. package/dist/main/auth/types/jwt-auth-manager.d.ts +13 -0
  88. package/dist/main/banner/banner-abstract.d.ts +38 -0
  89. package/dist/main/banner/banner-manager.d.ts +20 -0
  90. package/dist/main/banner/index.d.ts +6 -0
  91. package/dist/main/banner/index.js +10 -0
  92. package/dist/main/banner/types/banner.d.ts +17 -0
  93. package/dist/main/config/app-config.d.ts +6 -0
  94. package/dist/main/config/index.d.ts +13 -0
  95. package/dist/main/config/index.js +33 -0
  96. package/dist/main/config/logger-config.d.ts +6 -0
  97. package/dist/main/config/remote-service-config.d.ts +6 -0
  98. package/dist/main/config/tray-config.d.ts +6 -0
  99. package/dist/main/config/types/app.d.ts +38 -0
  100. package/dist/main/config/types/logger.d.ts +82 -0
  101. package/dist/main/config/types/window.d.ts +35 -0
  102. package/dist/main/config/updater-config.d.ts +6 -0
  103. package/dist/main/config/window/main-window-config.d.ts +6 -0
  104. package/dist/main/config/window/setting-window-config.d.ts +6 -0
  105. package/dist/main/file-association/file-association-handlers-abstract.d.ts +23 -0
  106. package/dist/main/file-association/file-association-manager-abstract.d.ts +87 -0
  107. package/dist/main/file-association/file-association-manager.d.ts +13 -0
  108. package/dist/main/file-association/handlers/app-file-association-handlers.d.ts +12 -0
  109. package/dist/main/file-association/index.d.ts +8 -0
  110. package/dist/main/file-association/index.js +13 -0
  111. package/dist/main/file-association/types/file-association.d.ts +31 -0
  112. package/dist/main/ipc/handlers/app-handlers.d.ts +13 -0
  113. package/dist/main/ipc/handlers/auth-handlers.d.ts +12 -0
  114. package/dist/main/ipc/handlers/clipboard-handlers.d.ts +13 -0
  115. package/dist/main/ipc/handlers/contex-menu-handlers.d.ts +13 -0
  116. package/dist/main/ipc/handlers/dialog-handlers.d.ts +13 -0
  117. package/dist/main/ipc/handlers/file-handlers.d.ts +13 -0
  118. package/dist/main/ipc/handlers/log-handlers.d.ts +45 -0
  119. package/dist/main/ipc/handlers/remote-service-handlers.d.ts +13 -0
  120. package/dist/main/ipc/handlers/shell-handlers.d.ts +13 -0
  121. package/dist/main/ipc/handlers/theme-handlers.d.ts +13 -0
  122. package/dist/main/ipc/handlers/updater-handlers.d.ts +13 -0
  123. package/dist/main/ipc/handlers/window-handlers.d.ts +13 -0
  124. package/dist/main/ipc/index.d.ts +20 -0
  125. package/dist/main/ipc/index.js +60 -0
  126. package/dist/main/ipc/ipc-handlers-abstract.d.ts +23 -0
  127. package/dist/main/ipc/ipc-manager-abstract.d.ts +46 -0
  128. package/dist/main/ipc/ipc-manager.d.ts +13 -0
  129. package/dist/main/ipc/types/ipc-handler.d.ts +22 -0
  130. package/dist/main/ipc/utils/ipc-handler-util.d.ts +24 -0
  131. package/dist/main/logger/index.d.ts +4 -0
  132. package/dist/main/logger/index.js +13 -0
  133. package/dist/main/logger/xo-logger.d.ts +113 -0
  134. package/dist/main/menu/consts/menu-type.d.ts +1 -0
  135. package/dist/main/menu/index.d.ts +8 -0
  136. package/dist/main/menu/index.js +28 -0
  137. package/dist/main/menu/menu-items.d.ts +192 -0
  138. package/dist/main/menu/menu-manager-abstract.d.ts +273 -0
  139. package/dist/main/menu/menu-manager.d.ts +12 -0
  140. package/dist/main/menu/types/menu.d.ts +101 -0
  141. package/dist/main/mode/app-mode.d.ts +32 -0
  142. package/dist/main/mode/index.d.ts +5 -0
  143. package/dist/main/mode/index.js +9 -0
  144. package/dist/main/mode/types/mode.d.ts +25 -0
  145. package/dist/main/protocol/consts/protocol-keys.d.ts +10 -0
  146. package/dist/main/protocol/handlers/app-protocol-handlers.d.ts +12 -0
  147. package/dist/main/protocol/index.d.ts +9 -0
  148. package/dist/main/protocol/index.js +15 -0
  149. package/dist/main/protocol/protocol-handlers-abstract.d.ts +23 -0
  150. package/dist/main/protocol/protocol-manager-abstract.d.ts +85 -0
  151. package/dist/main/protocol/protocol-manager.d.ts +13 -0
  152. package/dist/main/protocol/types/protocol.d.ts +33 -0
  153. package/dist/main/remote-service/consts/remote-service-methods.d.ts +5 -0
  154. package/dist/main/remote-service/index.d.ts +7 -0
  155. package/dist/main/remote-service/index.js +17 -0
  156. package/dist/main/remote-service/remote-service-manager-abstract.d.ts +303 -0
  157. package/dist/main/remote-service/remote-service-manager.d.ts +7 -0
  158. package/dist/main/remote-service/types/remote-service.d.ts +9 -0
  159. package/dist/main/renderer-protocol/handlers/renderer-remote-service-protocol-handlers.d.ts +130 -0
  160. package/dist/main/renderer-protocol/handlers/renderer-root-protocol-handlers.d.ts +65 -0
  161. package/dist/main/renderer-protocol/index.d.ts +9 -0
  162. package/dist/main/renderer-protocol/index.js +18 -0
  163. package/dist/main/renderer-protocol/renderer-protocol-handlers-abstract.d.ts +23 -0
  164. package/dist/main/renderer-protocol/renderer-protocol-manager-abstract.d.ts +78 -0
  165. package/dist/main/renderer-protocol/renderer-protocol-manager.d.ts +13 -0
  166. package/dist/main/renderer-protocol/types/renderer-protocol.d.ts +34 -0
  167. package/dist/main/shortcut/handlers/app-shortcut-handlers.d.ts +11 -0
  168. package/dist/main/shortcut/handlers/window-shortcut-handlers.d.ts +11 -0
  169. package/dist/main/shortcut/index.d.ts +9 -0
  170. package/dist/main/shortcut/index.js +17 -0
  171. package/dist/main/shortcut/shortcut-handlers-abstract.d.ts +18 -0
  172. package/dist/main/shortcut/shortcut-manager-abstract.d.ts +121 -0
  173. package/dist/main/shortcut/shortcut-manager.d.ts +12 -0
  174. package/dist/main/shortcut/types/shortcut.d.ts +50 -0
  175. package/dist/main/store/app-store.d.ts +179 -0
  176. package/dist/main/store/index.d.ts +7 -0
  177. package/dist/main/store/index.js +13 -0
  178. package/dist/main/store/jwt-auth-store.d.ts +36 -0
  179. package/dist/main/store/types/app-store.d.ts +46 -0
  180. package/dist/main/store/types/jwt-auth-store.d.ts +14 -0
  181. package/dist/main/theme/consts/theme-sources.d.ts +10 -0
  182. package/dist/main/theme/index.d.ts +7 -0
  183. package/dist/main/theme/index.js +16 -0
  184. package/dist/main/theme/theme-manager-abstract.d.ts +93 -0
  185. package/dist/main/theme/theme-manager.d.ts +7 -0
  186. package/dist/main/theme/types/theme.d.ts +38 -0
  187. package/dist/main/tray/consts/tray-animation-name.d.ts +1 -0
  188. package/dist/main/tray/consts/tray-icon-name.d.ts +1 -0
  189. package/dist/main/tray/icons/blur.ico +0 -0
  190. package/dist/main/tray/icons/error.ico +0 -0
  191. package/dist/main/tray/icons/focus.ico +0 -0
  192. package/dist/main/tray/icons/none.ico +0 -0
  193. package/dist/main/tray/icons/offline.ico +0 -0
  194. package/dist/main/tray/icons/online.ico +0 -0
  195. package/dist/main/tray/icons/success.ico +0 -0
  196. package/dist/main/tray/index.d.ts +11 -0
  197. package/dist/main/tray/index.js +27 -0
  198. package/dist/main/tray/tray-animation.d.ts +48 -0
  199. package/dist/main/tray/tray-icon.d.ts +51 -0
  200. package/dist/main/tray/tray-lifecycle-abstract.d.ts +154 -0
  201. package/dist/main/tray/tray-lifecycle.d.ts +7 -0
  202. package/dist/main/tray/tray-manager.d.ts +173 -0
  203. package/dist/main/tray/types/tray.d.ts +81 -0
  204. package/dist/main/updater/dev-app-update.yml +5 -0
  205. package/dist/main/updater/index.d.ts +6 -0
  206. package/dist/main/updater/index.js +20 -0
  207. package/dist/main/updater/types/updater.d.ts +167 -0
  208. package/dist/main/updater/updater-manager-abstract.d.ts +237 -0
  209. package/dist/main/updater/updater-manager.d.ts +7 -0
  210. package/dist/main/utils/file-association-util.d.ts +43 -0
  211. package/dist/main/utils/index.d.ts +14 -0
  212. package/dist/main/utils/index.js +105 -0
  213. package/dist/main/utils/menu-util.d.ts +12 -0
  214. package/dist/main/utils/protocol-util.d.ts +49 -0
  215. package/dist/main/utils/runtime-config-util.d.ts +75 -0
  216. package/dist/main/utils/shortcut-util.d.ts +38 -0
  217. package/dist/main/utils/tray-util.d.ts +18 -0
  218. package/dist/main/utils/window-util.d.ts +55 -0
  219. package/dist/main/utils/xo-app-root-util.d.ts +30 -0
  220. package/dist/main/utils/xo-app-util.d.ts +24 -0
  221. package/dist/main/utils/xo-path-util.d.ts +59 -0
  222. package/dist/main/utils/xo-util.d.ts +17 -0
  223. package/dist/main/window/index.d.ts +10 -0
  224. package/dist/main/window/index.js +36 -0
  225. package/dist/main/window/main/main-window-lifecycle.d.ts +7 -0
  226. package/dist/main/window/main/main-window-type.d.ts +5 -0
  227. package/dist/main/window/setting/setting-window-lifecycle.d.ts +7 -0
  228. package/dist/main/window/setting/setting-window-type.d.ts +5 -0
  229. package/dist/main/window/types/window.d.ts +86 -0
  230. package/dist/main/window/window-lifecycle-abstract.d.ts +514 -0
  231. package/dist/main/window/window-manager.d.ts +422 -0
  232. package/dist/preload/bridge/bridge-abstract.d.ts +11 -0
  233. package/dist/preload/bridge/bridge.d.ts +35 -0
  234. package/dist/preload/bridge/index.d.ts +6 -0
  235. package/dist/preload/bridge/index.js +117 -0
  236. package/dist/preload/bridge/preload.cjs +1706 -0
  237. package/dist/preload/bridge/preload.internal.d.ts +1 -0
  238. package/dist/preload/bridge/types/bridge.d.ts +19 -0
  239. package/dist/preload/bridges/app/app-bridge.d.ts +142 -0
  240. package/dist/preload/bridges/app/types/app.d.ts +65 -0
  241. package/dist/preload/bridges/auth/auth-bridge.d.ts +36 -0
  242. package/dist/preload/bridges/auth/types/auth.d.ts +23 -0
  243. package/dist/preload/bridges/clipboard/clipboard-bridge.d.ts +37 -0
  244. package/dist/preload/bridges/clipboard/types/clipboard.d.ts +23 -0
  245. package/dist/preload/bridges/context-menu/context-menu-bridge.d.ts +27 -0
  246. package/dist/preload/bridges/context-menu/types/context-menu.d.ts +19 -0
  247. package/dist/preload/bridges/dialog/dialog-bridge.d.ts +30 -0
  248. package/dist/preload/bridges/dialog/types/dialog.d.ts +41 -0
  249. package/dist/preload/bridges/file/file-bridge.d.ts +34 -0
  250. package/dist/preload/bridges/file/types/file.d.ts +21 -0
  251. package/dist/preload/bridges/index.d.ts +29 -0
  252. package/dist/preload/bridges/index.js +40 -0
  253. package/dist/preload/bridges/ipc/ipc-bridge.d.ts +43 -0
  254. package/dist/preload/bridges/ipc/types/ipc.d.ts +23 -0
  255. package/dist/preload/bridges/log/log-bridge.d.ts +52 -0
  256. package/dist/preload/bridges/log/types/log.d.ts +20 -0
  257. package/dist/preload/bridges/remote-service/remote-service-bridge.d.ts +55 -0
  258. package/dist/preload/bridges/remote-service/types/remote-service.d.ts +29 -0
  259. package/dist/preload/bridges/shell/shell-bridge.d.ts +27 -0
  260. package/dist/preload/bridges/shell/types/shell.d.ts +19 -0
  261. package/dist/preload/bridges/theme/theme-bridge.d.ts +32 -0
  262. package/dist/preload/bridges/theme/types/theme.d.ts +21 -0
  263. package/dist/preload/bridges/updater/types/updater.d.ts +35 -0
  264. package/dist/preload/bridges/updater/updater-bridge.d.ts +66 -0
  265. package/dist/preload/bridges/window/internal/route-redirect-buffer.d.ts +36 -0
  266. package/dist/preload/bridges/window/types/window.d.ts +53 -0
  267. package/dist/preload/bridges/window/window-bridge.d.ts +118 -0
  268. package/dist/preload/utils/bridge-util.d.ts +43 -0
  269. package/dist/preload/utils/index.d.ts +4 -0
  270. package/dist/preload/utils/index.js +7 -0
  271. package/dist/renderer/app/bootstrap-renderer.d.ts +6 -0
  272. package/dist/renderer/app/index.d.ts +5 -0
  273. package/dist/renderer/app/index.js +164 -0
  274. package/dist/renderer/app/styles-element-plus.internal.d.ts +2 -0
  275. package/dist/renderer/app/styles-xion.internal.d.ts +2 -0
  276. package/dist/renderer/app/types/app.d.ts +51 -0
  277. package/dist/renderer/components/captcha/internal/captcha-controller.d.ts +280 -0
  278. package/dist/renderer/components/captcha/internal/captcha-css-property.d.ts +25 -0
  279. package/dist/renderer/components/captcha/internal/captcha-defaults.d.ts +33 -0
  280. package/dist/renderer/components/captcha/internal/captcha-errors.d.ts +21 -0
  281. package/dist/renderer/components/captcha/internal/captcha-helper.d.ts +72 -0
  282. package/dist/renderer/components/captcha/internal/captcha-injector.d.ts +16 -0
  283. package/dist/renderer/components/captcha/internal/captcha-runtime-types.d.ts +153 -0
  284. package/dist/renderer/components/captcha/internal/captcha-service.d.ts +22 -0
  285. package/dist/renderer/components/captcha/internal/captcha-slide-types.d.ts +62 -0
  286. package/dist/renderer/components/captcha/internal/captcha-ui-patch.d.ts +43 -0
  287. package/dist/renderer/components/captcha/internal/captcha-wasm-loader.d.ts +36 -0
  288. package/dist/renderer/components/captcha/style/index.less +132 -0
  289. package/dist/renderer/components/captcha/types/captcha.d.ts +132 -0
  290. package/dist/renderer/components/captcha/xo-captcha-host.vue +151 -0
  291. package/dist/renderer/components/captcha/xo-captcha.vue +83 -0
  292. package/dist/renderer/components/captcha.d.ts +40 -0
  293. package/dist/renderer/components/context-menu/types/context-menu.d.ts +55 -0
  294. package/dist/renderer/components/context-menu/xo-context-menu-items.vue +112 -0
  295. package/dist/renderer/components/context-menu/xo-context-menu.vue +356 -0
  296. package/dist/renderer/components/context-menu.d.ts +32 -0
  297. package/dist/renderer/components/divider/types/divider.d.ts +31 -0
  298. package/dist/renderer/components/divider/xo-divider.vue +176 -0
  299. package/dist/renderer/components/form/types/form-flex-row.d.ts +21 -0
  300. package/dist/renderer/components/form/types/form-flex.d.ts +49 -0
  301. package/dist/renderer/components/form/xo-form-flex-row.vue +122 -0
  302. package/dist/renderer/components/form/xo-form-flex.vue +115 -0
  303. package/dist/renderer/components/index.d.ts +70 -0
  304. package/dist/renderer/components/index.js +1282 -0
  305. package/dist/renderer/components/layouts/types/app-layout.d.ts +29 -0
  306. package/dist/renderer/components/layouts/types/mini-layout.d.ts +23 -0
  307. package/dist/renderer/components/layouts/types/simple-layout.d.ts +17 -0
  308. package/dist/renderer/components/layouts/xo-app-layout.vue +350 -0
  309. package/dist/renderer/components/layouts/xo-mini-layout.vue +207 -0
  310. package/dist/renderer/components/layouts/xo-simple-layout.vue +43 -0
  311. package/dist/renderer/components/pages/types/app-page.d.ts +25 -0
  312. package/dist/renderer/components/pages/types/bootstrap-page.d.ts +35 -0
  313. package/dist/renderer/components/pages/types/dynamic-page.d.ts +20 -0
  314. package/dist/renderer/components/pages/types/settings-page.d.ts +23 -0
  315. package/dist/renderer/components/pages/xo-app-page.vue +230 -0
  316. package/dist/renderer/components/pages/xo-bootstrap-page.vue +93 -0
  317. package/dist/renderer/components/pages/xo-dynamic-page.vue +28 -0
  318. package/dist/renderer/components/pages/xo-settings-page.vue +143 -0
  319. package/dist/renderer/components/radio-group/types/radio-group.d.ts +30 -0
  320. package/dist/renderer/components/radio-group/xo-radio-group.vue +38 -0
  321. package/dist/renderer/components/service-status-bar/types/service-status-bar.d.ts +65 -0
  322. package/dist/renderer/components/service-status-bar/xo-service-status-bar.vue +193 -0
  323. package/dist/renderer/components/settings-components/types/setting-app-opacity.d.ts +19 -0
  324. package/dist/renderer/components/settings-components/types/setting-log-level.d.ts +23 -0
  325. package/dist/renderer/components/settings-components/types/setting-shortcut-keys-record-for-form-flex-rows.d.ts +47 -0
  326. package/dist/renderer/components/settings-components/types/setting-shortcut-keys-record.d.ts +23 -0
  327. package/dist/renderer/components/settings-components/types/setting-window-material.d.ts +23 -0
  328. package/dist/renderer/components/settings-components/xo-setting-app-opacity.vue +105 -0
  329. package/dist/renderer/components/settings-components/xo-setting-log-level.vue +84 -0
  330. package/dist/renderer/components/settings-components/xo-setting-shortcut-keys-record-for-form-flex-rows.vue +37 -0
  331. package/dist/renderer/components/settings-components/xo-setting-shortcut-keys-record.vue +74 -0
  332. package/dist/renderer/components/settings-components/xo-setting-window-material.vue +83 -0
  333. package/dist/renderer/components/settings-pages/types/setting-page-folder.d.ts +41 -0
  334. package/dist/renderer/components/settings-pages/types/setting-page-general.d.ts +23 -0
  335. package/dist/renderer/components/settings-pages/types/setting-page-remote-service.d.ts +19 -0
  336. package/dist/renderer/components/settings-pages/types/setting-page-updater.d.ts +27 -0
  337. package/dist/renderer/components/settings-pages/xo-setting-page-folder.vue +137 -0
  338. package/dist/renderer/components/settings-pages/xo-setting-page-general.vue +255 -0
  339. package/dist/renderer/components/settings-pages/xo-setting-page-remote-service.vue +183 -0
  340. package/dist/renderer/components/settings-pages/xo-setting-page-updater.vue +350 -0
  341. package/dist/renderer/components/shortcut-keys-record/types/shortcut-keys-record.d.ts +25 -0
  342. package/dist/renderer/components/shortcut-keys-record/xo-shortcut-keys-record.vue +161 -0
  343. package/dist/renderer/components/side-bar/types/sidebar-logo.d.ts +39 -0
  344. package/dist/renderer/components/side-bar/xo-sidebar-logo.vue +133 -0
  345. package/dist/renderer/components/spacing-line/types/spacing-line.d.ts +17 -0
  346. package/dist/renderer/components/spacing-line/xo-spacing-line.vue +53 -0
  347. package/dist/renderer/components/theme-switch/types/theme-switch-mini.d.ts +21 -0
  348. package/dist/renderer/components/theme-switch/types/theme-switch.d.ts +45 -0
  349. package/dist/renderer/components/theme-switch/xo-theme-switch-mini.vue +93 -0
  350. package/dist/renderer/components/theme-switch/xo-theme-switch.vue +200 -0
  351. package/dist/renderer/components/title-bar/types/title-bar.d.ts +58 -0
  352. package/dist/renderer/components/title-bar/xo-title-bar.vue +364 -0
  353. package/dist/renderer/components/types/sidebar-menu.d.ts +37 -0
  354. package/dist/renderer/components/types/vue.d.ts +9 -0
  355. package/dist/renderer/components/updater/types/updater.d.ts +97 -0
  356. package/dist/renderer/components/updater/xo-updater.vue +1190 -0
  357. package/dist/renderer/components/window-control/types/window-control.d.ts +17 -0
  358. package/dist/renderer/components/window-control/xo-window-control.vue +193 -0
  359. package/dist/renderer/composables/index.d.ts +7 -0
  360. package/dist/renderer/composables/index.js +570 -0
  361. package/dist/renderer/composables/use-xo-boolean.d.ts +14 -0
  362. package/dist/renderer/composables/use-xo-data-loader.d.ts +73 -0
  363. package/dist/renderer/composables/use-xo-form-control.d.ts +84 -0
  364. package/dist/renderer/composables/use-xo-updater-action.d.ts +25 -0
  365. package/dist/renderer/global/index.d.ts +4 -0
  366. package/dist/renderer/global/index.js +0 -0
  367. package/dist/renderer/global/types/window.d.ts +21 -0
  368. package/dist/renderer/icons/demo.css +539 -0
  369. package/dist/renderer/icons/iconfont.css +490 -0
  370. package/dist/renderer/services/index.d.ts +6 -0
  371. package/dist/renderer/services/index.js +444 -0
  372. package/dist/renderer/services/orval-axios-mutator.d.ts +9 -0
  373. package/dist/renderer/services/types/xo-api.d.ts +92 -0
  374. package/dist/renderer/services/xo-api-requester.d.ts +129 -0
  375. package/dist/renderer/store/app/app-store.d.ts +68 -0
  376. package/dist/renderer/store/auth/auth-store.d.ts +43 -0
  377. package/dist/renderer/store/index.d.ts +9 -0
  378. package/dist/renderer/store/index.js +595 -0
  379. package/dist/renderer/store/remote-service/remote-service-store.d.ts +52 -0
  380. package/dist/renderer/store/theme/theme-store.d.ts +52 -0
  381. package/dist/renderer/store/updater/updater-store.d.ts +88 -0
  382. package/dist/renderer/store/window/window-store.d.ts +58 -0
  383. package/dist/renderer/styles/css/element-plus.less +280 -0
  384. package/dist/renderer/styles/css/iconfont-patch.less +6 -0
  385. package/dist/renderer/styles/css/reset.less +83 -0
  386. package/dist/renderer/styles/css/scrollbar.less +56 -0
  387. package/dist/renderer/styles/index.less +35 -0
  388. package/dist/renderer/styles/mixin.less +144 -0
  389. package/dist/renderer/styles/var/element-plus/dark.less +32 -0
  390. package/dist/renderer/styles/var/element-plus/root.less +88 -0
  391. package/dist/renderer/styles/var/global/dark.less +10 -0
  392. package/dist/renderer/styles/var/global/root.less +46 -0
  393. package/dist/renderer/styles/var/layout/dark.less +7 -0
  394. package/dist/renderer/styles/var/layout/root.less +9 -0
  395. package/dist/renderer/styles/var/scrollbar/dark.less +13 -0
  396. package/dist/renderer/styles/var/scrollbar/root.less +35 -0
  397. package/dist/renderer/utils/auth-route-util.d.ts +117 -0
  398. package/dist/renderer/utils/context-util.d.ts +13 -0
  399. package/dist/renderer/utils/error-util.d.ts +12 -0
  400. package/dist/renderer/utils/index.d.ts +14 -0
  401. package/dist/renderer/utils/index.js +1522 -0
  402. package/dist/renderer/utils/keyboard-util.d.ts +86 -0
  403. package/dist/renderer/utils/message-util.d.ts +161 -0
  404. package/dist/renderer/utils/renderer-log-util.d.ts +44 -0
  405. package/dist/renderer/utils/renderer-util.d.ts +37 -0
  406. package/dist/renderer/utils/router-util.d.ts +186 -0
  407. package/dist/renderer/utils/shortcut-util.d.ts +20 -0
  408. package/dist/renderer/utils/storage-util.d.ts +85 -0
  409. package/dist/renderer/utils/types/vue-router.d.ts +17 -0
  410. package/dist/shared/app/consts/app-launch-mode.d.ts +9 -0
  411. package/dist/shared/app/consts/update-mode.d.ts +8 -0
  412. package/dist/shared/app/consts/window-close-behavior.d.ts +8 -0
  413. package/dist/shared/app/consts/window-material.d.ts +8 -0
  414. package/dist/shared/app/consts/xion-name.d.ts +5 -0
  415. package/dist/shared/app/electron-app-config.d.ts +5 -0
  416. package/dist/shared/app/index.d.ts +16 -0
  417. package/dist/shared/app/index.js +30 -0
  418. package/dist/shared/app/types/app-info.d.ts +32 -0
  419. package/dist/shared/app/types/app-launch-mode.d.ts +13 -0
  420. package/dist/shared/app/types/app-paths.d.ts +27 -0
  421. package/dist/shared/app/types/general-settings.d.ts +27 -0
  422. package/dist/shared/app/types/on-window-close.d.ts +13 -0
  423. package/dist/shared/app/types/update-mode.d.ts +13 -0
  424. package/dist/shared/app/types/window-material.d.ts +2 -0
  425. package/dist/shared/auth/const/auth-status.d.ts +2 -0
  426. package/dist/shared/auth/index.d.ts +5 -0
  427. package/dist/shared/auth/index.js +5 -0
  428. package/dist/shared/auth/types/auth.d.ts +78 -0
  429. package/dist/shared/color/consts/color.d.ts +5 -0
  430. package/dist/shared/color/index.d.ts +5 -0
  431. package/dist/shared/color/index.js +6 -0
  432. package/dist/shared/color/types/color.d.ts +26 -0
  433. package/dist/shared/electron-builder/index.d.ts +4 -0
  434. package/dist/shared/electron-builder/index.js +0 -0
  435. package/dist/shared/electron-builder/types/electron-builder-options.d.ts +34 -0
  436. package/dist/shared/errors/index.d.ts +4 -0
  437. package/dist/shared/errors/index.js +10 -0
  438. package/dist/shared/errors/ipc-invoke-error.d.ts +32 -0
  439. package/dist/shared/ipc/channels/app-channels.d.ts +56 -0
  440. package/dist/shared/ipc/channels/auth-channels.d.ts +14 -0
  441. package/dist/shared/ipc/channels/clipboard-channels.d.ts +14 -0
  442. package/dist/shared/ipc/channels/context-menu-channels.d.ts +10 -0
  443. package/dist/shared/ipc/channels/dialog-channels.d.ts +12 -0
  444. package/dist/shared/ipc/channels/file-channels.d.ts +12 -0
  445. package/dist/shared/ipc/channels/log-channels.d.ts +14 -0
  446. package/dist/shared/ipc/channels/remote-service-channels.d.ts +20 -0
  447. package/dist/shared/ipc/channels/shell-channels.d.ts +10 -0
  448. package/dist/shared/ipc/channels/theme-channels.d.ts +12 -0
  449. package/dist/shared/ipc/channels/updater-channels.d.ts +26 -0
  450. package/dist/shared/ipc/channels/window-channels.d.ts +44 -0
  451. package/dist/shared/ipc/consts/ipc-channel.d.ts +1 -0
  452. package/dist/shared/ipc/index.d.ts +19 -0
  453. package/dist/shared/ipc/index.js +46 -0
  454. package/dist/shared/ipc/ipc-result.d.ts +20 -0
  455. package/dist/shared/ipc/types/ipc-logger.d.ts +27 -0
  456. package/dist/shared/ipc/types/ipc.d.ts +61 -0
  457. package/dist/shared/logger/consts/log-levels.d.ts +14 -0
  458. package/dist/shared/logger/index.d.ts +4 -0
  459. package/dist/shared/logger/index.js +10 -0
  460. package/dist/shared/menu/consts/menu-command.d.ts +1 -0
  461. package/dist/shared/menu/index.d.ts +6 -0
  462. package/dist/shared/menu/index.js +10 -0
  463. package/dist/shared/menu/menu-command.d.ts +24 -0
  464. package/dist/shared/menu/types/menu.d.ts +72 -0
  465. package/dist/shared/mode/consts/command.d.ts +10 -0
  466. package/dist/shared/mode/consts/mode.d.ts +22 -0
  467. package/dist/shared/mode/index.d.ts +5 -0
  468. package/dist/shared/mode/index.js +18 -0
  469. package/dist/shared/remote-service/const/remote-service.d.ts +8 -0
  470. package/dist/shared/remote-service/index.d.ts +5 -0
  471. package/dist/shared/remote-service/index.js +38 -0
  472. package/dist/shared/remote-service/types/remote-service.d.ts +146 -0
  473. package/dist/shared/renderer/index.d.ts +7 -0
  474. package/dist/shared/renderer/index.js +0 -0
  475. package/dist/shared/renderer/types/element-plus.d.ts +20 -0
  476. package/dist/shared/renderer/types/input.d.ts +11 -0
  477. package/dist/shared/renderer/types/options.d.ts +22 -0
  478. package/dist/shared/renderer/types/switch.d.ts +11 -0
  479. package/dist/shared/renderer-protocol/consts/renderer-protocol-keys.d.ts +10 -0
  480. package/dist/shared/renderer-protocol/index.d.ts +5 -0
  481. package/dist/shared/renderer-protocol/index.js +6 -0
  482. package/dist/shared/renderer-protocol/types/renderer-protocol.d.ts +7 -0
  483. package/dist/shared/runtime/index.d.ts +4 -0
  484. package/dist/shared/runtime/index.js +0 -0
  485. package/dist/shared/runtime/types/runtime.d.ts +20 -0
  486. package/dist/shared/shortcut/consts/shortcut-handler-ids.d.ts +9 -0
  487. package/dist/shared/shortcut/consts/shortcut-id.d.ts +1 -0
  488. package/dist/shared/shortcut/index.d.ts +6 -0
  489. package/dist/shared/shortcut/index.js +10 -0
  490. package/dist/shared/shortcut/types/shortcut.d.ts +13 -0
  491. package/dist/shared/utils/bytes-util.d.ts +16 -0
  492. package/dist/shared/utils/index.d.ts +15 -0
  493. package/dist/shared/utils/index.js +42 -0
  494. package/dist/shared/utils/ipc-util.d.ts +12 -0
  495. package/dist/shared/utils/log-util.d.ts +33 -0
  496. package/dist/shared/utils/menu-util.d.ts +12 -0
  497. package/dist/shared/utils/number-util.d.ts +12 -0
  498. package/dist/shared/utils/object-util.d.ts +88 -0
  499. package/dist/shared/utils/regexp-util.d.ts +22 -0
  500. package/dist/shared/utils/shortcut-util.d.ts +12 -0
  501. package/dist/shared/utils/string-util.d.ts +14 -0
  502. package/dist/shared/utils/time-util.d.ts +32 -0
  503. package/dist/shared/utils/validator-util.d.ts +12 -0
  504. package/dist/shared/utils/window-shared-util.d.ts +26 -0
  505. package/dist/shared/window/consts/window-record-id.d.ts +2 -0
  506. package/dist/shared/window/consts/window-type-name.d.ts +1 -0
  507. package/dist/shared/window/identity/main-window-identity.d.ts +5 -0
  508. package/dist/shared/window/identity/setting-window-identity.d.ts +5 -0
  509. package/dist/shared/window/index.d.ts +8 -0
  510. package/dist/shared/window/index.js +23 -0
  511. package/dist/shared/window/types/window.d.ts +84 -0
  512. package/dist/types/index.d.ts +102 -0
  513. package/dist/types/index.js +0 -0
  514. package/dist/vite/build/build-chunk.d.ts +53 -0
  515. package/dist/vite/build/build-csp-update.d.ts +80 -0
  516. package/dist/vite/build/build-obfuscation.d.ts +33 -0
  517. package/dist/vite/build/component-map.d.ts +38 -0
  518. package/dist/vite/build/component-resolver.d.ts +6 -0
  519. package/dist/vite/build/index.d.ts +9 -0
  520. package/dist/vite/build/index.js +18 -0
  521. package/dist/vite/build/types/build.d.ts +13 -0
  522. package/dist/vite/config/electron-app-config.d.ts +6 -0
  523. package/dist/vite/config/electron-builder-config.d.ts +8 -0
  524. package/dist/vite/config/electron-vite-config.d.ts +9 -0
  525. package/dist/vite/config/index.d.ts +11 -0
  526. package/dist/vite/config/index.js +2259 -0
  527. package/dist/vite/config/types/electron-app-options.d.ts +22 -0
  528. package/dist/vite/config/types/electron-builder-options.d.ts +16 -0
  529. package/dist/vite/config/types/electron-vite-options.d.ts +43 -0
  530. package/dist/vite/config/types/vite-obfuscation.d.ts +36 -0
  531. package/dist/vite/config/vite-obfuscation-config.d.ts +6 -0
  532. package/dist/vite/mode/index.d.ts +4 -0
  533. package/dist/vite/mode/index.js +8 -0
  534. package/dist/vite/mode/vite-mode.d.ts +37 -0
  535. package/dist/vite/orval/index.d.ts +4 -0
  536. package/dist/vite/orval/index.js +75 -0
  537. package/dist/vite/orval/orval-global-types.d.ts +23 -0
  538. package/dist/vite/utils/file-write-vite-util.d.ts +30 -0
  539. package/dist/vite/utils/index.d.ts +5 -0
  540. package/dist/vite/utils/index.js +10 -0
  541. package/dist/vite/utils/runtime-config-vite-util.d.ts +39 -0
  542. package/package.json +287 -0
@@ -0,0 +1,723 @@
1
+ import {
2
+ UpdaterChannels
3
+ } from "./chunk-LQ67F6EY.js";
4
+ import {
5
+ BytesUtil
6
+ } from "./chunk-OUFO3LM4.js";
7
+ import {
8
+ TimeUtil
9
+ } from "./chunk-FPN7JYR4.js";
10
+ import {
11
+ AppMode
12
+ } from "./chunk-GN2FNR3Z.js";
13
+
14
+ // src/main/updater/updater-manager-abstract.ts
15
+ import { app, BrowserWindow } from "electron";
16
+ import { copyFileSync, existsSync, mkdirSync } from "node:fs";
17
+ import { createRequire } from "node:module";
18
+ import { dirname, join, resolve } from "node:path";
19
+ import { fileURLToPath } from "node:url";
20
+ var require2 = createRequire(import.meta.url);
21
+ var { autoUpdater } = require2("electron-updater");
22
+ var { CancellationToken } = require2("builder-util-runtime");
23
+ var UpdaterErrorMessages = {
24
+ ERR_UPDATER_INVALID_CHANNEL: "\u66F4\u65B0\u901A\u9053\u914D\u7F6E\u65E0\u6548",
25
+ ERR_UPDATER_INVALID_VERSION: "\u5E94\u7528\u6216\u66F4\u65B0\u7248\u672C\u53F7\u65E0\u6548",
26
+ ERR_UPDATER_INVALID_PROVIDER_CONFIGURATION: "\u66F4\u65B0\u670D\u52A1\u914D\u7F6E\u65E0\u6548",
27
+ ERR_UPDATER_UNSUPPORTED_PROVIDER: "\u5F53\u524D\u66F4\u65B0\u670D\u52A1\u7C7B\u578B\u4E0D\u53D7\u652F\u6301",
28
+ ERR_UPDATER_CHANNEL_FILE_NOT_FOUND: "\u672A\u627E\u5230\u66F4\u65B0\u4FE1\u606F\uFF0C\u8BF7\u68C0\u67E5\u66F4\u65B0\u8BA2\u9605\u5730\u5740",
29
+ ERR_UPDATER_LATEST_VERSION_NOT_FOUND: "\u672A\u627E\u5230\u53EF\u7528\u7684\u66F4\u65B0\u7248\u672C",
30
+ ERR_UPDATER_INVALID_RELEASE_FEED: "\u66F4\u65B0\u53D1\u5E03\u4FE1\u606F\u683C\u5F0F\u65E0\u6548",
31
+ ERR_UPDATER_NO_PUBLISHED_VERSIONS: "\u66F4\u65B0\u670D\u52A1\u4E2D\u6CA1\u6709\u5DF2\u53D1\u5E03\u7248\u672C",
32
+ ERR_UPDATER_RELEASE_NOT_FOUND: "\u672A\u627E\u5230\u6307\u5B9A\u7684\u66F4\u65B0\u7248\u672C",
33
+ ERR_UPDATER_INVALID_UPDATE_INFO: "\u66F4\u65B0\u4FE1\u606F\u683C\u5F0F\u65E0\u6548",
34
+ ERR_UPDATER_NO_FILES_PROVIDED: "\u66F4\u65B0\u4FE1\u606F\u4E2D\u6CA1\u6709\u53EF\u4E0B\u8F7D\u6587\u4EF6",
35
+ ERR_UPDATER_NO_CHECKSUM: "\u66F4\u65B0\u6587\u4EF6\u7F3A\u5C11\u6821\u9A8C\u4FE1\u606F",
36
+ ERR_UPDATER_ASSET_NOT_FOUND: "\u672A\u627E\u5230\u66F4\u65B0\u6587\u4EF6",
37
+ ERR_UPDATER_BLOCKMAP_FILE_NOT_FOUND: "\u672A\u627E\u5230\u5DEE\u5206\u66F4\u65B0\u6587\u4EF6",
38
+ ERR_UPDATER_OLD_FILE_NOT_FOUND: "\u672A\u627E\u5230\u5F53\u524D\u5E94\u7528\u6587\u4EF6\uFF0C\u65E0\u6CD5\u6267\u884C\u66F4\u65B0",
39
+ ERR_UPDATER_ZIP_FILE_NOT_FOUND: "\u672A\u627E\u5230\u66F4\u65B0\u6240\u9700\u7684 ZIP \u6587\u4EF6",
40
+ ERR_UPDATER_WEB_INSTALLER_DISABLED: "\u5F53\u524D\u5E94\u7528\u4E0D\u5141\u8BB8\u4F7F\u7528\u5728\u7EBF\u5B89\u88C5\u5305\u66F4\u65B0",
41
+ ERR_UPDATER_INVALID_SIGNATURE: "\u66F4\u65B0\u6587\u4EF6\u7B7E\u540D\u9A8C\u8BC1\u5931\u8D25",
42
+ ERR_CHECKSUM_MISMATCH: "\u66F4\u65B0\u6587\u4EF6\u5B8C\u6574\u6027\u6821\u9A8C\u5931\u8D25",
43
+ ERR_DATA_SPLITTER_BYTE_COUNT_MISMATCH: "\u66F4\u65B0\u5305\u6570\u636E\u5904\u7406\u5931\u8D25",
44
+ ERR_DATA_SPLITTER_LENGTH_MISMATCH: "\u66F4\u65B0\u5305\u6570\u636E\u5904\u7406\u5931\u8D25",
45
+ ERR_DATA_SPLITTER_TASK_INDEX_ASSERT_FAILED: "\u66F4\u65B0\u5305\u6570\u636E\u5904\u7406\u5931\u8D25",
46
+ ERR_DATA_SPLITTER_TASK_INDEX_IS_NULL: "\u66F4\u65B0\u5305\u6570\u636E\u5904\u7406\u5931\u8D25",
47
+ ERR_INVALID_ARGUMENT: "\u66F4\u65B0\u8BF7\u6C42\u53C2\u6570\u65E0\u6548",
48
+ ENOENT: "\u66F4\u65B0\u6240\u9700\u6587\u4EF6\u4E0D\u5B58\u5728",
49
+ EACCES: "\u6CA1\u6709\u6743\u9650\u8BBF\u95EE\u66F4\u65B0\u6240\u9700\u6587\u4EF6",
50
+ EPERM: "\u6CA1\u6709\u6743\u9650\u6267\u884C\u66F4\u65B0\u64CD\u4F5C",
51
+ ENOSPC: "\u78C1\u76D8\u7A7A\u95F4\u4E0D\u8DB3\uFF0C\u65E0\u6CD5\u5B8C\u6210\u66F4\u65B0"
52
+ };
53
+ var UpdaterManagerAbstract = class {
54
+ //<editor-fold desc="属性">
55
+ /** Xion 应用 */
56
+ xoApp;
57
+ /** 是否已绑定事件 */
58
+ bound = false;
59
+ /** 是否已执行启动检查 */
60
+ checkedOnStart = false;
61
+ /** 当前检查任务 */
62
+ checkOperation;
63
+ /** 当前下载任务 */
64
+ downloadOperation;
65
+ /** 当前下载取消令牌 */
66
+ downloadCancellationToken;
67
+ /** 下载开始时间 */
68
+ downloadStartedAt;
69
+ /** 本次运行期间下载取消次数 */
70
+ downloadCancellationCount = 0;
71
+ /** 是否禁用更新器直至应用重启 */
72
+ disabledUntilRestart = false;
73
+ /** 更新状态 */
74
+ state = {
75
+ status: "idle"
76
+ };
77
+ //</editor-fold>
78
+ //<editor-fold desc="构造函数">
79
+ /**
80
+ * 构造函数
81
+ * @param {XoAppAbstract} xoApp Xion 应用
82
+ */
83
+ constructor(xoApp) {
84
+ this.xoApp = xoApp;
85
+ }
86
+ //</editor-fold>
87
+ //<editor-fold desc="配置">
88
+ /**
89
+ * 获取更新器配置
90
+ * @returns {XoUpdater.Config}
91
+ * @protected
92
+ */
93
+ config() {
94
+ return this.xoApp.getUpdaterConfig() ?? {};
95
+ }
96
+ /**
97
+ * 获取更新器用户设置
98
+ * @returns {XoUpdater.UserSettings}
99
+ */
100
+ getUserSettings() {
101
+ return { ...this.xoApp.getAppStore().getUpdaterSettings() };
102
+ }
103
+ /**
104
+ * 获取更新器设置
105
+ * @returns {XoUpdater.EffectiveSettings}
106
+ */
107
+ getSettings() {
108
+ const config = this.config();
109
+ const userSettings = this.getUserSettings();
110
+ return {
111
+ enable: userSettings.enable ?? config.enable ?? false,
112
+ autoCheckDelay: userSettings.autoCheckDelay ?? config.autoCheckDelay ?? 5e3,
113
+ autoDownload: userSettings.autoDownload ?? config.autoDownload ?? false,
114
+ autoInstallOnAppQuit: userSettings.autoInstallOnAppQuit ?? config.autoInstallOnAppQuit ?? false,
115
+ allowPrerelease: config.allowPrerelease ?? false,
116
+ allowDowngrade: config.allowDowngrade ?? false,
117
+ disableDifferentialDownload: userSettings.disableDifferentialDownload ?? config.disableDifferentialDownload ?? false,
118
+ allowUserFeedUrl: config.allowUserFeedUrl ?? true,
119
+ feedUrl: this.resolveUserFeedUrl(userSettings.feedUrl),
120
+ isSilent: userSettings.isSilent ?? false,
121
+ isForceRunAfter: userSettings.isForceRunAfter ?? true
122
+ };
123
+ }
124
+ /**
125
+ * 设置更新器用户设置
126
+ * @param {XoUpdater.UserSettings} settings 更新器用户设置
127
+ */
128
+ setSettings(settings) {
129
+ this.validateUserSettings(settings);
130
+ this.xoApp.getAppStore().setUpdaterSettings(settings);
131
+ this.applyRuntimeSettings();
132
+ this.syncSettingsToAllWindows();
133
+ }
134
+ /**
135
+ * 重置更新器用户设置
136
+ */
137
+ resetSettings() {
138
+ this.xoApp.getAppStore().resetUpdaterSettings();
139
+ this.applyRuntimeSettings();
140
+ this.syncSettingsToAllWindows();
141
+ }
142
+ /**
143
+ * 是否启用更新器模块
144
+ * @returns {boolean}
145
+ */
146
+ enabled() {
147
+ return this.getSettings().enable !== false;
148
+ }
149
+ /**
150
+ * 是否启动时检查更新
151
+ * @returns {boolean}
152
+ */
153
+ checkOnStart() {
154
+ return this.getSettings().enable === "checkOnStart";
155
+ }
156
+ /**
157
+ * 更新 electron-updater 配置
158
+ * @private
159
+ */
160
+ applyConfig(applyFeedUrl) {
161
+ const settings = this.getSettings();
162
+ autoUpdater.autoDownload = settings.autoDownload && !this.disabledUntilRestart;
163
+ autoUpdater.autoInstallOnAppQuit = settings.autoInstallOnAppQuit;
164
+ autoUpdater.allowPrerelease = settings.allowPrerelease;
165
+ autoUpdater.allowDowngrade = settings.allowDowngrade;
166
+ autoUpdater.disableDifferentialDownload = settings.disableDifferentialDownload;
167
+ autoUpdater.disableWebInstaller = true;
168
+ if (applyFeedUrl && settings.feedUrl) {
169
+ autoUpdater.setFeedURL({
170
+ provider: "generic",
171
+ url: settings.feedUrl
172
+ });
173
+ }
174
+ const label = "[electron-updater]";
175
+ autoUpdater.logger = {
176
+ info: (...args) => this.xoApp.updaterLog.info(label, ...args),
177
+ warn: (...args) => this.xoApp.updaterLog.warn(label, ...args),
178
+ error: (...args) => this.xoApp.updaterLog.error(label, ...args.map((arg) => this.formatLogError(arg))),
179
+ debug: (...args) => this.xoApp.updaterLog.debug(label, ...args)
180
+ };
181
+ if (AppMode.isDev()) {
182
+ this.ensureDevUpdateConfig();
183
+ autoUpdater.forceDevUpdateConfig = true;
184
+ }
185
+ }
186
+ //</editor-fold>
187
+ /**
188
+ * 初始化更新器模块
189
+ * @returns {boolean}
190
+ */
191
+ initialize() {
192
+ if (!this.enabled()) {
193
+ return false;
194
+ }
195
+ this.bind();
196
+ this.applyConfig(true);
197
+ return true;
198
+ }
199
+ /**
200
+ * 绑定更新器事件
201
+ * @private
202
+ */
203
+ bind() {
204
+ if (this.bound) {
205
+ return;
206
+ }
207
+ this.bound = true;
208
+ autoUpdater.on("checking-for-update", () => {
209
+ this.downloadStartedAt = void 0;
210
+ this.updateState({ status: "checking" });
211
+ });
212
+ autoUpdater.on("update-available", (info) => {
213
+ if (autoUpdater.autoDownload) {
214
+ this.downloadStartedAt = Date.now();
215
+ }
216
+ this.updateState({
217
+ status: "available",
218
+ updateInfo: info
219
+ });
220
+ });
221
+ autoUpdater.on("update-not-available", (info) => {
222
+ this.updateState({
223
+ status: "not-available",
224
+ updateInfo: info
225
+ });
226
+ });
227
+ autoUpdater.on("download-progress", (progress) => {
228
+ if (this.state.status === "cancelling") {
229
+ return;
230
+ }
231
+ this.downloadStartedAt ??= Date.now();
232
+ const downloadProgress = this.toDownloadProgress(progress, this.downloadStartedAt);
233
+ const formattedProgress = {
234
+ total: BytesUtil.format(downloadProgress.total),
235
+ delta: BytesUtil.format(downloadProgress.delta),
236
+ remaining: BytesUtil.format(downloadProgress.remaining),
237
+ transferred: BytesUtil.format(downloadProgress.transferred),
238
+ percent: `${downloadProgress.percent.toFixed(2)}%`,
239
+ bytesPerSecond: `${BytesUtil.format(downloadProgress.bytesPerSecond)}/s`,
240
+ remainingTime: downloadProgress.remainingSeconds === null ? "-" : TimeUtil.formatSeconds(downloadProgress.remainingSeconds),
241
+ elapsedTime: TimeUtil.formatSeconds(downloadProgress.elapsedSeconds)
242
+ };
243
+ this.updateState({
244
+ status: "downloading",
245
+ updateInfo: this.state.updateInfo,
246
+ progress: downloadProgress,
247
+ formattedProgress
248
+ });
249
+ });
250
+ autoUpdater.on("update-downloaded", (info) => {
251
+ this.downloadStartedAt = void 0;
252
+ this.updateState({
253
+ status: "downloaded",
254
+ updateInfo: info
255
+ });
256
+ });
257
+ autoUpdater.on("update-cancelled", (info) => {
258
+ this.downloadStartedAt = void 0;
259
+ this.updateState({
260
+ status: "available",
261
+ updateInfo: info
262
+ });
263
+ });
264
+ autoUpdater.on("error", (err) => {
265
+ this.downloadStartedAt = void 0;
266
+ const error = this.formatError(err);
267
+ this.updateState({
268
+ status: "error",
269
+ error
270
+ });
271
+ });
272
+ }
273
+ /**
274
+ * 检查更新
275
+ * @returns {Promise<UpdateCheckResult | null>}
276
+ */
277
+ async checkForUpdates() {
278
+ if (!this.enabled() || this.disabledUntilRestart) {
279
+ return null;
280
+ }
281
+ if (this.checkOperation) {
282
+ return this.checkOperation;
283
+ }
284
+ if (this.downloadOperation) {
285
+ this.xoApp.updaterLog.debug("\u66F4\u65B0\u6B63\u5728\u4E0B\u8F7D\uFF0C\u8DF3\u8FC7\u68C0\u67E5");
286
+ return null;
287
+ }
288
+ this.checkOperation = this.executeCheckForUpdates();
289
+ return this.checkOperation;
290
+ }
291
+ /**
292
+ * 下载更新
293
+ * @returns {Promise<string[]>}
294
+ */
295
+ async downloadUpdate() {
296
+ if (!this.enabled() || this.disabledUntilRestart) {
297
+ return [];
298
+ }
299
+ if (this.downloadOperation) {
300
+ return this.downloadOperation;
301
+ }
302
+ const cancellationToken = new CancellationToken();
303
+ this.downloadCancellationToken = cancellationToken;
304
+ this.downloadStartedAt = Date.now();
305
+ this.downloadOperation = this.handleDownloadPromise(
306
+ autoUpdater.downloadUpdate(cancellationToken),
307
+ cancellationToken
308
+ );
309
+ return this.downloadOperation;
310
+ }
311
+ /**
312
+ * 取消下载更新
313
+ * @returns {boolean} 是否已发起取消
314
+ */
315
+ cancelDownload() {
316
+ const cancellationToken = this.downloadCancellationToken;
317
+ if (!cancellationToken || cancellationToken.cancelled) {
318
+ this.xoApp.updaterLog.debug("\u5F53\u524D\u6CA1\u6709\u53EF\u53D6\u6D88\u7684\u66F4\u65B0\u4E0B\u8F7D");
319
+ return false;
320
+ }
321
+ this.downloadCancellationCount++;
322
+ if (this.downloadCancellationCount >= 2) {
323
+ this.disabledUntilRestart = true;
324
+ autoUpdater.autoDownload = false;
325
+ this.xoApp.updaterLog.warn("\u66F4\u65B0\u4E0B\u8F7D\u5DF2\u53D6\u6D88\u4E24\u6B21\uFF0C\u672C\u6B21\u8FD0\u884C\u671F\u95F4\u7981\u7528\u66F4\u65B0\u5668");
326
+ }
327
+ this.updateState({
328
+ ...this.state,
329
+ status: "cancelling"
330
+ });
331
+ cancellationToken.cancel();
332
+ this.xoApp.updaterLog.info("\u6B63\u5728\u53D6\u6D88\u66F4\u65B0\u4E0B\u8F7D");
333
+ return true;
334
+ }
335
+ /**
336
+ * 获取更新状态
337
+ * @returns {XoUpdater.State}
338
+ */
339
+ getState() {
340
+ return {
341
+ ...this.state,
342
+ downloadCancellationCount: this.downloadCancellationCount,
343
+ disabledUntilRestart: this.disabledUntilRestart
344
+ };
345
+ }
346
+ /**
347
+ * 获取 electron-updater 实例
348
+ * @returns {typeof autoUpdater}
349
+ */
350
+ getAutoUpdater() {
351
+ if (!this.enabled()) {
352
+ throw new Error("\u66F4\u65B0\u5668\u6A21\u5757\u672A\u542F\u7528");
353
+ }
354
+ return autoUpdater;
355
+ }
356
+ /**
357
+ * 退出并安装更新
358
+ */
359
+ quitAndInstall() {
360
+ if (!this.enabled() || this.disabledUntilRestart) {
361
+ return;
362
+ }
363
+ const settings = this.getSettings();
364
+ autoUpdater.quitAndInstall(settings.isSilent, settings.isForceRunAfter);
365
+ }
366
+ /**
367
+ * 通知到窗口并尝试自动检查更新
368
+ * @param {Electron.BrowserWindow} window 窗口
369
+ */
370
+ syncToWindowAndCheckForUpdates(window) {
371
+ this.syncToWindow(window);
372
+ this.syncSettingsToWindow(window);
373
+ if (!this.checkOnStart() || this.checkedOnStart) {
374
+ return;
375
+ }
376
+ this.checkedOnStart = true;
377
+ setTimeout(() => {
378
+ void this.checkForUpdates();
379
+ }, this.getSettings().autoCheckDelay);
380
+ }
381
+ /**
382
+ * 更新状态
383
+ * @param {XoUpdater.State} state 状态
384
+ * @protected
385
+ */
386
+ updateState(state) {
387
+ this.state = state;
388
+ this.syncToAllWindows();
389
+ }
390
+ /**
391
+ * 通知到渲染进程
392
+ * @protected
393
+ */
394
+ syncToAllWindows() {
395
+ if (!this.enabled()) return;
396
+ BrowserWindow.getAllWindows().forEach((window) => this.syncToWindow(window));
397
+ }
398
+ /**
399
+ * 通知到渲染进程
400
+ * @param {Electron.BrowserWindow} window 窗口
401
+ * @protected
402
+ */
403
+ syncToWindow(window) {
404
+ if (window.isDestroyed() || window.webContents.isDestroyed()) {
405
+ return;
406
+ }
407
+ window.webContents.send(UpdaterChannels.onState, this.getState());
408
+ }
409
+ /**
410
+ * 通知更新器设置到全部渲染进程
411
+ */
412
+ syncSettingsToAllWindows() {
413
+ BrowserWindow.getAllWindows().forEach((window) => this.syncSettingsToWindow(window));
414
+ }
415
+ /**
416
+ * 通知更新器设置到渲染进程
417
+ * @param {Electron.BrowserWindow} window 窗口
418
+ */
419
+ syncSettingsToWindow(window) {
420
+ if (window.isDestroyed() || window.webContents.isDestroyed()) {
421
+ return;
422
+ }
423
+ window.webContents.send(UpdaterChannels.onSettings, this.getSettings());
424
+ }
425
+ /**
426
+ * 应用可立即生效的用户设置
427
+ * @private
428
+ */
429
+ applyRuntimeSettings() {
430
+ if (!this.enabled()) {
431
+ autoUpdater.autoDownload = false;
432
+ autoUpdater.autoInstallOnAppQuit = false;
433
+ return;
434
+ }
435
+ this.bind();
436
+ this.applyConfig(false);
437
+ }
438
+ /**
439
+ * 验证更新器用户设置
440
+ * @param {XoUpdater.UserSettings} settings 更新器用户设置
441
+ * @private
442
+ */
443
+ validateUserSettings(settings) {
444
+ if (settings.feedUrl?.trim()) {
445
+ this.validateUserFeedUrl(settings.feedUrl);
446
+ }
447
+ }
448
+ /**
449
+ * 解析用户更新地址
450
+ * @param {string} feedUrl 用户更新地址
451
+ * @returns {string | undefined}
452
+ * @private
453
+ */
454
+ resolveUserFeedUrl(feedUrl) {
455
+ if (!this.config().allowUserFeedUrl || !feedUrl?.trim()) {
456
+ return void 0;
457
+ }
458
+ try {
459
+ return this.validateUserFeedUrl(feedUrl);
460
+ } catch {
461
+ return void 0;
462
+ }
463
+ }
464
+ /**
465
+ * 验证用户更新地址
466
+ * @param {string} feedUrl 用户更新地址
467
+ * @returns {string}
468
+ * @private
469
+ */
470
+ validateUserFeedUrl(feedUrl) {
471
+ if (!this.config().allowUserFeedUrl) {
472
+ throw new Error("\u5F53\u524D\u5E94\u7528\u4E0D\u5141\u8BB8\u7528\u6237\u81EA\u5B9A\u4E49\u66F4\u65B0\u5730\u5740");
473
+ }
474
+ const value = feedUrl.trim();
475
+ let url;
476
+ try {
477
+ url = new URL(value);
478
+ } catch {
479
+ throw new Error(`\u65E0\u6548\u7684\u7528\u6237\u66F4\u65B0\u5730\u5740: ${value}`);
480
+ }
481
+ const allowedProtocols = AppMode.isDev() ? ["http:", "https:"] : ["https:"];
482
+ if (!allowedProtocols.includes(url.protocol)) {
483
+ throw new Error(`\u7528\u6237\u66F4\u65B0\u5730\u5740\u4EC5\u652F\u6301 ${allowedProtocols.join("\u3001")}`);
484
+ }
485
+ if (url.username || url.password) {
486
+ throw new Error("\u7528\u6237\u66F4\u65B0\u5730\u5740\u4E0D\u80FD\u5305\u542B\u7528\u6237\u540D\u6216\u5BC6\u7801");
487
+ }
488
+ return value;
489
+ }
490
+ /**
491
+ * 执行检查更新
492
+ * @returns {Promise<UpdateCheckResult | null>}
493
+ * @private
494
+ */
495
+ async executeCheckForUpdates() {
496
+ try {
497
+ const result = await autoUpdater.checkForUpdates();
498
+ const downloadPromise = result?.downloadPromise;
499
+ if (downloadPromise) {
500
+ this.downloadCancellationToken = result.cancellationToken;
501
+ this.downloadOperation = this.handleDownloadPromise(downloadPromise, result.cancellationToken);
502
+ }
503
+ return result;
504
+ } catch (error) {
505
+ this.xoApp.updaterLog.error("\u68C0\u67E5\u66F4\u65B0\u5F02\u5E38", this.formatLogError(error));
506
+ return null;
507
+ } finally {
508
+ this.checkOperation = void 0;
509
+ }
510
+ }
511
+ /**
512
+ * 转换为自定义下载进度
513
+ * @param {ProgressInfo} progress 进度信息
514
+ * @param {number} downloadStartedAt 下载开始时间
515
+ * @returns {XoUpdater.DownloadProgress}
516
+ * @private
517
+ */
518
+ toDownloadProgress(progress, downloadStartedAt) {
519
+ const speed = progress.bytesPerSecond;
520
+ const completed = progress.percent >= 100 || progress.transferred >= progress.total;
521
+ return {
522
+ ...progress,
523
+ // 剩余字节数
524
+ remaining: completed ? 0 : Math.max(0, progress.total - progress.transferred),
525
+ // 预计剩余秒数
526
+ remainingSeconds: completed ? 0 : speed > 0 && Number.isFinite(speed) ? Math.ceil(Math.max(0, progress.total - progress.transferred) / speed) : null,
527
+ // 已耗时秒数
528
+ elapsedSeconds: Math.max(0, Math.floor((Date.now() - downloadStartedAt) / 1e3))
529
+ };
530
+ }
531
+ /**
532
+ * 处理下载任务
533
+ * @param {Promise<string[]>} downloadPromise 下载任务
534
+ * @param cancellationToken 取消令牌
535
+ * @returns {Promise<string[]>}
536
+ * @private
537
+ */
538
+ async handleDownloadPromise(downloadPromise, cancellationToken) {
539
+ try {
540
+ return await downloadPromise;
541
+ } catch (error) {
542
+ if (!cancellationToken?.cancelled) {
543
+ this.xoApp.updaterLog.error("\u66F4\u65B0\u4E0B\u8F7D\u5F02\u5E38", this.formatLogError(error));
544
+ }
545
+ return [];
546
+ } finally {
547
+ if (cancellationToken?.cancelled && this.state.status === "cancelling") {
548
+ this.updateState({
549
+ status: "available",
550
+ updateInfo: this.state.updateInfo
551
+ });
552
+ }
553
+ if (this.downloadCancellationToken === cancellationToken) {
554
+ this.downloadCancellationToken = void 0;
555
+ }
556
+ this.downloadOperation = void 0;
557
+ this.downloadStartedAt = void 0;
558
+ }
559
+ }
560
+ /**
561
+ * 格式化错误信息
562
+ * @param {unknown} error 错误
563
+ * @returns {XoUpdater.ErrorInfo}
564
+ * @protected
565
+ */
566
+ formatError(error) {
567
+ if (error instanceof Error) {
568
+ const metadata = error;
569
+ const code = typeof metadata.code === "string" ? metadata.code : void 0;
570
+ const statusCode = typeof metadata.statusCode === "number" ? metadata.statusCode : this.getHttpStatusCode(code);
571
+ return {
572
+ name: error.name,
573
+ code,
574
+ statusCode,
575
+ message: this.getUpdaterErrorMessage(code, statusCode, error.name, error.message),
576
+ detail: error.message,
577
+ stack: error.stack,
578
+ cause: error.cause === void 0 ? void 0 : this.formatError(error.cause)
579
+ };
580
+ }
581
+ const detail = String(error);
582
+ return {
583
+ name: "Error",
584
+ message: "\u66F4\u65B0\u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",
585
+ detail
586
+ };
587
+ }
588
+ /**
589
+ * 获取 HTTP 状态码
590
+ * @param {string | undefined} code 错误代码
591
+ * @returns {number | undefined}
592
+ * @private
593
+ */
594
+ getHttpStatusCode(code) {
595
+ const matched = code?.match(/^HTTP_ERROR_(\d{3})$/);
596
+ if (!matched) {
597
+ return void 0;
598
+ }
599
+ return Number(matched[1]);
600
+ }
601
+ /**
602
+ * 获取用户可读的更新错误消息
603
+ * @param {string | undefined} code 错误代码
604
+ * @param {number | undefined} statusCode HTTP 状态码
605
+ * @param {string} name 错误名称
606
+ * @param {string} detail 原始错误详情
607
+ * @returns {string}
608
+ * @private
609
+ */
610
+ getUpdaterErrorMessage(code, statusCode, name, detail) {
611
+ if (code && UpdaterErrorMessages[code]) {
612
+ return UpdaterErrorMessages[code];
613
+ }
614
+ if (statusCode !== void 0) {
615
+ if (statusCode === 401) {
616
+ return "\u66F4\u65B0\u670D\u52A1\u8EAB\u4EFD\u9A8C\u8BC1\u5931\u8D25";
617
+ }
618
+ if (statusCode === 403) {
619
+ return "\u66F4\u65B0\u670D\u52A1\u62D2\u7EDD\u8BBF\u95EE";
620
+ }
621
+ if (statusCode === 404) {
622
+ return "\u672A\u627E\u5230\u66F4\u65B0\u8D44\u6E90\uFF0C\u8BF7\u68C0\u67E5\u66F4\u65B0\u8BA2\u9605\u5730\u5740";
623
+ }
624
+ if (statusCode === 408) {
625
+ return "\u8FDE\u63A5\u66F4\u65B0\u670D\u52A1\u8D85\u65F6";
626
+ }
627
+ if (statusCode === 429) {
628
+ return "\u66F4\u65B0\u68C0\u67E5\u8FC7\u4E8E\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5";
629
+ }
630
+ if (statusCode >= 500) {
631
+ return "\u66F4\u65B0\u670D\u52A1\u6682\u65F6\u4E0D\u53EF\u7528\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5";
632
+ }
633
+ return `\u66F4\u65B0\u670D\u52A1\u8BF7\u6C42\u5931\u8D25\uFF08HTTP ${statusCode}\uFF09`;
634
+ }
635
+ if (code && ["ECONNREFUSED", "ERR_CONNECTION_REFUSED"].includes(code)) {
636
+ return "\u65E0\u6CD5\u8FDE\u63A5\u66F4\u65B0\u670D\u52A1\uFF0C\u8BF7\u68C0\u67E5\u66F4\u65B0\u8BA2\u9605\u5730\u5740";
637
+ }
638
+ if (code && ["ENOTFOUND", "EAI_AGAIN", "ERR_NAME_NOT_RESOLVED"].includes(code)) {
639
+ return "\u65E0\u6CD5\u89E3\u6790\u66F4\u65B0\u670D\u52A1\u5730\u5740\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u6216\u8BA2\u9605\u5730\u5740";
640
+ }
641
+ if (code && ["ETIMEDOUT", "ESOCKETTIMEDOUT", "ERR_TIMED_OUT"].includes(code)) {
642
+ return "\u8FDE\u63A5\u66F4\u65B0\u670D\u52A1\u8D85\u65F6";
643
+ }
644
+ if (code && ["ECONNRESET", "EPIPE", "ERR_CONNECTION_RESET"].includes(code)) {
645
+ return "\u4E0E\u66F4\u65B0\u670D\u52A1\u7684\u8FDE\u63A5\u5DF2\u4E2D\u65AD\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5";
646
+ }
647
+ if (code && ["ENETUNREACH", "ERR_INTERNET_DISCONNECTED"].includes(code)) {
648
+ return "\u7F51\u7EDC\u4E0D\u53EF\u7528\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5";
649
+ }
650
+ if (code && /^(ERR_CERT_|ERR_SSL_|ERR_TLS_)/.test(code)) {
651
+ return "\u66F4\u65B0\u670D\u52A1\u8BC1\u4E66\u9A8C\u8BC1\u5931\u8D25";
652
+ }
653
+ if (code && ["CERT_HAS_EXPIRED", "DEPTH_ZERO_SELF_SIGNED_CERT", "UNABLE_TO_VERIFY_LEAF_SIGNATURE"].includes(code)) {
654
+ return "\u66F4\u65B0\u670D\u52A1\u8BC1\u4E66\u9A8C\u8BC1\u5931\u8D25";
655
+ }
656
+ if (name === "CancellationError" || /^(cancelled|canceled)$/i.test(detail.trim())) {
657
+ return "\u66F4\u65B0\u64CD\u4F5C\u5DF2\u53D6\u6D88";
658
+ }
659
+ if (/checksum mismatch/i.test(detail)) {
660
+ return "\u66F4\u65B0\u6587\u4EF6\u5B8C\u6574\u6027\u6821\u9A8C\u5931\u8D25";
661
+ }
662
+ return "\u66F4\u65B0\u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5";
663
+ }
664
+ /**
665
+ * 格式化日志错误并保留堆栈
666
+ * @param {unknown} error 错误
667
+ * @returns {unknown}
668
+ * @private
669
+ */
670
+ formatLogError(error) {
671
+ if (error instanceof Error) {
672
+ return (error.stack ?? error.message).replace(/^Error:\s+Error:\s+/, "Error: ");
673
+ }
674
+ if (typeof error === "string") {
675
+ return error.replace(/^Error:\s+Error:\s+/, "Error: ");
676
+ }
677
+ return error;
678
+ }
679
+ /**
680
+ * 确保开发环境更新器配置存在
681
+ * <p>electron-updater 开发环境只读取业务应用目录下的 dev-app-update.yml。</p>
682
+ * <p>业务端已创建时使用业务端配置,未创建时复制框架默认配置。</p>
683
+ * @protected
684
+ */
685
+ ensureDevUpdateConfig() {
686
+ const targetPath = join(app.getAppPath(), "dev-app-update.yml");
687
+ if (existsSync(targetPath)) {
688
+ return;
689
+ }
690
+ const sourcePath = this.frameworkDevUpdateConfigPath();
691
+ if (!sourcePath) {
692
+ this.xoApp.updaterLog.warn("\u6846\u67B6\u9ED8\u8BA4 dev-app-update.yml \u4E0D\u5B58\u5728\uFF0C\u5F00\u53D1\u73AF\u5883\u66F4\u65B0\u68C0\u67E5\u53EF\u80FD\u4F1A\u8DF3\u8FC7");
693
+ return;
694
+ }
695
+ mkdirSync(dirname(targetPath), { recursive: true });
696
+ copyFileSync(sourcePath, targetPath);
697
+ this.xoApp.updaterLog.debug("\u5DF2\u590D\u5236\u6846\u67B6\u9ED8\u8BA4 dev-app-update.yml");
698
+ }
699
+ /**
700
+ * 获取框架默认开发更新器配置路径
701
+ * @returns {string | undefined}
702
+ * @protected
703
+ */
704
+ frameworkDevUpdateConfigPath() {
705
+ const currentDir = dirname(fileURLToPath(import.meta.url));
706
+ const candidates = [
707
+ // 当前 updater 代码被 tsup 拆到 dist/chunk-files 时使用
708
+ resolve(currentDir, "../main/updater/dev-app-update.yml"),
709
+ // 当前 updater 代码直接在 dist/main/updater 下时使用
710
+ resolve(currentDir, "./dev-app-update.yml")
711
+ ];
712
+ return candidates.find((candidate) => existsSync(candidate));
713
+ }
714
+ };
715
+
716
+ // src/main/updater/updater-manager.ts
717
+ var UpdaterManager = class extends UpdaterManagerAbstract {
718
+ };
719
+
720
+ export {
721
+ UpdaterManagerAbstract,
722
+ UpdaterManager
723
+ };