From eda30250c63fff8165d9cb4355434410478a731d Mon Sep 17 00:00:00 2001 From: Jokul Date: Fri, 10 Jul 2026 23:46:34 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E8=BF=81=E7=A7=BB=E8=87=B3=20elect?= =?UTF-8?q?ron-vite=20=E5=AE=98=E6=96=B9=E6=8E=A8=E8=8D=90=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - electron/* -> src/main/* (主进程) - electron/preload.ts -> src/preload/index.ts (预加载) - src/electron-api.d.ts -> src/preload/index.d.ts (类型声明) - src/* -> src/renderer/src/* (渲染进程) - src/index.html -> src/renderer/index.html - electron.vite.config.ts 简化为自动入口检测 (零配置) - tsconfig.app.json -> tsconfig.web.json, 更新 includes/paths - 构建产物 dist-electron/ -> out/ (修复 main/preload 输出覆盖 bug) - 更新 package.json main 字段 + electron-builder files - 更新 .gitignore + eslint ignores - 更新 AGENTS.md 架构文档 --- .gitignore | 4 +- AGENTS.md | 171 +++++++++--------- electron.vite.config.ts | 35 +--- eslint.config.js | 2 +- package.json | 7 +- {electron => src/main}/credential.ts | 0 electron/main.ts => src/main/index.ts | 2 +- {electron => src/main}/ipc-handlers.ts | 0 {electron => src/main}/redis/commandLogger.ts | 0 {electron => src/main}/redis/connection.ts | 0 {electron => src/main}/redis/format.ts | 0 {electron => src/main}/redis/hash.ts | 0 {electron => src/main}/redis/index.ts | 0 {electron => src/main}/redis/keys.ts | 0 {electron => src/main}/redis/list.ts | 0 {electron => src/main}/redis/pubsub.ts | 0 {electron => src/main}/redis/server.ts | 0 {electron => src/main}/redis/set.ts | 0 {electron => src/main}/redis/stream.ts | 0 {electron => src/main}/redis/string.ts | 0 {electron => src/main}/redis/zset.ts | 0 {electron => src/main}/store.ts | 0 {electron => src/main}/updater.ts | 0 {electron => src/main}/win-state.ts | 0 src/{electron-api.d.ts => preload/index.d.ts} | 0 electron/preload.ts => src/preload/index.ts | 0 src/{ => renderer}/index.html | 2 +- src/{ => renderer/src}/App.vue | 0 src/{ => renderer/src}/components/CliView.vue | 0 .../src}/components/CommandLog.vue | 0 .../src}/components/ConnectionCard.vue | 0 .../src}/components/ConnectionList.vue | 0 .../src}/components/DbSelector.vue | 0 .../src}/components/HashEditor.vue | 0 .../src}/components/KeyBrowser.vue | 0 .../src}/components/KeyDetail.vue | 0 src/{ => renderer/src}/components/KeyList.vue | 0 .../src}/components/ListEditor.vue | 0 .../src}/components/MainArea.vue | 0 .../src}/components/MemoryAnalysis.vue | 0 .../src}/components/NewConnectionDialog.vue | 0 .../src}/components/ReJsonEditor.vue | 0 .../src}/components/SetEditor.vue | 0 .../src}/components/SettingsView.vue | 0 src/{ => renderer/src}/components/Sidebar.vue | 0 .../src}/components/SlowLogView.vue | 0 .../src}/components/StatusBar.vue | 0 .../src}/components/StatusView.vue | 0 .../src}/components/StreamEditor.vue | 0 .../src}/components/StringEditor.vue | 0 .../src}/components/TitleBar.vue | 0 .../src}/components/ZsetEditor.vue | 0 .../src}/composables/useKeyboard.ts | 0 src/{ => renderer/src}/data/commands.ts | 0 src/{ => renderer/src}/env.d.ts | 0 src/{ => renderer/src}/i18n/index.ts | 0 src/{ => renderer/src}/i18n/locales/de.ts | 0 src/{ => renderer/src}/i18n/locales/en.ts | 0 src/{ => renderer/src}/i18n/locales/ja.ts | 0 src/{ => renderer/src}/i18n/locales/ko.ts | 0 src/{ => renderer/src}/i18n/locales/zh-CN.ts | 0 src/{ => renderer/src}/main.ts | 0 src/{ => renderer/src}/stores/app.ts | 0 src/{ => renderer/src}/stores/connection.ts | 0 src/{ => renderer/src}/stores/key.ts | 0 src/{ => renderer/src}/styles/global.css | 0 src/{ => renderer/src}/styles/variables.css | 0 src/{ => renderer/src}/utils/binary.ts | 0 tsconfig.json | 4 +- tsconfig.node.json | 2 +- tsconfig.app.json => tsconfig.web.json | 10 +- 71 files changed, 112 insertions(+), 127 deletions(-) rename {electron => src/main}/credential.ts (100%) rename electron/main.ts => src/main/index.ts (96%) rename {electron => src/main}/ipc-handlers.ts (100%) rename {electron => src/main}/redis/commandLogger.ts (100%) rename {electron => src/main}/redis/connection.ts (100%) rename {electron => src/main}/redis/format.ts (100%) rename {electron => src/main}/redis/hash.ts (100%) rename {electron => src/main}/redis/index.ts (100%) rename {electron => src/main}/redis/keys.ts (100%) rename {electron => src/main}/redis/list.ts (100%) rename {electron => src/main}/redis/pubsub.ts (100%) rename {electron => src/main}/redis/server.ts (100%) rename {electron => src/main}/redis/set.ts (100%) rename {electron => src/main}/redis/stream.ts (100%) rename {electron => src/main}/redis/string.ts (100%) rename {electron => src/main}/redis/zset.ts (100%) rename {electron => src/main}/store.ts (100%) rename {electron => src/main}/updater.ts (100%) rename {electron => src/main}/win-state.ts (100%) rename src/{electron-api.d.ts => preload/index.d.ts} (100%) rename electron/preload.ts => src/preload/index.ts (100%) rename src/{ => renderer}/index.html (81%) rename src/{ => renderer/src}/App.vue (100%) rename src/{ => renderer/src}/components/CliView.vue (100%) rename src/{ => renderer/src}/components/CommandLog.vue (100%) rename src/{ => renderer/src}/components/ConnectionCard.vue (100%) rename src/{ => renderer/src}/components/ConnectionList.vue (100%) rename src/{ => renderer/src}/components/DbSelector.vue (100%) rename src/{ => renderer/src}/components/HashEditor.vue (100%) rename src/{ => renderer/src}/components/KeyBrowser.vue (100%) rename src/{ => renderer/src}/components/KeyDetail.vue (100%) rename src/{ => renderer/src}/components/KeyList.vue (100%) rename src/{ => renderer/src}/components/ListEditor.vue (100%) rename src/{ => renderer/src}/components/MainArea.vue (100%) rename src/{ => renderer/src}/components/MemoryAnalysis.vue (100%) rename src/{ => renderer/src}/components/NewConnectionDialog.vue (100%) rename src/{ => renderer/src}/components/ReJsonEditor.vue (100%) rename src/{ => renderer/src}/components/SetEditor.vue (100%) rename src/{ => renderer/src}/components/SettingsView.vue (100%) rename src/{ => renderer/src}/components/Sidebar.vue (100%) rename src/{ => renderer/src}/components/SlowLogView.vue (100%) rename src/{ => renderer/src}/components/StatusBar.vue (100%) rename src/{ => renderer/src}/components/StatusView.vue (100%) rename src/{ => renderer/src}/components/StreamEditor.vue (100%) rename src/{ => renderer/src}/components/StringEditor.vue (100%) rename src/{ => renderer/src}/components/TitleBar.vue (100%) rename src/{ => renderer/src}/components/ZsetEditor.vue (100%) rename src/{ => renderer/src}/composables/useKeyboard.ts (100%) rename src/{ => renderer/src}/data/commands.ts (100%) rename src/{ => renderer/src}/env.d.ts (100%) rename src/{ => renderer/src}/i18n/index.ts (100%) rename src/{ => renderer/src}/i18n/locales/de.ts (100%) rename src/{ => renderer/src}/i18n/locales/en.ts (100%) rename src/{ => renderer/src}/i18n/locales/ja.ts (100%) rename src/{ => renderer/src}/i18n/locales/ko.ts (100%) rename src/{ => renderer/src}/i18n/locales/zh-CN.ts (100%) rename src/{ => renderer/src}/main.ts (100%) rename src/{ => renderer/src}/stores/app.ts (100%) rename src/{ => renderer/src}/stores/connection.ts (100%) rename src/{ => renderer/src}/stores/key.ts (100%) rename src/{ => renderer/src}/styles/global.css (100%) rename src/{ => renderer/src}/styles/variables.css (100%) rename src/{ => renderer/src}/utils/binary.ts (100%) rename tsconfig.app.json => tsconfig.web.json (66%) diff --git a/.gitignore b/.gitignore index 42269c2..ccf51d0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ node_modules/ -dist-electron/ +out/ release/ dist/ *.log @@ -15,7 +15,7 @@ yarn-error.log* *.njsproj *.sln -# Legacy codebase — archived Vue 2 version, not part of v2 build +# Legacy codebase - archived Vue 2 version, not part of v2 build legacy/ # Brainstorming artifacts diff --git a/AGENTS.md b/AGENTS.md index cd1816b..1c59677 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -6,10 +6,10 @@ Fork of [AnotherRedisDesktopManager](https://github.com/qishibo/AnotherRedisDesk ## Stack -- **Shell:** Electron 43 (`electron/main.ts`) -- **Preload:** `electron/preload.ts` (contextBridge, typed API) -- **Renderer:** Vue 3 + Pinia + Element Plus + Vue Router (`src/`) -- **IPC types:** `src/electron-api.d.ts` (ElectronAPI interface, global Window augmentation) +- **Shell:** Electron 43 (`src/main/index.ts`) +- **Preload:** `src/preload/index.ts` (contextBridge, typed API) +- **Renderer:** Vue 3 + Pinia + Element Plus + Vue Router (`src/renderer/src/`) +- **IPC types:** `src/preload/index.d.ts` (ElectronAPI interface, global Window augmentation) - **Build:** electron-vite + Vite 6 + TypeScript 5 - **Redis client:** ioredis 5 (main process only) - **Persistence:** electron-store + safeStorage (credentials) @@ -18,7 +18,7 @@ Fork of [AnotherRedisDesktopManager](https://github.com/qishibo/AnotherRedisDesk ```bash npm run dev # electron-vite dev (HMR, renderer on :5173) -npm run build # production build -> dist-electron/ +npm run build # production build -> out/ npm start # preview built app npm run build:unpack # build + electron-builder --dir npm run build:win # build + electron-builder --win @@ -30,80 +30,84 @@ npm run lint # eslint --fix ## Architecture ``` -Electron main (electron/) - ├── main.ts # Window creation, app lifecycle - ├── preload.ts # contextBridge.exposeInMainWorld - ├── ipc-handlers.ts # all IPC channel handlers - ├── store.ts # electron-store (connections, settings) - ├── credential.ts # safeStorage encrypt/decrypt - ├── win-state.ts # window position persistence - ├── updater.ts # electron-updater (check/download/install) - └── redis/ # Redis service modules - ├── index.ts # Unified export - ├── connection.ts # connect, disconnect, isClientConnected - ├── keys.ts # scan, delete, rename, ttl, batchDelete - ├── string.ts # get, set - ├── hash.ts # hscan, hset, hdel - ├── list.ts # range, push, set, remove - ├── set.ts # members, add, remove - ├── zset.ts # range, add, remove - ├── stream.ts # info, range, add, trim - ├── server.ts # info, select, ping, slowlog - ├── pubsub.ts # SUBSCRIBE/UNSUBSCRIBE +Electron main (src/main/) + ├── index.ts # Window creation, app lifecycle + ├── ipc-handlers.ts # all IPC channel handlers + ├── store.ts # electron-store (connections, settings) + ├── credential.ts # safeStorage encrypt/decrypt + ├── win-state.ts # window position persistence + ├── updater.ts # electron-updater (check/download/install) + └── redis/ # Redis service modules + ├── index.ts # Unified export + ├── connection.ts # connect, disconnect, isClientConnected + ├── keys.ts # scan, delete, rename, ttl, batchDelete + ├── string.ts # get, set + ├── hash.ts # hscan, hset, hdel + ├── list.ts # range, push, set, remove + ├── set.ts # members, add, remove + ├── zset.ts # range, add, remove + ├── stream.ts # info, range, add, trim + ├── server.ts # info, select, ping, slowlog + ├── pubsub.ts # SUBSCRIBE/UNSUBSCRIBE ├── commandLogger.ts # command execution log - └── format.ts # value decode/format detection + └── format.ts # value decode/format detection -Renderer (src/) - ├── main.ts # Vue 3 bootstrap (Pinia, Element Plus) - ├── App.vue # Shell layout (TitleBar + Sidebar + MainArea + StatusBar) - ├── env.d.ts # Vite client + *.vue / *.css module declarations - ├── electron-api.d.ts # ElectronAPI interface + global Window augmentation - ├── stores/ - │ ├── app.ts # theme, fontSize, scanCount - │ ├── connection.ts # connections CRUD, connect/disconnect, health check - │ └── key.ts # key list, scan, tree view, selected key data - ├── components/ - │ ├── TitleBar.vue # window controls - │ ├── StatusBar.vue # connection status, DB selector - │ ├── Sidebar.vue # keyboard shortcuts, dialog host - │ ├── ConnectionList.vue # search, import/export, new button - │ ├── ConnectionCard.vue # single connection card - │ ├── NewConnectionDialog.vue # create/edit/test connection - │ ├── DbSelector.vue # database 0-15 dropdown - │ ├── MainArea.vue # tab host (Status/Keys/CLI/SlowLog/Settings) - │ ├── StatusView.vue # INFO dashboard with stat cards - │ ├── KeyBrowser.vue # split pane (KeyList + KeyDetail) - │ ├── KeyList.vue # pattern search, filter, SCAN, multi-select - │ ├── KeyDetail.vue # type dispatch, TTL, rename, copy - │ ├── StringEditor.vue # view/edit with JSON format - │ ├── HashEditor.vue # field table CRUD - │ ├── ListEditor.vue # paginated elements - │ ├── SetEditor.vue # member list - │ ├── ZsetEditor.vue # sorted set with scores - │ ├── StreamEditor.vue # stream entries - │ ├── CliView.vue # interactive terminal - │ ├── SlowLogView.vue # slow log table - │ ├── SettingsView.vue # theme, language, scan count - │ ├── MemoryAnalysis.vue # MEMORY USAGE scan & sort - │ ├── CommandLog.vue # command execution history - │ └── ReJsonEditor.vue # JSON.GET / JSON.SET editing - ├── i18n/ - │ ├── index.ts # useI18n composable - │ └── locales/ - │ ├── en.ts # English - │ ├── zh-CN.ts # 中文 - │ ├── ja.ts # 日本語 - │ ├── ko.ts # 한국어 - │ └── de.ts # Deutsch - ├── composables/ - │ └── useKeyboard.ts # keyboard shortcut handler - ├── styles/ - │ ├── variables.css # CSS custom properties - │ └── global.css # global overrides - ├── data/ - │ └── commands.ts # Redis command definitions - └── utils/ - └── binary.ts # hex ↔ buffer conversion +Preload (src/preload/) + ├── index.ts # contextBridge.exposeInMainWorld + └── index.d.ts # ElectronAPI type declarations + +Renderer (src/renderer/) + ├── index.html # Vite entry HTML + └── src/ + ├── main.ts # Vue 3 bootstrap (Pinia, Element Plus) + ├── App.vue # Shell layout (TitleBar + Sidebar + MainArea + StatusBar) + ├── env.d.ts # Vite client + *.vue / *.css module declarations + ├── stores/ + │ ├── app.ts # theme, fontSize, scanCount + │ ├── connection.ts # connections CRUD, connect/disconnect, health check + │ └── key.ts # key list, scan, tree view, selected key data + ├── components/ + │ ├── TitleBar.vue # window controls + │ ├── StatusBar.vue # connection status, DB selector + │ ├── Sidebar.vue # keyboard shortcuts, dialog host + │ ├── ConnectionList.vue # search, import/export, new button + │ ├── ConnectionCard.vue # single connection card + │ ├── NewConnectionDialog.vue # create/edit/test connection + │ ├── DbSelector.vue # database 0-15 dropdown + │ ├── MainArea.vue # tab host (Status/Keys/CLI/SlowLog/Settings) + │ ├── StatusView.vue # INFO dashboard with stat cards + │ ├── KeyBrowser.vue # split pane (KeyList + KeyDetail) + │ ├── KeyList.vue # pattern search, filter, SCAN, multi-select + │ ├── KeyDetail.vue # type dispatch, TTL, rename, copy + │ ├── StringEditor.vue # view/edit with JSON format + │ ├── HashEditor.vue # field table CRUD + │ ├── ListEditor.vue # paginated elements + │ ├── SetEditor.vue # member list + │ ├── ZsetEditor.vue # sorted set with scores + │ ├── StreamEditor.vue # stream entries + │ ├── CliView.vue # interactive terminal + │ ├── SlowLogView.vue # slow log table + │ ├── SettingsView.vue # theme, language, scan count + │ ├── MemoryAnalysis.vue # MEMORY USAGE scan & sort + │ ├── CommandLog.vue # command execution history + │ └── ReJsonEditor.vue # JSON.GET / JSON.SET editing + ├── i18n/ + │ ├── index.ts # useI18n composable + │ └── locales/ + │ ├── en.ts # English + │ ├── zh-CN.ts # 中文 + │ ├── ja.ts # 日本語 + │ ├── ko.ts # 한국어 + │ └── de.ts # Deutsch + ├── composables/ + │ └── useKeyboard.ts # keyboard shortcut handler + ├── styles/ + │ ├── variables.css # CSS custom properties + │ └── global.css # global overrides + ├── data/ + │ └── commands.ts # Redis command definitions + └── utils/ + └── binary.ts # hex ↔ buffer conversion ``` ## IPC Channels @@ -203,19 +207,20 @@ Renderer (src/) ## Build config - `electron.vite.config.ts` defines three build targets: main, preload, renderer -- Main + preload output to `dist-electron/`; renderer to `dist-electron/renderer/` +- Entry points auto-detected: `src/main/index.ts`, `src/preload/index.ts`, `src/renderer/index.html` +- Build output: `out/main/`, `out/preload/`, `out/renderer/` - electron-builder packages into `release/` - Renderer dev server runs on port 5173 - Main/preload use `externalizeDepsPlugin()` to keep node_modules external -- `@renderer` alias resolves to `src` +- `@renderer` alias resolves to `src/renderer/src` ## TypeScript -- Root `tsconfig.json` references `tsconfig.node.json` (main + preload) and `tsconfig.app.json` (renderer) -- Node target (`tsconfig.node.json`) includes `electron/**/*` + `electron.vite.config.ts` -- App target (`tsconfig.app.json`) includes `src/**/*` +- Root `tsconfig.json` references `tsconfig.node.json` (main + preload) and `tsconfig.web.json` (renderer) +- Node target (`tsconfig.node.json`) includes `src/main/**/*`, `src/preload/**/*.ts`, `electron.vite.config.ts` +- Web target (`tsconfig.web.json`) includes `src/renderer/src/**/*`, `src/preload/**/*.d.ts` - Both use `verbatimModuleSyntax` (type-only imports required) and `moduleResolution: "bundler"` -- `src/electron-api.d.ts` declares the `ElectronAPI` interface and augments global `Window` +- `src/preload/index.d.ts` declares the `ElectronAPI` interface and augments global `Window` ## Security diff --git a/electron.vite.config.ts b/electron.vite.config.ts index a41a7ea..19d4a58 100644 --- a/electron.vite.config.ts +++ b/electron.vite.config.ts @@ -5,44 +5,19 @@ import { resolve } from 'path' export default defineConfig({ main: { plugins: [externalizeDepsPlugin()], - build: { - outDir: 'dist-electron', - rollupOptions: { - input: { - index: resolve(__dirname, 'electron/main.ts') - } - } - } }, preload: { plugins: [externalizeDepsPlugin()], - build: { - outDir: 'dist-electron', - rollupOptions: { - input: { - index: resolve(__dirname, 'electron/preload.ts') - } - } - } }, renderer: { - root: 'src', - build: { - outDir: resolve(__dirname, 'dist-electron/renderer'), - rollupOptions: { - input: { - index: resolve(__dirname, 'src/index.html') - } - } - }, resolve: { alias: { - '@renderer': resolve(__dirname, 'src') - } + '@renderer': resolve(__dirname, 'src/renderer/src'), + }, }, plugins: [vue()], server: { - port: 5173 - } - } + port: 5173, + }, + }, }) diff --git a/eslint.config.js b/eslint.config.js index d41069d..ffc2821 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -13,7 +13,7 @@ const commonLanguageOptions = { } export default tseslint.config( - { ignores: ['dist', 'dist-electron', 'release', 'coverage', 'node_modules'] }, + { ignores: ['dist', 'out', 'release', 'coverage', 'node_modules'] }, { extends: [js.configs.recommended, ...tseslint.configs.recommended], files: ['**/*.ts'], diff --git a/package.json b/package.json index 77d1859..9e1b432 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ }, "homepage": "http://git.jokul.space/Jokul/JRedisDesktop", "type": "module", - "main": "./dist-electron/main.js", + "main": "./out/main/index.js", "allowScripts": { "electron": true, "esbuild": true, @@ -60,10 +60,9 @@ "output": "release" }, "files": [ - "dist/**/*", - "dist-electron/**/*", + "out/**/*", "!**/*.map", - "!dist-electron/**/*.map", + "!out/**/*.map", "package.json" ], "publish": { diff --git a/electron/credential.ts b/src/main/credential.ts similarity index 100% rename from electron/credential.ts rename to src/main/credential.ts diff --git a/electron/main.ts b/src/main/index.ts similarity index 96% rename from electron/main.ts rename to src/main/index.ts index 4ce4f02..7aa5a91 100644 --- a/electron/main.ts +++ b/src/main/index.ts @@ -22,7 +22,7 @@ function createWindow(): void { icon: nativeImage.createFromPath(iconPath), backgroundColor: nativeTheme.shouldUseDarkColors ? '#0f0f1a' : '#f8fafc', webPreferences: { - preload: join(__dirname, '../preload.js'), + preload: join(__dirname, '../preload/index.mjs'), contextIsolation: true, nodeIntegration: false, sandbox: false, diff --git a/electron/ipc-handlers.ts b/src/main/ipc-handlers.ts similarity index 100% rename from electron/ipc-handlers.ts rename to src/main/ipc-handlers.ts diff --git a/electron/redis/commandLogger.ts b/src/main/redis/commandLogger.ts similarity index 100% rename from electron/redis/commandLogger.ts rename to src/main/redis/commandLogger.ts diff --git a/electron/redis/connection.ts b/src/main/redis/connection.ts similarity index 100% rename from electron/redis/connection.ts rename to src/main/redis/connection.ts diff --git a/electron/redis/format.ts b/src/main/redis/format.ts similarity index 100% rename from electron/redis/format.ts rename to src/main/redis/format.ts diff --git a/electron/redis/hash.ts b/src/main/redis/hash.ts similarity index 100% rename from electron/redis/hash.ts rename to src/main/redis/hash.ts diff --git a/electron/redis/index.ts b/src/main/redis/index.ts similarity index 100% rename from electron/redis/index.ts rename to src/main/redis/index.ts diff --git a/electron/redis/keys.ts b/src/main/redis/keys.ts similarity index 100% rename from electron/redis/keys.ts rename to src/main/redis/keys.ts diff --git a/electron/redis/list.ts b/src/main/redis/list.ts similarity index 100% rename from electron/redis/list.ts rename to src/main/redis/list.ts diff --git a/electron/redis/pubsub.ts b/src/main/redis/pubsub.ts similarity index 100% rename from electron/redis/pubsub.ts rename to src/main/redis/pubsub.ts diff --git a/electron/redis/server.ts b/src/main/redis/server.ts similarity index 100% rename from electron/redis/server.ts rename to src/main/redis/server.ts diff --git a/electron/redis/set.ts b/src/main/redis/set.ts similarity index 100% rename from electron/redis/set.ts rename to src/main/redis/set.ts diff --git a/electron/redis/stream.ts b/src/main/redis/stream.ts similarity index 100% rename from electron/redis/stream.ts rename to src/main/redis/stream.ts diff --git a/electron/redis/string.ts b/src/main/redis/string.ts similarity index 100% rename from electron/redis/string.ts rename to src/main/redis/string.ts diff --git a/electron/redis/zset.ts b/src/main/redis/zset.ts similarity index 100% rename from electron/redis/zset.ts rename to src/main/redis/zset.ts diff --git a/electron/store.ts b/src/main/store.ts similarity index 100% rename from electron/store.ts rename to src/main/store.ts diff --git a/electron/updater.ts b/src/main/updater.ts similarity index 100% rename from electron/updater.ts rename to src/main/updater.ts diff --git a/electron/win-state.ts b/src/main/win-state.ts similarity index 100% rename from electron/win-state.ts rename to src/main/win-state.ts diff --git a/src/electron-api.d.ts b/src/preload/index.d.ts similarity index 100% rename from src/electron-api.d.ts rename to src/preload/index.d.ts diff --git a/electron/preload.ts b/src/preload/index.ts similarity index 100% rename from electron/preload.ts rename to src/preload/index.ts diff --git a/src/index.html b/src/renderer/index.html similarity index 81% rename from src/index.html rename to src/renderer/index.html index 5dda43e..cb1f0d5 100644 --- a/src/index.html +++ b/src/renderer/index.html @@ -7,6 +7,6 @@
- + diff --git a/src/App.vue b/src/renderer/src/App.vue similarity index 100% rename from src/App.vue rename to src/renderer/src/App.vue diff --git a/src/components/CliView.vue b/src/renderer/src/components/CliView.vue similarity index 100% rename from src/components/CliView.vue rename to src/renderer/src/components/CliView.vue diff --git a/src/components/CommandLog.vue b/src/renderer/src/components/CommandLog.vue similarity index 100% rename from src/components/CommandLog.vue rename to src/renderer/src/components/CommandLog.vue diff --git a/src/components/ConnectionCard.vue b/src/renderer/src/components/ConnectionCard.vue similarity index 100% rename from src/components/ConnectionCard.vue rename to src/renderer/src/components/ConnectionCard.vue diff --git a/src/components/ConnectionList.vue b/src/renderer/src/components/ConnectionList.vue similarity index 100% rename from src/components/ConnectionList.vue rename to src/renderer/src/components/ConnectionList.vue diff --git a/src/components/DbSelector.vue b/src/renderer/src/components/DbSelector.vue similarity index 100% rename from src/components/DbSelector.vue rename to src/renderer/src/components/DbSelector.vue diff --git a/src/components/HashEditor.vue b/src/renderer/src/components/HashEditor.vue similarity index 100% rename from src/components/HashEditor.vue rename to src/renderer/src/components/HashEditor.vue diff --git a/src/components/KeyBrowser.vue b/src/renderer/src/components/KeyBrowser.vue similarity index 100% rename from src/components/KeyBrowser.vue rename to src/renderer/src/components/KeyBrowser.vue diff --git a/src/components/KeyDetail.vue b/src/renderer/src/components/KeyDetail.vue similarity index 100% rename from src/components/KeyDetail.vue rename to src/renderer/src/components/KeyDetail.vue diff --git a/src/components/KeyList.vue b/src/renderer/src/components/KeyList.vue similarity index 100% rename from src/components/KeyList.vue rename to src/renderer/src/components/KeyList.vue diff --git a/src/components/ListEditor.vue b/src/renderer/src/components/ListEditor.vue similarity index 100% rename from src/components/ListEditor.vue rename to src/renderer/src/components/ListEditor.vue diff --git a/src/components/MainArea.vue b/src/renderer/src/components/MainArea.vue similarity index 100% rename from src/components/MainArea.vue rename to src/renderer/src/components/MainArea.vue diff --git a/src/components/MemoryAnalysis.vue b/src/renderer/src/components/MemoryAnalysis.vue similarity index 100% rename from src/components/MemoryAnalysis.vue rename to src/renderer/src/components/MemoryAnalysis.vue diff --git a/src/components/NewConnectionDialog.vue b/src/renderer/src/components/NewConnectionDialog.vue similarity index 100% rename from src/components/NewConnectionDialog.vue rename to src/renderer/src/components/NewConnectionDialog.vue diff --git a/src/components/ReJsonEditor.vue b/src/renderer/src/components/ReJsonEditor.vue similarity index 100% rename from src/components/ReJsonEditor.vue rename to src/renderer/src/components/ReJsonEditor.vue diff --git a/src/components/SetEditor.vue b/src/renderer/src/components/SetEditor.vue similarity index 100% rename from src/components/SetEditor.vue rename to src/renderer/src/components/SetEditor.vue diff --git a/src/components/SettingsView.vue b/src/renderer/src/components/SettingsView.vue similarity index 100% rename from src/components/SettingsView.vue rename to src/renderer/src/components/SettingsView.vue diff --git a/src/components/Sidebar.vue b/src/renderer/src/components/Sidebar.vue similarity index 100% rename from src/components/Sidebar.vue rename to src/renderer/src/components/Sidebar.vue diff --git a/src/components/SlowLogView.vue b/src/renderer/src/components/SlowLogView.vue similarity index 100% rename from src/components/SlowLogView.vue rename to src/renderer/src/components/SlowLogView.vue diff --git a/src/components/StatusBar.vue b/src/renderer/src/components/StatusBar.vue similarity index 100% rename from src/components/StatusBar.vue rename to src/renderer/src/components/StatusBar.vue diff --git a/src/components/StatusView.vue b/src/renderer/src/components/StatusView.vue similarity index 100% rename from src/components/StatusView.vue rename to src/renderer/src/components/StatusView.vue diff --git a/src/components/StreamEditor.vue b/src/renderer/src/components/StreamEditor.vue similarity index 100% rename from src/components/StreamEditor.vue rename to src/renderer/src/components/StreamEditor.vue diff --git a/src/components/StringEditor.vue b/src/renderer/src/components/StringEditor.vue similarity index 100% rename from src/components/StringEditor.vue rename to src/renderer/src/components/StringEditor.vue diff --git a/src/components/TitleBar.vue b/src/renderer/src/components/TitleBar.vue similarity index 100% rename from src/components/TitleBar.vue rename to src/renderer/src/components/TitleBar.vue diff --git a/src/components/ZsetEditor.vue b/src/renderer/src/components/ZsetEditor.vue similarity index 100% rename from src/components/ZsetEditor.vue rename to src/renderer/src/components/ZsetEditor.vue diff --git a/src/composables/useKeyboard.ts b/src/renderer/src/composables/useKeyboard.ts similarity index 100% rename from src/composables/useKeyboard.ts rename to src/renderer/src/composables/useKeyboard.ts diff --git a/src/data/commands.ts b/src/renderer/src/data/commands.ts similarity index 100% rename from src/data/commands.ts rename to src/renderer/src/data/commands.ts diff --git a/src/env.d.ts b/src/renderer/src/env.d.ts similarity index 100% rename from src/env.d.ts rename to src/renderer/src/env.d.ts diff --git a/src/i18n/index.ts b/src/renderer/src/i18n/index.ts similarity index 100% rename from src/i18n/index.ts rename to src/renderer/src/i18n/index.ts diff --git a/src/i18n/locales/de.ts b/src/renderer/src/i18n/locales/de.ts similarity index 100% rename from src/i18n/locales/de.ts rename to src/renderer/src/i18n/locales/de.ts diff --git a/src/i18n/locales/en.ts b/src/renderer/src/i18n/locales/en.ts similarity index 100% rename from src/i18n/locales/en.ts rename to src/renderer/src/i18n/locales/en.ts diff --git a/src/i18n/locales/ja.ts b/src/renderer/src/i18n/locales/ja.ts similarity index 100% rename from src/i18n/locales/ja.ts rename to src/renderer/src/i18n/locales/ja.ts diff --git a/src/i18n/locales/ko.ts b/src/renderer/src/i18n/locales/ko.ts similarity index 100% rename from src/i18n/locales/ko.ts rename to src/renderer/src/i18n/locales/ko.ts diff --git a/src/i18n/locales/zh-CN.ts b/src/renderer/src/i18n/locales/zh-CN.ts similarity index 100% rename from src/i18n/locales/zh-CN.ts rename to src/renderer/src/i18n/locales/zh-CN.ts diff --git a/src/main.ts b/src/renderer/src/main.ts similarity index 100% rename from src/main.ts rename to src/renderer/src/main.ts diff --git a/src/stores/app.ts b/src/renderer/src/stores/app.ts similarity index 100% rename from src/stores/app.ts rename to src/renderer/src/stores/app.ts diff --git a/src/stores/connection.ts b/src/renderer/src/stores/connection.ts similarity index 100% rename from src/stores/connection.ts rename to src/renderer/src/stores/connection.ts diff --git a/src/stores/key.ts b/src/renderer/src/stores/key.ts similarity index 100% rename from src/stores/key.ts rename to src/renderer/src/stores/key.ts diff --git a/src/styles/global.css b/src/renderer/src/styles/global.css similarity index 100% rename from src/styles/global.css rename to src/renderer/src/styles/global.css diff --git a/src/styles/variables.css b/src/renderer/src/styles/variables.css similarity index 100% rename from src/styles/variables.css rename to src/renderer/src/styles/variables.css diff --git a/src/utils/binary.ts b/src/renderer/src/utils/binary.ts similarity index 100% rename from src/utils/binary.ts rename to src/renderer/src/utils/binary.ts diff --git a/tsconfig.json b/tsconfig.json index 1ffef60..155ebaa 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,7 @@ { "files": [], "references": [ - { "path": "./tsconfig.app.json" }, - { "path": "./tsconfig.node.json" } + { "path": "./tsconfig.node.json" }, + { "path": "./tsconfig.web.json" } ] } diff --git a/tsconfig.node.json b/tsconfig.node.json index decf714..646bf28 100644 --- a/tsconfig.node.json +++ b/tsconfig.node.json @@ -19,5 +19,5 @@ "noUnusedParameters": true, "noFallthroughCasesInSwitch": true }, - "include": ["electron.vite.config.ts", "electron"] + "include": ["electron.vite.config.ts", "src/main/**/*", "src/preload/**/*.ts"] } diff --git a/tsconfig.app.json b/tsconfig.web.json similarity index 66% rename from tsconfig.app.json rename to tsconfig.web.json index cae1a52..18b83c2 100644 --- a/tsconfig.app.json +++ b/tsconfig.web.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.web.tsbuildinfo", "target": "es2023", "lib": ["ESNext", "DOM"], "module": "ESNext", @@ -14,10 +14,16 @@ "moduleDetection": "force", "noEmit": true, + /* Path alias */ + "baseUrl": ".", + "paths": { + "@renderer/*": ["src/renderer/src/*"] + }, + /* Linting */ "noUnusedLocals": true, "noUnusedParameters": true, "noFallthroughCasesInSwitch": true }, - "include": ["src"] + "include": ["src/renderer/src/**/*", "src/preload/**/*.d.ts"] }