From 173bc99550831dc7d54879c43f503b61304a9613 Mon Sep 17 00:00:00 2001 From: Claiyc <58397976+Claiyc@users.noreply.github.com> Date: Wed, 30 Nov 2022 16:44:27 +0100 Subject: [PATCH] feat: next design iteration (#30) * more changes and general strucutre Signed-off-by: Kevin Beier * partially rewrote the desktopCapture feature Signed-off-by: Kevin Beier * adjusted prettierrc Signed-off-by: Kevin Beier * updating formating and formating Signed-off-by: Kevin Beier * class infrastructure & uml * regen uml & add npm script * added Vigad logo Signed-off-by: Kevin Beier * rewrote a lot of the streamhandler implementation Signed-off-by: Kevin Beier * documenting StreamHandler and finished preview Signed-off-by: Kevin Beier * resolved pr issues Signed-off-by: Kevin Beier Signed-off-by: Kevin Beier Co-authored-by: Kevin Beier --- .eslintrc.js | 44 +- .prettierrc | 18 +- docs/proc-uml.svg | 88 ++++ electron-builder.json5 | 57 ++- electron/main/index.ts | 235 +++++------ index.html | 28 +- package-lock.json | 78 +++- package.json | 5 +- src/App.vue | 382 ++++-------------- src/assets/electron.svg | 1 - src/assets/logo.png | Bin 0 -> 158652 bytes src/assets/vite.svg | 1 - src/assets/vue.svg | 1 - src/components/MainVideoStream.vue | 58 +++ src/components/VideoStream.vue | 156 ------- src/components/ViewComponent.vue | 25 ++ .../capture-area/CaptureAreaActions.vue | 21 - .../CaptureAreaMetaProperties.vue | 164 ++++---- .../capture-area/CaptureAreaSearchValue.vue | 269 ++++++------ src/composable/useDesktopCapture.ts | 25 -- src/env.d.ts | 8 +- src/main.ts | 20 +- src/plugins/vuetify.ts | 80 ++-- src/plugins/webfontloader.ts | 16 +- src/proc/CaptureArea.ts | 18 + src/proc/StreamHandler.ts | 222 ++++++++++ src/proc/TesseractHandler.ts | 8 + src/proc/Vigad.ts | 2 +- src/proc/regex/ConstraintRegex.ts | 11 + src/proc/regex/Regex.ts | 4 + src/proc/regex/RegexGroup.ts | 9 + src/proc/regex/RegexHandler.ts | 3 + src/proc/regex/ValueRegex.ts | 5 + src/router/index.ts | 18 +- src/router/routes.ts | 72 ++-- src/styles/variables.scss | 22 - src/views/ErrorPage.vue | 5 +- src/views/HomePage.vue | 10 - src/views/PageNotFound.vue | 13 +- src/views/RegexView.vue | 50 +-- src/views/RunPage.vue | 22 +- src/views/SourcesView.vue | 313 ++++---------- tsconfig.json | 38 +- tsconfig.node.json | 20 +- vite.config.ts | 98 ++--- 45 files changed, 1344 insertions(+), 1399 deletions(-) create mode 100644 docs/proc-uml.svg delete mode 100644 src/assets/electron.svg create mode 100644 src/assets/logo.png delete mode 100644 src/assets/vite.svg delete mode 100644 src/assets/vue.svg create mode 100644 src/components/MainVideoStream.vue delete mode 100644 src/components/VideoStream.vue create mode 100644 src/components/ViewComponent.vue delete mode 100644 src/components/capture-area/CaptureAreaActions.vue delete mode 100644 src/composable/useDesktopCapture.ts create mode 100644 src/proc/CaptureArea.ts create mode 100644 src/proc/StreamHandler.ts create mode 100644 src/proc/TesseractHandler.ts create mode 100644 src/proc/regex/ConstraintRegex.ts create mode 100644 src/proc/regex/Regex.ts create mode 100644 src/proc/regex/RegexGroup.ts create mode 100644 src/proc/regex/RegexHandler.ts create mode 100644 src/proc/regex/ValueRegex.ts delete mode 100644 src/styles/variables.scss delete mode 100644 src/views/HomePage.vue diff --git a/.eslintrc.js b/.eslintrc.js index 455b2e1..bc00a36 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,23 +1,23 @@ module.exports = { - env: { - browser: true, - es2021: true, - }, - extends: [ - 'eslint:recommended', - 'plugin:vue/essential', - 'plugin:@typescript-eslint/recommended', - 'prettier/@typescript-eslint', - ], - parserOptions: { - ecmaVersion: 'latest', - parser: '@typescript-eslint/parser', - sourceType: 'module', - }, - plugins: ['vue', '@typescript-eslint'], - rules: { - // override/add rules settings here, such as: - 'vue/no-unused-vars': 'error', - 'vue/script-setup-uses-vars': 'off', - }, -} + env: { + browser: true, + es2021: true, + }, + extends: [ + 'eslint:recommended', + 'plugin:vue/essential', + 'plugin:@typescript-eslint/recommended', + 'prettier/@typescript-eslint', + ], + parserOptions: { + ecmaVersion: 'latest', + parser: '@typescript-eslint/parser', + sourceType: 'module', + }, + plugins: ['vue', '@typescript-eslint'], + rules: { + // override/add rules settings here, such as: + 'vue/no-unused-vars': 'error', + 'vue/script-setup-uses-vars': 'off', + }, +}; diff --git a/.prettierrc b/.prettierrc index b4c9912..f75271c 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,11 +1,11 @@ { - "semi": false, - "tabWidth": 2, - "useTabs": false, - "printWidth": 80, - "endOfLine": "auto", - "singleQuote": true, - "trailingComma": "es5", - "bracketSpacing": true, - "arrowParens": "always" + "semi": true, + "tabWidth": 4, + "useTabs": false, + "printWidth": 80, + "endOfLine": "auto", + "singleQuote": true, + "trailingComma": "es5", + "bracketSpacing": true, + "arrowParens": "always" } diff --git a/docs/proc-uml.svg b/docs/proc-uml.svg new file mode 100644 index 0000000..34441a3 --- /dev/null +++ b/docs/proc-uml.svg @@ -0,0 +1,88 @@ +Regexid: numberregex: RegExpConstraintRegexlocation: LocationLocationBEFOREAFTERValueRegexRegexGroupid: numbervalueRegex?: ValueRegex | undefinedconstraintRegex: ConstraintRegex[]enabled: booleanCaptureAreaid: numberwidth: numberheight: numbertop: numberleft: numberregexGroups: RegexGroup[]enabled: booleanDesktopVideoStreamcurrentSelectedSource: ObjectdesktopCaptureSources: Object[]isLoadingScreensAndApplications: booleaninstance: DesktopVideoStreamfetchAllMediaStreams(): Promise<void>getDesktopCaptureSources(): Promise<void>getStreamSource(source: any): Promise<MediaStream>setCurrentSelectedSource(source: Object): voidsetIsLoadingScreensAndApplications(value: boolean): voidgetIsLoadingScreensAndApplications(): booleangetCurrentSelectedSource(): ObjectgetMainScreenSource(): ObjectgetOnlyScreenSources(): Object[]getOnlyApplicationSources(): Object[]getScreenAndApplicationSources(): Object[]getInstance(): DesktopVideoStreamRegexHandlerTesseractHandlerstream?: MediaStream | undefinedworker: Worker[]enabledCaptureAreas: CaptureArea[]Vigadmain(): void11*** \ No newline at end of file diff --git a/electron-builder.json5 b/electron-builder.json5 index 65395f9..1bf967d 100644 --- a/electron-builder.json5 +++ b/electron-builder.json5 @@ -2,36 +2,29 @@ * @see https://www.electron.build/configuration/configuration */ { - "appId": "YourAppID", - "asar": true, - "directories": { - "output": "release/${version}" - }, - "files": [ - "dist-electron", - "dist" - ], - "mac": { - "artifactName": "${productName}_${version}.${ext}", - "target": [ - "dmg" - ] - }, - "win": { - "target": [ - { - "target": "nsis", - "arch": [ - "x64" - ] - } - ], - "artifactName": "${productName}_${version}.${ext}" - }, - "nsis": { - "oneClick": false, - "perMachine": false, - "allowToChangeInstallationDirectory": true, - "deleteAppDataOnUninstall": false - } + appId: 'Vigad4256', + asar: true, + directories: { + output: 'release/${version}', + }, + files: ['dist-electron', 'dist'], + mac: { + artifactName: '${productName}_${version}.${ext}', + target: ['dmg'], + }, + win: { + target: [ + { + target: 'nsis', + arch: ['x64'], + }, + ], + artifactName: '${productName}_${version}.${ext}', + }, + nsis: { + oneClick: false, + perMachine: false, + allowToChangeInstallationDirectory: true, + deleteAppDataOnUninstall: false, + }, } diff --git a/electron/main/index.ts b/electron/main/index.ts index cbe51c7..fcfa06c 100644 --- a/electron/main/index.ts +++ b/electron/main/index.ts @@ -8,25 +8,25 @@ // ├─┬ dist // │ └── index.html > Electron-Renderer // -process.env.DIST_ELECTRON = join(__dirname, '..') -process.env.DIST = join(process.env.DIST_ELECTRON, '../dist') +process.env.DIST_ELECTRON = join(__dirname, '..'); +process.env.DIST = join(process.env.DIST_ELECTRON, '../dist'); process.env.PUBLIC = app.isPackaged - ? process.env.DIST - : join(process.env.DIST_ELECTRON, '../public') + ? process.env.DIST + : join(process.env.DIST_ELECTRON, '../public'); -import { app, BrowserWindow, shell, ipcMain } from 'electron' -import { release } from 'os' -import { join } from 'path' +import { app, BrowserWindow, shell, ipcMain } from 'electron'; +import { release } from 'os'; +import { join } from 'path'; // Disable GPU Acceleration for Windows 7 -if (release().startsWith('6.1')) app.disableHardwareAcceleration() +if (release().startsWith('6.1')) app.disableHardwareAcceleration(); // Set application name for Windows 10+ notifications -if (process.platform === 'win32') app.setAppUserModelId(app.getName()) +if (process.platform === 'win32') app.setAppUserModelId(app.getName()); if (!app.requestSingleInstanceLock()) { - app.quit() - process.exit(0) + app.quit(); + process.exit(0); } // Remove electron security warnings @@ -34,125 +34,128 @@ if (!app.requestSingleInstanceLock()) { // Read more on https://www.electronjs.org/docs/latest/tutorial/security // process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'true' -let win: BrowserWindow | null = null +let win: BrowserWindow | null = null; // Here, you can also use other preload -const preload = join(__dirname, '../preload/index.js') -const url = process.env.VITE_DEV_SERVER_URL -const indexHtml = join(process.env.DIST, 'index.html') +const preload = join(__dirname, '../preload/index.js'); +const url = process.env.VITE_DEV_SERVER_URL; +const indexHtml = join(process.env.DIST, 'index.html'); async function createWindow() { - win = new BrowserWindow({ - title: 'Main window', - minWidth: 800, - minHeight: 500, - frame: true, // still buggy cant select items from the custom titlebar - autoHideMenuBar: true, - icon: join(process.env.PUBLIC, 'favicon.ico'), - webPreferences: { - preload, - // Warning: Enable nodeIntegration and disable contextIsolation is not secure in production - // Consider using contextBridge.exposeInMainWorld - // Read more on https://www.electronjs.org/docs/latest/tutorial/context-isolation - nodeIntegration: true, - contextIsolation: true, // protect against prototype pollution - }, - }) - - const remoteMain = require('@electron/remote/main') - remoteMain.initialize() - - if (app.isPackaged) { - win.loadFile(indexHtml) - } else { - win.loadURL(url) - // Open devTool if the app is not packaged - win.webContents.openDevTools() - } - - // Test actively push message to the Electron-Renderer - win.webContents.on('did-finish-load', () => { - win?.webContents.send('main-process-message', new Date().toLocaleString()) - win.setTitle(`Vigad v${1.0}`) - }) - - // Make all links open with the browser, not with the application - win.webContents.setWindowOpenHandler(({ url }) => { - if (url.startsWith('https:')) shell.openExternal(url) - return { action: 'deny' } - }) - - remoteMain.enable(win.webContents) - - // Get all screens/windows from the main process to the renderer process - ipcMain.handle('get-screens', getScreen) - ipcMain.handle('minimize-screen', () => { - win.minimize() - }) - ipcMain.handle('full-screen', () => { - win.isMaximized() ? win.restore() : win.maximize() - }) - ipcMain.handle('close-application', () => { - win.close() - }) + win = new BrowserWindow({ + title: 'Main window', + minWidth: 950, + minHeight: 750, + frame: true, // still buggy cant select items from the custom titlebar + autoHideMenuBar: true, + icon: join(process.env.PUBLIC, '../src/assets/logo.png'), + webPreferences: { + preload, + // Warning: Enable nodeIntegration and disable contextIsolation is not secure in production + // Consider using contextBridge.exposeInMainWorld + // Read more on https://www.electronjs.org/docs/latest/tutorial/context-isolation + nodeIntegration: true, + contextIsolation: true, // protect against prototype pollution + }, + }); + + const remoteMain = require('@electron/remote/main'); + remoteMain.initialize(); + + if (app.isPackaged) { + win.loadFile(indexHtml); + } else { + win.loadURL(url); + // Open devTool if the app is not packaged + win.webContents.openDevTools(); + } + + // Test actively push message to the Electron-Renderer + win.webContents.on('did-finish-load', () => { + win?.webContents.send( + 'main-process-message', + new Date().toLocaleString() + ); + win.setTitle(`Vigad`); + }); + + // Make all links open with the browser, not with the application + win.webContents.setWindowOpenHandler(({ url }) => { + if (url.startsWith('https:')) shell.openExternal(url); + return { action: 'deny' }; + }); + + remoteMain.enable(win.webContents); + + // Get all screens/windows from the main process to the renderer process + ipcMain.handle('get-screens', getScreen); + ipcMain.handle('minimize-screen', () => { + win.minimize(); + }); + ipcMain.handle('full-screen', () => { + win.isMaximized() ? win.restore() : win.maximize(); + }); + ipcMain.handle('close-application', () => { + win.close(); + }); } -app.whenReady().then(createWindow) +app.whenReady().then(createWindow); app.on('window-all-closed', () => { - win = null - if (process.platform !== 'darwin') app.quit() -}) + win = null; + if (process.platform !== 'darwin') app.quit(); +}); app.on('second-instance', () => { - if (win) { - // Focus on the main window if the user tried to open another - if (win.isMinimized()) win.restore() - win.focus() - } -}) + if (win) { + // Focus on the main window if the user tried to open another + if (win.isMinimized()) win.restore(); + win.focus(); + } +}); app.on('activate', () => { - const allWindows = BrowserWindow.getAllWindows() - if (allWindows.length) { - allWindows[0].focus() - } else { - createWindow() - } -}) + const allWindows = BrowserWindow.getAllWindows(); + if (allWindows.length) { + allWindows[0].focus(); + } else { + createWindow(); + } +}); // new window example arg: new windows url ipcMain.handle('open-win', (event, arg) => { - const childWindow = new BrowserWindow({ - webPreferences: { - preload, - }, - }) - - if (app.isPackaged) { - childWindow.loadFile(indexHtml, { hash: arg }) - } else { - childWindow.loadURL(`${url}/#${arg}`) - // childWindow.webContents.openDevTools({ mode: "undocked", activate: true }) - } -}) + const childWindow = new BrowserWindow({ + webPreferences: { + preload, + }, + }); + + if (app.isPackaged) { + childWindow.loadFile(indexHtml, { hash: arg }); + } else { + childWindow.loadURL(`${url}/#${arg}`); + // childWindow.webContents.openDevTools({ mode: "undocked", activate: true }) + } +}); async function getScreen(event, title) { - // In the main process. - const { desktopCapturer } = require('electron') - - const allSources = await desktopCapturer.getSources({ - types: ['window', 'screen'], - }) - - // const videoOptionsMenu = Menu.buildFromTemplate([ - // allSources.map((source) => { - // return { - // label: source.name, - // click: () => selectSource(source), - // } - // }), - // ]) - - // videoOptionsMenu.popup() - return allSources + // In the main process. + const { desktopCapturer } = require('electron'); + + const allSources = await desktopCapturer.getSources({ + types: ['window', 'screen'], + }); + + // const videoOptionsMenu = Menu.buildFromTemplate([ + // allSources.map((source) => { + // return { + // label: source.name, + // click: () => selectSource(source), + // } + // }), + // ]) + + // videoOptionsMenu.popup() + return allSources; } diff --git a/index.html b/index.html index 4f1bde2..c075c92 100644 --- a/index.html +++ b/index.html @@ -1,17 +1,17 @@ - - - - - - Vite Apps - - -
- - + + + + + + Vite Apps + + +
+ + diff --git a/package-lock.json b/package-lock.json index 1f69a2f..5b267f1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,10 +10,12 @@ "dependencies": { "@electron/remote": "^2.0.8", "@mdi/font": "^7.0.96", + "@types/webfontloader": "^1.6.35", "@vueuse/components": "^9.4.0", "@vueuse/core": "^9.4.0", "roboto-fontface": "^0.10.0", "tesseract.js": "^3.0.3", + "tplant": "^3.1.0", "vue-router": "^4.1.6", "vuetify": "^3.0.1" }, @@ -750,6 +752,11 @@ "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" }, + "node_modules/@types/webfontloader": { + "version": "1.6.35", + "resolved": "https://registry.npmjs.org/@types/webfontloader/-/webfontloader-1.6.35.tgz", + "integrity": "sha512-IJlrsiDWq6KghQ7tPlL5tcwSUyOxLDceT+AFUY7Ylj0Fcv3/h3QkANqQxZ0B5mEpEKxhTw76vDmvrruSMV9n9Q==" + }, "node_modules/@types/yargs": { "version": "17.0.13", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz", @@ -2670,7 +2677,6 @@ "version": "21.3.0", "resolved": "https://registry.npmjs.org/electron/-/electron-21.3.0.tgz", "integrity": "sha512-MGRpshN8fBcx4IRuBABIsGDv0tB/MclIFsyFHFFXsBCUc+vIXaE/E6vuWaniGIFSz5WyeuapfTH5IeRb+7yIfw==", - "dev": true, "hasInstallScript": true, "dependencies": { "@electron/get": "^1.14.1", @@ -5086,6 +5092,11 @@ "node": ">=8" } }, + "node_modules/plantuml-encoder": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/plantuml-encoder/-/plantuml-encoder-1.4.0.tgz", + "integrity": "sha512-sxMwpDw/ySY1WB2CE3+IdMuEcWibJ72DDOsXLkSmEaSzwEUaYBT6DWgOfBiHGCux4q433X6+OEFWjlVqp7gL6g==" + }, "node_modules/plist": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz", @@ -5957,6 +5968,28 @@ "node": ">=8.0" } }, + "node_modules/tplant": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tplant/-/tplant-3.1.0.tgz", + "integrity": "sha512-2UJ2MXKvsdik0Xv/5ZVj+UmEngLLV/1TMId3L9WWEeLQg71kH9F3xEgtl/i3ttyusgueDTdsLioOpm7b0GMSUA==", + "dependencies": { + "commander": "^6.1.0", + "glob": "^7.1.6", + "plantuml-encoder": "^1.4.0", + "typescript": "^4.0.3" + }, + "bin": { + "tplant": "dist/index.js" + } + }, + "node_modules/tplant/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "engines": { + "node": ">= 6" + } + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -6028,7 +6061,6 @@ "version": "4.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", - "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -7170,6 +7202,11 @@ "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" }, + "@types/webfontloader": { + "version": "1.6.35", + "resolved": "https://registry.npmjs.org/@types/webfontloader/-/webfontloader-1.6.35.tgz", + "integrity": "sha512-IJlrsiDWq6KghQ7tPlL5tcwSUyOxLDceT+AFUY7Ylj0Fcv3/h3QkANqQxZ0B5mEpEKxhTw76vDmvrruSMV9n9Q==" + }, "@types/yargs": { "version": "17.0.13", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz", @@ -8626,7 +8663,6 @@ "version": "21.3.0", "resolved": "https://registry.npmjs.org/electron/-/electron-21.3.0.tgz", "integrity": "sha512-MGRpshN8fBcx4IRuBABIsGDv0tB/MclIFsyFHFFXsBCUc+vIXaE/E6vuWaniGIFSz5WyeuapfTH5IeRb+7yIfw==", - "dev": true, "requires": { "@electron/get": "^1.14.1", "@types/node": "^16.11.26", @@ -10322,6 +10358,11 @@ } } }, + "plantuml-encoder": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/plantuml-encoder/-/plantuml-encoder-1.4.0.tgz", + "integrity": "sha512-sxMwpDw/ySY1WB2CE3+IdMuEcWibJ72DDOsXLkSmEaSzwEUaYBT6DWgOfBiHGCux4q433X6+OEFWjlVqp7gL6g==" + }, "plist": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz", @@ -10929,6 +10970,24 @@ "is-number": "^7.0.0" } }, + "tplant": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tplant/-/tplant-3.1.0.tgz", + "integrity": "sha512-2UJ2MXKvsdik0Xv/5ZVj+UmEngLLV/1TMId3L9WWEeLQg71kH9F3xEgtl/i3ttyusgueDTdsLioOpm7b0GMSUA==", + "requires": { + "commander": "^6.1.0", + "glob": "^7.1.6", + "plantuml-encoder": "^1.4.0", + "typescript": "^4.0.3" + }, + "dependencies": { + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==" + } + } + }, "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -10981,8 +11040,7 @@ "typescript": { "version": "4.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", - "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", - "dev": true + "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==" }, "universalify": { "version": "0.1.2", @@ -11147,16 +11205,6 @@ "he": "^1.2.0" } }, - "vue-template-compiler": { - "version": "2.7.13", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.13.tgz", - "integrity": "sha512-jYM6TClwDS9YqP48gYrtAtaOhRKkbYmbzE+Q51gX5YDr777n7tNI/IZk4QV4l/PjQPNh/FVa/E92sh/RqKMrog==", - "dev": true, - "requires": { - "de-indent": "^1.0.2", - "he": "^1.2.0" - } - }, "vue-tsc": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.0.9.tgz", diff --git a/package.json b/package.json index d64da30..5d652ed 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,8 @@ "private": true, "scripts": { "dev": "vite", - "build": "vue-tsc --noEmit && vite build && electron-builder" + "build": "vue-tsc --noEmit && vite build && electron-builder", + "gen-uml": "tplant --input src/proc/**/*.ts --output docs/proc-uml.svg -A" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -45,10 +46,12 @@ "dependencies": { "@electron/remote": "^2.0.8", "@mdi/font": "^7.0.96", + "@types/webfontloader": "^1.6.35", "@vueuse/components": "^9.4.0", "@vueuse/core": "^9.4.0", "roboto-fontface": "^0.10.0", "tesseract.js": "^3.0.3", + "tplant": "^3.1.0", "vue-router": "^4.1.6", "vuetify": "^3.0.1" } diff --git a/src/App.vue b/src/App.vue index eda6c0b..30184d4 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,334 +1,128 @@ diff --git a/src/assets/electron.svg b/src/assets/electron.svg deleted file mode 100644 index 1c5cccb..0000000 --- a/src/assets/electron.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/logo.png b/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5677414f375a748fcf3a923fe8bcaa10fb958047 GIT binary patch literal 158652 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�vLXSAA>-64?Xxe6)zRx1)?FTddU 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 Sz?KG?;`D`oi~hNC_x}KLqXicL literal 0 HcmV?d00001 diff --git a/src/assets/vite.svg b/src/assets/vite.svg deleted file mode 100644 index e7b8dfb..0000000 --- a/src/assets/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/vue.svg b/src/assets/vue.svg deleted file mode 100644 index 770e9d3..0000000 --- a/src/assets/vue.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/components/MainVideoStream.vue b/src/components/MainVideoStream.vue new file mode 100644 index 0000000..82a176c --- /dev/null +++ b/src/components/MainVideoStream.vue @@ -0,0 +1,58 @@ + + + + + + diff --git a/src/components/VideoStream.vue b/src/components/VideoStream.vue deleted file mode 100644 index 68aeeeb..0000000 --- a/src/components/VideoStream.vue +++ /dev/null @@ -1,156 +0,0 @@ - - - - - diff --git a/src/components/ViewComponent.vue b/src/components/ViewComponent.vue new file mode 100644 index 0000000..9ce83fe --- /dev/null +++ b/src/components/ViewComponent.vue @@ -0,0 +1,25 @@ + + + + + + + diff --git a/src/components/capture-area/CaptureAreaActions.vue b/src/components/capture-area/CaptureAreaActions.vue deleted file mode 100644 index 79fe59f..0000000 --- a/src/components/capture-area/CaptureAreaActions.vue +++ /dev/null @@ -1,21 +0,0 @@ - - - - - diff --git a/src/components/capture-area/CaptureAreaMetaProperties.vue b/src/components/capture-area/CaptureAreaMetaProperties.vue index 186d456..22a1083 100644 --- a/src/components/capture-area/CaptureAreaMetaProperties.vue +++ b/src/components/capture-area/CaptureAreaMetaProperties.vue @@ -1,84 +1,98 @@ - + diff --git a/src/components/capture-area/CaptureAreaSearchValue.vue b/src/components/capture-area/CaptureAreaSearchValue.vue index ed432ce..bdae6d5 100644 --- a/src/components/capture-area/CaptureAreaSearchValue.vue +++ b/src/components/capture-area/CaptureAreaSearchValue.vue @@ -1,148 +1,155 @@ - + diff --git a/src/composable/useDesktopCapture.ts b/src/composable/useDesktopCapture.ts deleted file mode 100644 index 766e6e1..0000000 --- a/src/composable/useDesktopCapture.ts +++ /dev/null @@ -1,25 +0,0 @@ -// Create all Screen related methodes here and export them -// so they can be used in other files -// ie access the current screen etc. - -// ! use the functions defined in the HomePage.vue file and add documentation to them - -// ! properly document each function and add @return to every function - -import { ref } from 'vue' - -export const isLoadingScreensAndWindows = ref(false) -export const allSources = ref([]) - -export const currentScreen = ref(null) -export const currentWindow = ref(null) -export const currentStream = ref(null) - -/** - * Get all the video sources available on the system - */ -export async function getThings() { - // TODO: is not called again if new sources showes up - // Get the available video sources - allSources.value = await (window as any).electronAPI.getMedia() -} diff --git a/src/env.d.ts b/src/env.d.ts index aafef95..dfb2672 100644 --- a/src/env.d.ts +++ b/src/env.d.ts @@ -1,8 +1,8 @@ /// declare module '*.vue' { - import type { DefineComponent } from 'vue' - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types - const component: DefineComponent<{}, {}, any> - export default component + import type { DefineComponent } from 'vue'; + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types + const component: DefineComponent<{}, {}, any>; + export default component; } diff --git a/src/main.ts b/src/main.ts index b78d634..c169a54 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,12 +1,12 @@ -import { createApp } from 'vue' -import App from './App.vue' -import router from './router/index' -import vuetify from './plugins/vuetify' +import { createApp } from 'vue'; +import App from './App.vue'; +import router from './router/index'; +import vuetify from './plugins/vuetify'; createApp(App) - .use(vuetify) - .use(router) - .mount('#app') - .$nextTick(() => { - postMessage({ payload: 'removeLoading' }, '*') - }) + .use(vuetify) + .use(router) + .mount('#app') + .$nextTick(() => { + postMessage({ payload: 'removeLoading' }, '*'); + }); diff --git a/src/plugins/vuetify.ts b/src/plugins/vuetify.ts index cf1a8a5..70b4d80 100644 --- a/src/plugins/vuetify.ts +++ b/src/plugins/vuetify.ts @@ -1,51 +1,51 @@ // Styles -import '@mdi/font/css/materialdesignicons.css' -import 'vuetify/styles' // Global CSS has to be imported +import '@mdi/font/css/materialdesignicons.css'; +import 'vuetify/styles'; // Global CSS has to be imported // Vuetify -import { createVuetify, ThemeDefinition } from 'vuetify' +import { createVuetify, ThemeDefinition } from 'vuetify'; // if needed imported -import * as components from 'vuetify/components' -import * as directives from 'vuetify/directives' +import * as components from 'vuetify/components'; +import * as directives from 'vuetify/directives'; // Icons https://materialdesignicons.com/ export default createVuetify({ - theme: { - defaultTheme: 'dark', - themes: { - // Custom Dark Theme - dark: { - dark: true, - colors: { - background: '#121827', - surface: '#181F32', - primary: '#FAD761', - secondary: '#31353E', - font: '#DBE6EB', - error: '#F74343', - info: '#', - success: '#77D679', - warning: '#', + theme: { + defaultTheme: 'dark', + themes: { + // Custom Dark Theme + dark: { + dark: true, + colors: { + background: '#121827', + surface: '#181F32', + primary: '#FAD761', + secondary: '#31353E', + font: '#DBE6EB', + error: '#F74343', + info: '#58a7fe', + success: '#77D679', + warning: '#F74343', + }, + }, + // Custom Light Theme + light: { + dark: false, + colors: { + background: '#ffffff', + surface: '#181F32', + primary: '#DBE6EB', + secondary: '#31353E', + error: '#F74343', + info: '#FAD761', + success: '#77D679', + warning: '#F74343', + }, + }, }, - }, - // Custom Light Theme - light: { - dark: false, - colors: { - background: '#ffffff', - surface: '#181F32', - primary: '#DBE6EB', - secondary: '#31353E', - error: '#F74343', - info: '#FAD761', - success: '#77D679', - warning: '#', - }, - }, }, - }, - components, - directives, -}) + components, + directives, +}); diff --git a/src/plugins/webfontloader.ts b/src/plugins/webfontloader.ts index 6d1fb89..9c147aa 100644 --- a/src/plugins/webfontloader.ts +++ b/src/plugins/webfontloader.ts @@ -5,13 +5,13 @@ */ export async function loadFonts() { - const webFontLoader = await import( - /* webpackChunkName: "webfontloader" */ 'webfontloader' - ) + const webFontLoader = await import( + /* webpackChunkName: "webfontloader" */ 'webfontloader' + ); - webFontLoader.load({ - google: { - families: ['Roboto:100,300,400,500,700,900&display=swap'], - }, - }) + webFontLoader.load({ + google: { + families: ['Roboto:100,300,400,500,700,900&display=swap'], + }, + }); } diff --git a/src/proc/CaptureArea.ts b/src/proc/CaptureArea.ts new file mode 100644 index 0000000..ac2e648 --- /dev/null +++ b/src/proc/CaptureArea.ts @@ -0,0 +1,18 @@ +import { RegexGroup } from "./regex/RegexGroup"; + +export class CaptureArea { + private id: number = 0; + private width: number = 0; + private height: number = 0; + private top: number = 0; + private left: number = 0; + private regexGroups: RegexGroup[] = []; + private enabled: boolean = true; + + public constructor(width:number, height:number, top:number, left:number) { + this.width = width; + this.height = height; + this.top = top; + this.left = left; + } +} \ No newline at end of file diff --git a/src/proc/StreamHandler.ts b/src/proc/StreamHandler.ts new file mode 100644 index 0000000..7c83902 --- /dev/null +++ b/src/proc/StreamHandler.ts @@ -0,0 +1,222 @@ +// Stream handler +export class StreamHandler { + private static instance: StreamHandler; + + private currentSelectedSource: Object; + private desktopCaptureSources: Object[]; + private allMediaStreams: MediaStream[]; + private isLoadingScreensAndApplications: boolean; + + /** + * Create a private constructor to prevent multiple instances + */ + private constructor() { + this.currentSelectedSource = {}; + this.desktopCaptureSources = []; + this.allMediaStreams = []; + this.isLoadingScreensAndApplications = false; + } + + /** + * This function gets the singelton instance of the StreamHandler + * + * @returns the singelton instance of the StreamHandler + */ + public static getInstance(): StreamHandler { + if (!this.instance) { + this.instance = new this(); + } + + return this.instance; + } + + /** + * This function fetches all media streams via the electron desktopCapture API + * + * @returns void + */ + private async fetchAllMediaStreams(): Promise { + this.isLoadingScreensAndApplications = true; + // Get the available video sources + this.desktopCaptureSources = await ( + window as any + ).electronAPI.getMedia(); + this.isLoadingScreensAndApplications = false; + } + + /** + * This function is for setting the loading state + * + * @param value - set isLoadingScreensAndApplications to value new boolean value + * @returns void + */ + public setIsLoadingScreensAndApplications(value: boolean): void { + this.isLoadingScreensAndApplications = value; + } + + /** + * This function returns a boolean which indicates if the StreamHandler is currently loading screens and applications + * + * @returns boolean value if the screens and applications are loading + */ + public getIsLoadingScreensAndApplications(): boolean { + return this.isLoadingScreensAndApplications; + } + + /** + * This function sets the current selected source as the new main video source + * + * @returns the current selected source Object + */ + public getCurrentSelectedSource(): Object { + return this.currentSelectedSource; + } + + /** + * This function returns the media stream from the given source object + * + * @param source - Source object + * @returns a MediaStream from the given source as a Promise + */ + public async getMediaStreamFromSource(source: any): Promise { + // MediaStream Constraints + const constraints: any = { + video: { + mandatory: { + chromeMediaSource: 'desktop', + chromeMediaSourceId: source.id, + }, + }, + }; + + return await navigator.mediaDevices.getUserMedia(constraints); + } + + /** + * This function sets the main screen of the user as the fault video source + * + * @returns a the main screen of the user as a source via a Promise + */ + public async getMainScreenSource(): Promise { + await this.fetchAllMediaStreams(); + // TODO: fix this + return this.desktopCaptureSources[0]; + } + + /** + * This function sets the main monitor screen of the user as the default video source + * + * @returns only a Promise + */ + public async setDefaultVideoStream(): Promise { + const mainScreenSource: any = await this.getMainScreenSource(); + + const mediaStream = await this.getMediaStreamFromSource( + mainScreenSource + ); + + // Set the main video + await this.setCurrentSelectedSource(mediaStream); + } + + /** + * This function sets the current selected source as the new main video source + * + * @param source - MediaStream object + * @returns a MediaStreams as a Promise + */ + public async setCurrentSelectedSource(source: MediaStream) { + if (source === this.currentSelectedSource) return; + + this.currentSelectedSource = source; + + const videoElement: HTMLVideoElement | null = + document.querySelector('#mainVideo'); + + videoElement!.srcObject = source; + } + + /** + * This function returns all available Screen and Application Objects + * + * @returns an array of all available MediaStreams as a Promise + */ + public async getAllMediaStreams(): Promise { + this.allMediaStreams = []; + await this.fetchAllMediaStreams(); + + // Loop through all sources and set the MediaStream to video nodes + Array.from(this.desktopCaptureSources).forEach(async (element: any) => { + this.populateMediaStreamsArray(element); + }); + + return this.allMediaStreams; + } + + /** + * This function will populate the allMediaStreams array with all available MediaStreams + * + * @param source - source object + * @returns only a Promise + */ + private async populateMediaStreamsArray(source: any): Promise { + const constraints: any = { + video: { + mandatory: { + chromeMediaSource: 'desktop', + chromeMediaSourceId: source.id, + }, + }, + }; + + this.allMediaStreams.push( + await navigator.mediaDevices.getUserMedia(constraints) + ); + } + + /** + * This function will return a Mediastream via a specific index which is given as a parameter + * + * @param index - values to search from the allMediaStreams array + * @returns a MediaStream from the given source as a Promise + */ + public async getSpecificMediaStreams(index: number): Promise { + return this.allMediaStreams[index]; + } + + /** + * This function returns all available Screen Objects + * + * @returns an array of all available Screen Objects as a Promise + */ + public async getOnlyScreenSources(): Promise { + await this.fetchAllMediaStreams(); + return this.desktopCaptureSources.filter( + (source: any) => + source.id.substring(0, source.id.indexOf(':')) === 'screen' + ); + } + + /** + * This function returns all available Application Objects + * + * @returns an array of all available Application Objects as a Promise + */ + public async getOnlyApplicationSources(): Promise { + await this.fetchAllMediaStreams(); + return this.desktopCaptureSources.filter( + (source: any) => + source.id.substring(0, source.id.indexOf(':')) === 'window' + ); + } + + /** + * This function returns all available Application and Screen Objects + * + * @returns an array of all available Application and Screen Objects as a Promise + */ + async getScreenAndApplicationSources(): Promise { + await this.fetchAllMediaStreams(); + return this.desktopCaptureSources; + } +} diff --git a/src/proc/TesseractHandler.ts b/src/proc/TesseractHandler.ts new file mode 100644 index 0000000..597b5b7 --- /dev/null +++ b/src/proc/TesseractHandler.ts @@ -0,0 +1,8 @@ +import { createWorker } from 'tesseract.js'; +import { CaptureArea } from './CaptureArea'; + +export class TesseractHandler { + private stream?: MediaStream; + private worker: Worker[] = []; + private enabledCaptureAreas: CaptureArea[] = []; +} \ No newline at end of file diff --git a/src/proc/Vigad.ts b/src/proc/Vigad.ts index bca3df6..70e5d7b 100644 --- a/src/proc/Vigad.ts +++ b/src/proc/Vigad.ts @@ -2,4 +2,4 @@ class Vigad { public main() { // ... } -} \ No newline at end of file +} diff --git a/src/proc/regex/ConstraintRegex.ts b/src/proc/regex/ConstraintRegex.ts new file mode 100644 index 0000000..4bcc550 --- /dev/null +++ b/src/proc/regex/ConstraintRegex.ts @@ -0,0 +1,11 @@ +import { Regex } from "./Regex"; + +export class ConstraintRegex extends Regex { + private location: Location = Location.BEFORE; + +} + +export enum Location { + BEFORE = "Before", + AFTER = "After" +} \ No newline at end of file diff --git a/src/proc/regex/Regex.ts b/src/proc/regex/Regex.ts new file mode 100644 index 0000000..3f42ce3 --- /dev/null +++ b/src/proc/regex/Regex.ts @@ -0,0 +1,4 @@ +export abstract class Regex { + private id: number = 0; + private regex: RegExp = new RegExp(""); +} \ No newline at end of file diff --git a/src/proc/regex/RegexGroup.ts b/src/proc/regex/RegexGroup.ts new file mode 100644 index 0000000..5503fe0 --- /dev/null +++ b/src/proc/regex/RegexGroup.ts @@ -0,0 +1,9 @@ +import { ConstraintRegex } from "./ConstraintRegex"; +import { ValueRegex } from "./ValueRegex"; + +export class RegexGroup { + private id: number = 0; + private valueRegex?: ValueRegex; + private constraintRegex: ConstraintRegex[] = []; + private enabled: boolean = true; +} \ No newline at end of file diff --git a/src/proc/regex/RegexHandler.ts b/src/proc/regex/RegexHandler.ts new file mode 100644 index 0000000..b37c357 --- /dev/null +++ b/src/proc/regex/RegexHandler.ts @@ -0,0 +1,3 @@ +export class RegexHandler { + +} \ No newline at end of file diff --git a/src/proc/regex/ValueRegex.ts b/src/proc/regex/ValueRegex.ts new file mode 100644 index 0000000..d5d7fd9 --- /dev/null +++ b/src/proc/regex/ValueRegex.ts @@ -0,0 +1,5 @@ +import { Regex } from "./Regex"; + +export class ValueRegex extends Regex { + +} \ No newline at end of file diff --git a/src/router/index.ts b/src/router/index.ts index 823547e..a4d7f6f 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -1,14 +1,14 @@ -import { createRouter, createWebHistory } from 'vue-router' -import { routes } from './routes' +import { createRouter, createWebHistory } from 'vue-router'; +import { routes } from './routes'; const router = createRouter({ - history: createWebHistory(import.meta.env.BASE_URL), - routes, -}) + history: createWebHistory(import.meta.env.BASE_URL), + routes, +}); router.beforeEach((to, from, next) => { - document.title = `${to.meta.title}` - next() -}) + document.title = `${to.meta.title}`; + next(); +}); -export default router +export default router; diff --git a/src/router/routes.ts b/src/router/routes.ts index 6060088..1f56946 100644 --- a/src/router/routes.ts +++ b/src/router/routes.ts @@ -1,42 +1,42 @@ export const routes = [ - { - name: '404', - path: '/:pathMatch(.*)*', - component: () => import('../views/PageNotFound.vue'), - meta: { - title: 'Vigad - 404 - Page Not Found', + { + name: '404', + path: '/:pathMatch(.*)*', + component: () => import('../views/PageNotFound.vue'), + meta: { + title: 'Vigad - 404 - Page Not Found', + }, }, - }, - { - name: 'error', - path: '/error', - component: () => import('../views/ErrorPage.vue'), - meta: { - title: 'Vigad - Error', + { + name: 'error', + path: '/error', + component: () => import('../views/ErrorPage.vue'), + meta: { + title: 'Vigad - Error', + }, }, - }, - { - name: 'home', - path: '/', - component: () => import('../views/SourcesView.vue'), - meta: { - title: 'Vigad - Sources', + { + name: 'home', + path: '/', + component: () => import('../views/SourcesView.vue'), + meta: { + title: 'Vigad - Sources', + }, }, - }, - { - name: 'run', - path: '/run', - component: () => import('../views/RunPage.vue'), - meta: { - title: 'Vigad - Run', + { + name: 'run', + path: '/run', + component: () => import('../views/RunPage.vue'), + meta: { + title: 'Vigad - Run', + }, }, - }, - { - name: 'regex', - path: '/regex', - component: () => import('../views/RegexView.vue'), - meta: { - title: 'Vigad - Regex', + { + name: 'regex', + path: '/regex', + component: () => import('../views/RegexView.vue'), + meta: { + title: 'Vigad - Regex', + }, }, - }, -] +]; diff --git a/src/styles/variables.scss b/src/styles/variables.scss deleted file mode 100644 index 2937797..0000000 --- a/src/styles/variables.scss +++ /dev/null @@ -1,22 +0,0 @@ -// Call in in css like var(--palette-primary-600); -$palettes: ( - options: ( - transition-duration: 0.25s, - border-radius: 8px, - ), - status: ( - success: #65e699, - danger: #f74343, - active: #58a7fe, - hightlight: #dbe6eb, - ), - text: ( - size: 14px, - color: #dbe6eb, - ), - background: ( - primary: #0f131f, - secondary: #181f32, - tertiary: #313e63, - ), -); diff --git a/src/views/ErrorPage.vue b/src/views/ErrorPage.vue index ae6094b..15a5dfb 100644 --- a/src/views/ErrorPage.vue +++ b/src/views/ErrorPage.vue @@ -1,7 +1,4 @@ - + diff --git a/src/views/HomePage.vue b/src/views/HomePage.vue deleted file mode 100644 index 43e6c32..0000000 --- a/src/views/HomePage.vue +++ /dev/null @@ -1,10 +0,0 @@ - - - - - diff --git a/src/views/PageNotFound.vue b/src/views/PageNotFound.vue index 6788ec0..b1e402a 100644 --- a/src/views/PageNotFound.vue +++ b/src/views/PageNotFound.vue @@ -1,13 +1,14 @@ diff --git a/src/views/RegexView.vue b/src/views/RegexView.vue index c831c34..889a6c1 100644 --- a/src/views/RegexView.vue +++ b/src/views/RegexView.vue @@ -1,31 +1,31 @@ - + diff --git a/src/views/RunPage.vue b/src/views/RunPage.vue index 47c57d6..d7f7a82 100644 --- a/src/views/RunPage.vue +++ b/src/views/RunPage.vue @@ -1,16 +1,24 @@ - + diff --git a/src/views/SourcesView.vue b/src/views/SourcesView.vue index 1c9ce52..64a5550 100644 --- a/src/views/SourcesView.vue +++ b/src/views/SourcesView.vue @@ -1,250 +1,113 @@ -/** - * Load the proper media stream source for the video element - */ -async function loadStreamSources() { - // Is there a better way then this? - const videoElements: HTMLVideoElement | null = - document.querySelectorAll('.preview') - - Array.from(videoElements).forEach(function (video, index) { - setSourceForVideoNode(desktopCaptureSources.value[index], video) - }) + + diff --git a/tsconfig.json b/tsconfig.json index 31fc22b..f4ea4ac 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,21 +1,21 @@ { - "compilerOptions": { - "target": "ESNext", - "module": "ESNext", - "moduleResolution": "node", - "importHelpers": true, - "jsx": "preserve", - "esModuleInterop": true, - "resolveJsonModule": true, - "sourceMap": true, - "baseUrl": "./", - "strict": true, - "allowSyntheticDefaultImports": true, - "skipLibCheck": true, - "paths": { - "@/*": ["./src/*"] - } - }, - "include": ["src"], - "references": [{ "path": "./tsconfig.node.json" }] + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "node", + "importHelpers": true, + "jsx": "preserve", + "esModuleInterop": true, + "resolveJsonModule": true, + "sourceMap": true, + "baseUrl": "./", + "strict": true, + "allowSyntheticDefaultImports": true, + "skipLibCheck": true, + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] } diff --git a/tsconfig.node.json b/tsconfig.node.json index 82bd5d7..8c1e7b0 100644 --- a/tsconfig.node.json +++ b/tsconfig.node.json @@ -1,12 +1,12 @@ { - "compilerOptions": { - "target": "ESNext", - "composite": true, - "module": "ESNext", - "moduleResolution": "Node", - "jsx": "preserve", - "resolveJsonModule": true, - "allowSyntheticDefaultImports": true - }, - "include": ["vite.config.ts", "package.json", "electron"] + "compilerOptions": { + "target": "ESNext", + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "jsx": "preserve", + "resolveJsonModule": true, + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts", "package.json", "electron"] } diff --git a/vite.config.ts b/vite.config.ts index 5f8bfa1..b264153 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,57 +1,57 @@ -import { fileURLToPath, URL } from 'url' -import { rmSync } from 'fs' -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' -import electron from 'vite-electron-plugin' -import { customStart } from 'vite-electron-plugin/plugin' -import pkg from './package.json' +import { fileURLToPath, URL } from 'url'; +import { rmSync } from 'fs'; +import { defineConfig } from 'vite'; +import vue from '@vitejs/plugin-vue'; +import electron from 'vite-electron-plugin'; +import { customStart } from 'vite-electron-plugin/plugin'; +import pkg from './package.json'; -rmSync('dist-electron', { recursive: true, force: true }) +rmSync('dist-electron', { recursive: true, force: true }); // https://vitejs.dev/config/ export default defineConfig({ - plugins: [ - vue(), - electron({ - include: ['electron'], - transformOptions: { - sourcemap: !!process.env.VSCODE_DEBUG, - }, - // Will start Electron via VSCode Debug - plugins: process.env.VSCODE_DEBUG - ? [ - customStart( - debounce(() => - console.log( - /* For `.vscode/.debug.script.mjs` */ '[startup] Electron App' - ) - ) - ), - ] - : undefined, - }), - ], - resolve: { - alias: { - '@': fileURLToPath(new URL('./src', import.meta.url)), + plugins: [ + vue(), + electron({ + include: ['electron'], + transformOptions: { + sourcemap: !!process.env.VSCODE_DEBUG, + }, + // Will start Electron via VSCode Debug + plugins: process.env.VSCODE_DEBUG + ? [ + customStart( + debounce(() => + console.log( + /* For `.vscode/.debug.script.mjs` */ '[startup] Electron App' + ) + ) + ), + ] + : undefined, + }), + ], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)), + }, }, - }, - server: process.env.VSCODE_DEBUG - ? (() => { - const url = new URL(pkg.debug.env.VITE_DEV_SERVER_URL) - return { - host: url.hostname, - port: +url.port, - } - })() - : undefined, - clearScreen: false, -}) + server: process.env.VSCODE_DEBUG + ? (() => { + const url = new URL(pkg.debug.env.VITE_DEV_SERVER_URL); + return { + host: url.hostname, + port: +url.port, + }; + })() + : undefined, + clearScreen: false, +}); function debounce void>(fn: Fn, delay = 299) { - let t: NodeJS.Timeout - return ((...args) => { - clearTimeout(t) - t = setTimeout(() => fn(...args), delay) - }) as Fn + let t: NodeJS.Timeout; + return ((...args) => { + clearTimeout(t); + t = setTimeout(() => fn(...args), delay); + }) as Fn; }