From c98b6016ca4454bbefb03ce73fad8e8baa24df96 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sat, 26 Feb 2022 22:26:16 +0100 Subject: [PATCH] Settings, Electron 17 and much more --- package-lock.json | 633 ++++++++++++++++++++++++++--------- package.json | 9 +- src/content/css/discord.css | 2 +- src/content/css/tabs.css | 53 +++ src/content/css/titlebar.css | 2 +- src/content/settings.html | 1 - src/content/setup.html | 9 +- src/ipc.ts | 22 +- src/main.ts | 110 +++--- src/preload/bridge.ts | 1 + src/preload/capturer.ts | 9 +- src/preload/patch.ts | 22 ++ src/preload/preload.ts | 17 +- src/preload/tabs.ts | 25 ++ src/preload/titlebar.ts | 6 +- src/settings/main.ts | 41 ++- src/settings/preload.ts | 7 +- src/settings/settings.css | 157 +++++++++ src/settings/settings.html | 88 +++++ src/tray.ts | 7 + src/types/glasstron.d.ts | 86 +++++ src/utils.ts | 33 +- src/window.ts | 129 ++++++- tsconfig.json | 1 - 24 files changed, 1226 insertions(+), 244 deletions(-) create mode 100644 src/content/css/tabs.css delete mode 100644 src/content/settings.html create mode 100644 src/preload/patch.ts create mode 100644 src/preload/tabs.ts create mode 100644 src/settings/settings.css create mode 100644 src/settings/settings.html create mode 100644 src/types/glasstron.d.ts diff --git a/package-lock.json b/package-lock.json index 6904b1a..c7a71d6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,23 +1,26 @@ { "name": "ArmCord", - "version": "3.1.0", + "version": "3.0.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "ArmCord", - "version": "3.1.0", + "version": "3.0.4", "license": "OSL-3.0", "dependencies": { + "electron-context-menu": "^3.1.2", "electron-json-storage": "^4.5.0", + "electron-tabs": "^0.15.0", + "glasstron": "^0.1.1", "v8-compile-cache": "^2.3.0" }, "devDependencies": { "@types/electron-json-storage": "^4.5.0", "@types/node": "^14.18.2", "copyfiles": "^2.4.1", - "electron": "^16.0.7", - "electron-builder": "^22.14.5", + "electron": "^17.1.0", + "electron-builder": "^22.14.13", "typescript": "^4.5.4" } }, @@ -206,6 +209,15 @@ "node": ">=6" } }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/@types/debug": { "version": "4.1.7", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", @@ -299,6 +311,18 @@ "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==", "dev": true }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -337,7 +361,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -346,7 +369,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -364,9 +386,9 @@ "dev": true }, "node_modules/app-builder-lib": { - "version": "22.14.5", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.14.5.tgz", - "integrity": "sha512-k3VwKP4kpsnUaXoUkm1s4zaSHPHIMFnN4kPMU9yXaKmE1LfHHqBaEah5bXeTAX5V/BC41wFdg8CF5vOjvgy8Rg==", + "version": "22.14.13", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.14.13.tgz", + "integrity": "sha512-SufmrtxU+D0Tn948fjEwAOlCN9757UXLkzzTWXMwZKR/5hisvgqeeBepWfphMIE6OkDGz0fbzEhL1P2Pty4XMg==", "dev": true, "dependencies": { "@develar/schema-utils": "~2.6.5", @@ -375,13 +397,13 @@ "7zip-bin": "~5.1.1", "async-exit-hook": "^2.0.1", "bluebird-lst": "^1.0.9", - "builder-util": "22.14.5", - "builder-util-runtime": "8.9.1", + "builder-util": "22.14.13", + "builder-util-runtime": "8.9.2", "chromium-pickle-js": "^0.2.0", "debug": "^4.3.2", "ejs": "^3.1.6", "electron-osx-sign": "^0.5.0", - "electron-publish": "22.14.5", + "electron-publish": "22.14.13", "form-data": "^4.0.0", "fs-extra": "^10.0.0", "hosted-git-info": "^4.0.2", @@ -400,9 +422,9 @@ } }, "node_modules/app-builder-lib/node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -490,8 +512,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "optional": true, "engines": { "node": ">=8" } @@ -690,9 +710,9 @@ "dev": true }, "node_modules/builder-util": { - "version": "22.14.5", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.14.5.tgz", - "integrity": "sha512-zqIHDFJwmA7jV7SC9aI+33MWwT2mWoijH+Ol9IntNAwuuRXoS+7XeJwnhLBXOhcDBzXT4kDzHnRk4JKeaygEYA==", + "version": "22.14.13", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.14.13.tgz", + "integrity": "sha512-oePC/qrrUuerhmH5iaCJzPRAKlSBylrhzuAJmRQClTyWnZUv6jbaHh+VoHMbEiE661wrj2S2aV7/bQh12cj1OA==", "dev": true, "dependencies": { "@types/debug": "^4.1.6", @@ -700,11 +720,13 @@ "7zip-bin": "~5.1.1", "app-builder-bin": "3.7.1", "bluebird-lst": "^1.0.9", - "builder-util-runtime": "8.9.1", + "builder-util-runtime": "8.9.2", "chalk": "^4.1.1", "cross-spawn": "^7.0.3", "debug": "^4.3.2", "fs-extra": "^10.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", "is-ci": "^3.0.0", "js-yaml": "^4.1.0", "source-map-support": "^0.5.19", @@ -713,9 +735,9 @@ } }, "node_modules/builder-util-runtime": { - "version": "8.9.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.9.1.tgz", - "integrity": "sha512-c8a8J3wK6BIVLW7ls+7TRK9igspTbzWmUqxFbgK0m40Ggm6efUbxtWVCGIjc+dtchyr5qAMAUL6iEGRdS/6vwg==", + "version": "8.9.2", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.9.2.tgz", + "integrity": "sha512-rhuKm5vh7E0aAmT6i8aoSfEjxzdYEFX7zDApK+eNgOhjofnWb74d9SRJv0H/8nsgOkos0TZ4zxW0P8J4N7xQ2A==", "dev": true, "dependencies": { "debug": "^4.3.2", @@ -726,9 +748,9 @@ } }, "node_modules/builder-util/node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -858,8 +880,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "optional": true, "dependencies": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" @@ -895,7 +915,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -906,8 +925,7 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/colors": { "version": "1.0.3", @@ -1179,14 +1197,14 @@ } }, "node_modules/dmg-builder": { - "version": "22.14.5", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.14.5.tgz", - "integrity": "sha512-1GvFGQE332bvPamcMwZDqWqfWfJTyyDLOsHMcGi0zs+Jh7JOn6/zuBkHJIWHdsj2QJbhzLVyd2/ZqttOKv7I8w==", + "version": "22.14.13", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.14.13.tgz", + "integrity": "sha512-xNOugB6AbIRETeU2uID15sUfjdZZcKdxK8xkFnwIggsM00PJ12JxpLNPTjcRoUnfwj3WrPjilrO64vRMwNItQg==", "dev": true, "dependencies": { - "app-builder-lib": "22.14.5", - "builder-util": "22.14.5", - "builder-util-runtime": "8.9.1", + "app-builder-lib": "22.14.13", + "builder-util": "22.14.13", + "builder-util-runtime": "8.9.2", "fs-extra": "^10.0.0", "iconv-lite": "^0.6.2", "js-yaml": "^4.1.0" @@ -1196,9 +1214,9 @@ } }, "node_modules/dmg-builder/node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -1231,9 +1249,10 @@ } }, "node_modules/dmg-license": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.10.tgz", - "integrity": "sha512-SVeeyiOeinV5JCPHXMdKOgK1YVbak/4+8WL2rBnfqRYpA5FaeFaQnQWb25x628am1w70CbipGDv9S51biph63A==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", + "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", + "deprecated": "Disk image license agreements are deprecated by Apple and will probably be removed in a future macOS release. Discussion at: https://github.com/argv-minus-one/dmg-license/issues/11", "dev": true, "optional": true, "os": [ @@ -1305,9 +1324,9 @@ } }, "node_modules/electron": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/electron/-/electron-16.0.7.tgz", - "integrity": "sha512-/IMwpBf2svhA1X/7Q58RV+Nn0fvUJsHniG4TizaO7q4iKFYSQ6hBvsLz+cylcZ8hRMKmVy5G1XaMNJID2ah23w==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-17.1.0.tgz", + "integrity": "sha512-X/qdldmQ8lA15NmeraubWCTtMeTO8K9Ser0wtSCgOXVh53Sr1Ea0VQQ7Q9LuGgWRVz4qtr40cntuEdM8icdmTw==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -1323,17 +1342,17 @@ } }, "node_modules/electron-builder": { - "version": "22.14.5", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.14.5.tgz", - "integrity": "sha512-N73hSbXFz6Mz5Z6h6C5ly6CB+dUN6k1LuCDJjI8VF47bMXv/QE0HE+Kkb0GPKqTqM7Hsk/yIYX+kHCfSkR5FGg==", + "version": "22.14.13", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.14.13.tgz", + "integrity": "sha512-3fgLxqF2TXVKiUPeg74O4V3l0l3j7ERLazo8sUbRkApw0+4iVAf2BJkHsHMaXiigsgCoEzK/F4/rB5rne/VAnw==", "dev": true, "dependencies": { "@types/yargs": "^17.0.1", - "app-builder-lib": "22.14.5", - "builder-util": "22.14.5", - "builder-util-runtime": "8.9.1", + "app-builder-lib": "22.14.13", + "builder-util": "22.14.13", + "builder-util-runtime": "8.9.2", "chalk": "^4.1.1", - "dmg-builder": "22.14.5", + "dmg-builder": "22.14.13", "fs-extra": "^10.0.0", "is-ci": "^3.0.0", "lazy-val": "^1.0.5", @@ -1411,6 +1430,40 @@ "node": ">=12" } }, + "node_modules/electron-context-menu": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/electron-context-menu/-/electron-context-menu-3.1.2.tgz", + "integrity": "sha512-nNzu4w14n7mOR+4cLjRC9cEFqGUsAY76seOm0sw3f4OxEfX/d75m7HYekyp5b+0m7Ixy2KN/Mrljw1zLmpyV2w==", + "dependencies": { + "cli-truncate": "^2.1.0", + "electron-dl": "^3.2.1", + "electron-is-dev": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/electron-dl": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/electron-dl/-/electron-dl-3.3.0.tgz", + "integrity": "sha512-Zwaz/OMGPIfBLV2SQH4sTsdDOs/U4y5AOHfremMBXEpjIxX+SiTx845DZAvJJwgb5hfowyWOBLiJhd/emBNLLQ==", + "dependencies": { + "ext-name": "^5.0.0", + "pupa": "^2.0.1", + "unused-filename": "^2.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/electron-is-dev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-2.0.0.tgz", + "integrity": "sha512-3X99K852Yoqu9AcW50qz3ibYBWY79/pBhlMCab8ToEWS48R0T9tyxRiQhwylE7zQdXrMnx2JKqUJyMPmt5FBqA==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/electron-json-storage": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/electron-json-storage/-/electron-json-storage-4.5.0.tgz", @@ -1473,14 +1526,14 @@ "dev": true }, "node_modules/electron-publish": { - "version": "22.14.5", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.14.5.tgz", - "integrity": "sha512-h+NANRdaA0PqGF15GKvorseWPzh1PXa/zx4I37//PIokW8eKIov8ky23foUSb55ZFWUHGpxQJux7y2NCfBtQeg==", + "version": "22.14.13", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.14.13.tgz", + "integrity": "sha512-0oP3QiNj3e8ewOaEpEJV/o6Zrmy2VarVvZ/bH7kyO/S/aJf9x8vQsKVWpsdmSiZ5DJEHgarFIXrnO0ZQf0P9iQ==", "dev": true, "dependencies": { "@types/fs-extra": "^9.0.11", - "builder-util": "22.14.5", - "builder-util-runtime": "8.9.1", + "builder-util": "22.14.13", + "builder-util-runtime": "8.9.2", "chalk": "^4.1.1", "fs-extra": "^10.0.0", "lazy-val": "^1.0.5", @@ -1488,9 +1541,9 @@ } }, "node_modules/electron-publish/node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -1522,11 +1575,15 @@ "node": ">= 10.0.0" } }, + "node_modules/electron-tabs": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/electron-tabs/-/electron-tabs-0.15.0.tgz", + "integrity": "sha512-pGW5V+V9X1+b2muKndn7xsce6D89D5j7kt0j/+5nX/gwsIAnZ86axJDriOxVP20f8yN4sQkrYdUana3Wi3Ea0w==" + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/encodeurl": { "version": "1.0.2", @@ -1576,7 +1633,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "dev": true, "engines": { "node": ">=8" } @@ -1594,6 +1650,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "dependencies": { + "mime-db": "^1.28.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "dependencies": { + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/extract-zip": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", @@ -1718,6 +1797,24 @@ "node": ">=6" } }, + "node_modules/glasstron": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/glasstron/-/glasstron-0.1.1.tgz", + "integrity": "sha512-oLEMQM5wwdAQ44NrXD3wjk+b3dsfQG1XtkLn5pCxQNa3ri1AtWvvzpnhFUd88ZTmguHvkY4c3JKzcPSYaJAKKA==", + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^4.0.0", + "x11": "^2.3.0" + }, + "funding": { + "url": "https://patreon.com/arytonex" + } + }, + "node_modules/glasstron/node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" + }, "node_modules/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -1896,6 +1993,33 @@ "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", "dev": true }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/iconv-corefoundation": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", @@ -1999,7 +2123,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "engines": { "node": ">=8" } @@ -2050,6 +2173,14 @@ "node": ">=8" } }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -2341,7 +2472,6 @@ "version": "1.51.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -2394,6 +2524,14 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/modify-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/modify-filename/-/modify-filename-1.1.0.tgz", + "integrity": "sha1-mi3sg4Bvuy2XXyK+7IWcoms5OqE=", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -2482,6 +2620,14 @@ "wrappy": "1" } }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/p-cancelable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", @@ -2506,6 +2652,14 @@ "node": ">=8" } }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -2615,7 +2769,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "dev": true, "dependencies": { "escape-goat": "^2.0.0" }, @@ -2841,8 +2994,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "optional": true, "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -2863,6 +3014,28 @@ "npm": ">= 3.0.0" } }, + "node_modules/sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-keys-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", + "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", + "dependencies": { + "sort-keys": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -2911,7 +3084,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -2925,7 +3097,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -2977,9 +3148,9 @@ } }, "node_modules/temp-file/node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -3156,6 +3327,18 @@ "node": ">=8" } }, + "node_modules/unused-filename": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unused-filename/-/unused-filename-2.1.0.tgz", + "integrity": "sha512-BMiNwJbuWmqCpAM1FqxCTD7lXF97AvfQC8Kr/DIeA6VtvhJaMDupZ82+inbjl5yVP44PcxOuCSxye1QMS0wZyg==", + "dependencies": { + "modify-filename": "^1.1.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/update-notifier": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", @@ -3336,6 +3519,17 @@ "signal-exit": "^3.0.2" } }, + "node_modules/x11": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/x11/-/x11-2.3.0.tgz", + "integrity": "sha1-vazO3M2sJIL9Vg8FEee/K9nh2/I=", + "dependencies": { + "os-homedir": "^1.0.1" + }, + "engines": { + "node": "*" + } + }, "node_modules/xdg-basedir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", @@ -3554,6 +3748,12 @@ "defer-to-connect": "^1.0.1" } }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, "@types/debug": { "version": "4.1.7", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", @@ -3647,6 +3847,15 @@ "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==", "dev": true }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -3678,14 +3887,12 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -3697,9 +3904,9 @@ "dev": true }, "app-builder-lib": { - "version": "22.14.5", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.14.5.tgz", - "integrity": "sha512-k3VwKP4kpsnUaXoUkm1s4zaSHPHIMFnN4kPMU9yXaKmE1LfHHqBaEah5bXeTAX5V/BC41wFdg8CF5vOjvgy8Rg==", + "version": "22.14.13", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.14.13.tgz", + "integrity": "sha512-SufmrtxU+D0Tn948fjEwAOlCN9757UXLkzzTWXMwZKR/5hisvgqeeBepWfphMIE6OkDGz0fbzEhL1P2Pty4XMg==", "dev": true, "requires": { "@develar/schema-utils": "~2.6.5", @@ -3708,13 +3915,13 @@ "7zip-bin": "~5.1.1", "async-exit-hook": "^2.0.1", "bluebird-lst": "^1.0.9", - "builder-util": "22.14.5", - "builder-util-runtime": "8.9.1", + "builder-util": "22.14.13", + "builder-util-runtime": "8.9.2", "chromium-pickle-js": "^0.2.0", "debug": "^4.3.2", "ejs": "^3.1.6", "electron-osx-sign": "^0.5.0", - "electron-publish": "22.14.5", + "electron-publish": "22.14.13", "form-data": "^4.0.0", "fs-extra": "^10.0.0", "hosted-git-info": "^4.0.2", @@ -3730,9 +3937,9 @@ }, "dependencies": { "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -3796,9 +4003,7 @@ "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "optional": true + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" }, "async": { "version": "2.6.3", @@ -3944,9 +4149,9 @@ "dev": true }, "builder-util": { - "version": "22.14.5", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.14.5.tgz", - "integrity": "sha512-zqIHDFJwmA7jV7SC9aI+33MWwT2mWoijH+Ol9IntNAwuuRXoS+7XeJwnhLBXOhcDBzXT4kDzHnRk4JKeaygEYA==", + "version": "22.14.13", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.14.13.tgz", + "integrity": "sha512-oePC/qrrUuerhmH5iaCJzPRAKlSBylrhzuAJmRQClTyWnZUv6jbaHh+VoHMbEiE661wrj2S2aV7/bQh12cj1OA==", "dev": true, "requires": { "@types/debug": "^4.1.6", @@ -3954,11 +4159,13 @@ "7zip-bin": "~5.1.1", "app-builder-bin": "3.7.1", "bluebird-lst": "^1.0.9", - "builder-util-runtime": "8.9.1", + "builder-util-runtime": "8.9.2", "chalk": "^4.1.1", "cross-spawn": "^7.0.3", "debug": "^4.3.2", "fs-extra": "^10.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", "is-ci": "^3.0.0", "js-yaml": "^4.1.0", "source-map-support": "^0.5.19", @@ -3967,9 +4174,9 @@ }, "dependencies": { "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -3996,9 +4203,9 @@ } }, "builder-util-runtime": { - "version": "8.9.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.9.1.tgz", - "integrity": "sha512-c8a8J3wK6BIVLW7ls+7TRK9igspTbzWmUqxFbgK0m40Ggm6efUbxtWVCGIjc+dtchyr5qAMAUL6iEGRdS/6vwg==", + "version": "8.9.2", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.9.2.tgz", + "integrity": "sha512-rhuKm5vh7E0aAmT6i8aoSfEjxzdYEFX7zDApK+eNgOhjofnWb74d9SRJv0H/8nsgOkos0TZ4zxW0P8J4N7xQ2A==", "dev": true, "requires": { "debug": "^4.3.2", @@ -4075,8 +4282,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "optional": true, "requires": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" @@ -4106,7 +4311,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -4114,8 +4318,7 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "colors": { "version": "1.0.3", @@ -4333,14 +4536,14 @@ } }, "dmg-builder": { - "version": "22.14.5", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.14.5.tgz", - "integrity": "sha512-1GvFGQE332bvPamcMwZDqWqfWfJTyyDLOsHMcGi0zs+Jh7JOn6/zuBkHJIWHdsj2QJbhzLVyd2/ZqttOKv7I8w==", + "version": "22.14.13", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.14.13.tgz", + "integrity": "sha512-xNOugB6AbIRETeU2uID15sUfjdZZcKdxK8xkFnwIggsM00PJ12JxpLNPTjcRoUnfwj3WrPjilrO64vRMwNItQg==", "dev": true, "requires": { - "app-builder-lib": "22.14.5", - "builder-util": "22.14.5", - "builder-util-runtime": "8.9.1", + "app-builder-lib": "22.14.13", + "builder-util": "22.14.13", + "builder-util-runtime": "8.9.2", "dmg-license": "^1.0.9", "fs-extra": "^10.0.0", "iconv-lite": "^0.6.2", @@ -4348,9 +4551,9 @@ }, "dependencies": { "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -4377,9 +4580,9 @@ } }, "dmg-license": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.10.tgz", - "integrity": "sha512-SVeeyiOeinV5JCPHXMdKOgK1YVbak/4+8WL2rBnfqRYpA5FaeFaQnQWb25x628am1w70CbipGDv9S51biph63A==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", + "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", "dev": true, "optional": true, "requires": { @@ -4430,9 +4633,9 @@ } }, "electron": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/electron/-/electron-16.0.7.tgz", - "integrity": "sha512-/IMwpBf2svhA1X/7Q58RV+Nn0fvUJsHniG4TizaO7q4iKFYSQ6hBvsLz+cylcZ8hRMKmVy5G1XaMNJID2ah23w==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-17.1.0.tgz", + "integrity": "sha512-X/qdldmQ8lA15NmeraubWCTtMeTO8K9Ser0wtSCgOXVh53Sr1Ea0VQQ7Q9LuGgWRVz4qtr40cntuEdM8icdmTw==", "dev": true, "requires": { "@electron/get": "^1.13.0", @@ -4441,17 +4644,17 @@ } }, "electron-builder": { - "version": "22.14.5", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.14.5.tgz", - "integrity": "sha512-N73hSbXFz6Mz5Z6h6C5ly6CB+dUN6k1LuCDJjI8VF47bMXv/QE0HE+Kkb0GPKqTqM7Hsk/yIYX+kHCfSkR5FGg==", + "version": "22.14.13", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.14.13.tgz", + "integrity": "sha512-3fgLxqF2TXVKiUPeg74O4V3l0l3j7ERLazo8sUbRkApw0+4iVAf2BJkHsHMaXiigsgCoEzK/F4/rB5rne/VAnw==", "dev": true, "requires": { "@types/yargs": "^17.0.1", - "app-builder-lib": "22.14.5", - "builder-util": "22.14.5", - "builder-util-runtime": "8.9.1", + "app-builder-lib": "22.14.13", + "builder-util": "22.14.13", + "builder-util-runtime": "8.9.2", "chalk": "^4.1.1", - "dmg-builder": "22.14.5", + "dmg-builder": "22.14.13", "fs-extra": "^10.0.0", "is-ci": "^3.0.0", "lazy-val": "^1.0.5", @@ -4510,6 +4713,31 @@ } } }, + "electron-context-menu": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/electron-context-menu/-/electron-context-menu-3.1.2.tgz", + "integrity": "sha512-nNzu4w14n7mOR+4cLjRC9cEFqGUsAY76seOm0sw3f4OxEfX/d75m7HYekyp5b+0m7Ixy2KN/Mrljw1zLmpyV2w==", + "requires": { + "cli-truncate": "^2.1.0", + "electron-dl": "^3.2.1", + "electron-is-dev": "^2.0.0" + } + }, + "electron-dl": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/electron-dl/-/electron-dl-3.3.0.tgz", + "integrity": "sha512-Zwaz/OMGPIfBLV2SQH4sTsdDOs/U4y5AOHfremMBXEpjIxX+SiTx845DZAvJJwgb5hfowyWOBLiJhd/emBNLLQ==", + "requires": { + "ext-name": "^5.0.0", + "pupa": "^2.0.1", + "unused-filename": "^2.1.0" + } + }, + "electron-is-dev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-2.0.0.tgz", + "integrity": "sha512-3X99K852Yoqu9AcW50qz3ibYBWY79/pBhlMCab8ToEWS48R0T9tyxRiQhwylE7zQdXrMnx2JKqUJyMPmt5FBqA==" + }, "electron-json-storage": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/electron-json-storage/-/electron-json-storage-4.5.0.tgz", @@ -4564,14 +4792,14 @@ } }, "electron-publish": { - "version": "22.14.5", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.14.5.tgz", - "integrity": "sha512-h+NANRdaA0PqGF15GKvorseWPzh1PXa/zx4I37//PIokW8eKIov8ky23foUSb55ZFWUHGpxQJux7y2NCfBtQeg==", + "version": "22.14.13", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.14.13.tgz", + "integrity": "sha512-0oP3QiNj3e8ewOaEpEJV/o6Zrmy2VarVvZ/bH7kyO/S/aJf9x8vQsKVWpsdmSiZ5DJEHgarFIXrnO0ZQf0P9iQ==", "dev": true, "requires": { "@types/fs-extra": "^9.0.11", - "builder-util": "22.14.5", - "builder-util-runtime": "8.9.1", + "builder-util": "22.14.13", + "builder-util-runtime": "8.9.2", "chalk": "^4.1.1", "fs-extra": "^10.0.0", "lazy-val": "^1.0.5", @@ -4579,9 +4807,9 @@ }, "dependencies": { "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -4607,11 +4835,15 @@ } } }, + "electron-tabs": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/electron-tabs/-/electron-tabs-0.15.0.tgz", + "integrity": "sha512-pGW5V+V9X1+b2muKndn7xsce6D89D5j7kt0j/+5nX/gwsIAnZ86axJDriOxVP20f8yN4sQkrYdUana3Wi3Ea0w==" + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "encodeurl": { "version": "1.0.2", @@ -4651,8 +4883,7 @@ "escape-goat": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "dev": true + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" }, "escape-string-regexp": { "version": "4.0.0", @@ -4661,6 +4892,23 @@ "dev": true, "optional": true }, + "ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "requires": { + "mime-db": "^1.28.0" + } + }, + "ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "requires": { + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" + } + }, "extract-zip": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", @@ -4769,6 +5017,22 @@ "pump": "^3.0.0" } }, + "glasstron": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/glasstron/-/glasstron-0.1.1.tgz", + "integrity": "sha512-oLEMQM5wwdAQ44NrXD3wjk+b3dsfQG1XtkLn5pCxQNa3ri1AtWvvzpnhFUd88ZTmguHvkY4c3JKzcPSYaJAKKA==", + "requires": { + "node-addon-api": "^4.0.0", + "x11": "^2.3.0" + }, + "dependencies": { + "node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" + } + } + }, "glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -4906,6 +5170,27 @@ "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", "dev": true }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, "iconv-corefoundation": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", @@ -4976,8 +5261,7 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-installed-globally": { "version": "0.4.0", @@ -5007,6 +5291,11 @@ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -5239,8 +5528,7 @@ "mime-db": { "version": "1.51.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", - "dev": true + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" }, "mime-types": { "version": "2.1.34", @@ -5278,6 +5566,11 @@ "minimist": "^1.2.5" } }, + "modify-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/modify-filename/-/modify-filename-1.1.0.tgz", + "integrity": "sha1-mi3sg4Bvuy2XXyK+7IWcoms5OqE=" + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -5359,6 +5652,11 @@ "wrappy": "1" } }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, "p-cancelable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", @@ -5377,6 +5675,11 @@ "semver": "^6.2.0" } }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -5464,7 +5767,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "dev": true, "requires": { "escape-goat": "^2.0.0" } @@ -5648,8 +5950,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "optional": true, "requires": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -5663,6 +5963,22 @@ "dev": true, "optional": true }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "sort-keys-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", + "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", + "requires": { + "sort-keys": "^1.0.0" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -5705,7 +6021,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -5716,7 +6031,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -5756,9 +6070,9 @@ }, "dependencies": { "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -5894,6 +6208,15 @@ "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "dev": true }, + "unused-filename": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unused-filename/-/unused-filename-2.1.0.tgz", + "integrity": "sha512-BMiNwJbuWmqCpAM1FqxCTD7lXF97AvfQC8Kr/DIeA6VtvhJaMDupZ82+inbjl5yVP44PcxOuCSxye1QMS0wZyg==", + "requires": { + "modify-filename": "^1.1.0", + "path-exists": "^4.0.0" + } + }, "update-notifier": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", @@ -6042,6 +6365,14 @@ "signal-exit": "^3.0.2" } }, + "x11": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/x11/-/x11-2.3.0.tgz", + "integrity": "sha1-vazO3M2sJIL9Vg8FEee/K9nh2/I=", + "requires": { + "os-homedir": "^1.0.1" + } + }, "xdg-basedir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", diff --git a/package.json b/package.json index a856ce4..708a6bd 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "ArmCord is a custom client designed to enhance your Discord experience while keeping everything lightweight.", "main": "ts-out/main.js", "scripts": { - "build": "tsc && copyfiles -u 1 src/**/*.html src/**/*.css ts-out/ && copyfiles package.json ts-out/ && copyfiles assets/** ts-out/", + "build": "tsc && copyfiles -u 1 src/**/*.html src/**/**/*.css ts-out/ && copyfiles package.json ts-out/ && copyfiles assets/** ts-out/", "watch": "tsc -w", "start": "npm run build && electron ./ts-out/main.js", "package": "npm run build && electron-builder" @@ -23,12 +23,15 @@ "@types/electron-json-storage": "^4.5.0", "@types/node": "^14.18.2", "copyfiles": "^2.4.1", - "electron": "^16.0.7", - "electron-builder": "^22.14.5", + "electron": "^17.1.0", + "electron-builder": "^22.14.13", "typescript": "^4.5.4" }, "dependencies": { + "electron-context-menu": "^3.1.2", "electron-json-storage": "^4.5.0", + "electron-tabs": "^0.15.0", + "glasstron": "^0.1.1", "v8-compile-cache": "^2.3.0" }, "build": { diff --git a/src/content/css/discord.css b/src/content/css/discord.css index 2d3bdac..4e29030 100644 --- a/src/content/css/discord.css +++ b/src/content/css/discord.css @@ -1,4 +1,4 @@ -.info-1sUqUG:last-child:before { +.info-3pQQBb:last-child:before { content: "ArmCord Version: 3.1.0"!important; height: auto; line-height: 16px; diff --git a/src/content/css/tabs.css b/src/content/css/tabs.css new file mode 100644 index 0000000..5813278 --- /dev/null +++ b/src/content/css/tabs.css @@ -0,0 +1,53 @@ +@import url("https://kckarnige.github.io/femboi_owo/discord-font.css"); +:root { + --window-buttons: var(--header-secondary); + --cord-color: var(--header-primary); + --armcord-color: #7289da; + --titlebar-color: var(--background-tertiary); +} +.tabs { + display: block; + top: 0; + left: 0; + right: 0; + flex-shrink: 0; + overflow: hidden; + zoom: 1; + box-sizing: border-box; + width: 100%; + clear: both; + height: 30px; + line-height: 30px; + background-color: #202225; + -webkit-app-region: drag; + width: 100%; + user-select: none; + -webkit-user-select: none; + position: fixed; + z-index: 99999; +} + +.tabs #tabs-controls-container { + float: left; + width: 150px; + height: 100%; + line-height: 30px; + background-color: #202225; + -webkit-app-region: no-drag; +} +.tabs-buttons { + color: white; + background-color: inherit; + float: left; + border: none; + outline: none; + cursor: pointer; + transition: 0.3s; + font-size: 20px; +} +.tabs-buttons:hover { + background-color: #4e515a; +} +.withFrame-haYltI { + height: 30px !important; +} diff --git a/src/content/css/titlebar.css b/src/content/css/titlebar.css index 6c5df04..6060d56 100644 --- a/src/content/css/titlebar.css +++ b/src/content/css/titlebar.css @@ -1,4 +1,4 @@ -@import url("https://kckarnige.github.io/femboi_owo/discord-font.css"); +@import url("https://armcord.smartfridge.space/logofont.css"); :root { --window-buttons: var(--header-secondary); --cord-color: var(--header-primary); diff --git a/src/content/settings.html b/src/content/settings.html deleted file mode 100644 index 6fe5ab8..0000000 --- a/src/content/settings.html +++ /dev/null @@ -1 +0,0 @@ -

settings, really cool

\ No newline at end of file diff --git a/src/content/setup.html b/src/content/setup.html index f805f89..280c7b7 100644 --- a/src/content/setup.html +++ b/src/content/setup.html @@ -1,3 +1,4 @@ + @@ -42,7 +43,7 @@ } else { console.log("Starting ArmCord Setup..."); document.getElementById("express").addEventListener("click", function () { - window.armcordinternal.saveSettings(true, "stable", true, "cumcord"); + window.armcordinternal.saveSettings("default", "stable", true, true, false, "cumcord", "acrylic"); fade(document.getElementById("setup")); setTimeout(function () { window.armcordinternal.restart() @@ -90,15 +91,15 @@ .getElementById("next") .addEventListener("click", function () { var mod = document.getElementById("mod").value; - window.armcordinternal.saveSettings(true, branch, true, mod); + window.armcordinternal.saveSettings("default", branch, true,true,false, mod, "acrylic"); fade(document.getElementById("setup")); setTimeout(function () { window.armcordinternal.restart(); }, 5000); }); } else { - //saveSettings(customTitlebarSetting: boolean, channelSetting: string, armcordCSPSetting: boolean, modsSetting: string) - window.armcordinternal.saveSettings(true, branch, true, "none"); + //saveSettings(windowStyle: string, channelSetting: string, armcordCSPSetting: boolean, minimizeToTray:boolean, modsSetting: string) + window.armcordinternal.saveSettings("default", branch, true,true,false, "none", "acrylic"); fade(document.getElementById("setup")); setTimeout(function () { window.armcordinternal.restart() diff --git a/src/ipc.ts b/src/ipc.ts index 9b62ac0..ef4a4a0 100644 --- a/src/ipc.ts +++ b/src/ipc.ts @@ -1,13 +1,16 @@ //ipc stuff import { app, ipcMain, shell, desktopCapturer } from "electron"; -import { mainWindow } from "./window"; +import { createTabsGuest, mainWindow } from "./window"; import { saveSettings, getVersion } from "./utils"; -import { settings, customTitlebar } from "./main"; +import { settings, customTitlebar, tabs } from "./main"; import { createSettingsWindow } from "./settings/main"; export function registerIpc() { ipcMain.on("get-app-path", (event, arg) => { event.reply("app-path", app.getAppPath()); }); + ipcMain.on("openTab", (event, number: number) => { + createTabsGuest(number); + }); ipcMain.on("open-external-link", (event, href: string) => { shell.openExternal(href); }); @@ -29,6 +32,9 @@ export function registerIpc() { ipcMain.on("win-hide", (event, arg) => { mainWindow.hide(); }); + ipcMain.on("win-quit", (event, arg) => { + app.exit(); + }); ipcMain.on("get-app-version", (event) => { event.returnValue = getVersion(); }); @@ -39,11 +45,14 @@ export function registerIpc() { app.relaunch(); app.exit(); }); - ipcMain.on("saveSettings", (event, ...args) => { //@ts-ignore saveSettings(...args); }); + ipcMain.on("minimizeToTray", (event) => { + console.log(settings.minimizeToTray); + event.returnValue = settings.minimizeToTray; + }); ipcMain.on("channel", (event) => { event.returnValue = settings.channel; }); @@ -53,6 +62,12 @@ export function registerIpc() { ipcMain.on("titlebar", (event, arg) => { event.returnValue = customTitlebar; }); + ipcMain.on("tabs", (event, arg) => { + event.returnValue = tabs; + }); + ipcMain.on("shouldPatch", (event, arg) => { + event.returnValue = settings.automaticPatches; + }); ipcMain.on("openSettingsWindow", (event, arg) => { createSettingsWindow(); }); @@ -66,5 +81,4 @@ export function registerIpc() { ipcMain.handle("DESKTOP_CAPTURER_GET_SOURCES", (event, opts) => desktopCapturer.getSources(opts) ); - } diff --git a/src/main.ts b/src/main.ts index de8e4db..bb9893e 100644 --- a/src/main.ts +++ b/src/main.ts @@ -11,30 +11,38 @@ import { getConfigUnsafe, setup } from "./utils"; import "./extensions/mods"; import "./extensions/plugin"; import "./tray"; -import { mainWindow, createCustomWindow, createNativeWindow } from "./window"; +import { mainWindow, createCustomWindow, createNativeWindow, createGlasstronWindow, createTabsHost } from "./window"; import "./shortcuts"; export var contentPath: string; var channel: string; export var settings: any; export var customTitlebar: boolean; -storage.has("settings", function (error, hasKey) { - if (error) throw error; - - if (!hasKey) { - console.log("First run of the ArmCord. Starting setup."); - setup(); - contentPath = path.join(__dirname, "/content/setup.html"); - if (!contentPath.includes("ts-out")) { - contentPath = path.join(__dirname, "/ts-out/content/setup.html"); - } - } else { - console.log("ArmCord has been run before. Skipping setup."); - contentPath = path.join(__dirname, "/content/splash.html"); - if (!contentPath.includes("ts-out")) { - contentPath = path.join(__dirname, "/ts-out/content/splash.html"); - } +export var tabs: boolean; +async function appendSwitch(){ + if (await getConfigUnsafe("windowStyle") == "glasstron") { + console.log("Enabling transparency visuals."); + app.commandLine.appendSwitch("enable-transparent-visuals"); } -}); +} +appendSwitch(); + storage.has("settings", function (error, hasKey) { + if (error) throw error; + + if (!hasKey) { + console.log("First run of the ArmCord. Starting setup."); + setup(); + contentPath = path.join(__dirname, "/content/setup.html"); + if (!contentPath.includes("ts-out")) { + contentPath = path.join(__dirname, "/ts-out/content/setup.html"); + } + } else { + console.log("ArmCord has been run before. Skipping setup."); + contentPath = path.join(__dirname, "/content/splash.html"); + if (!contentPath.includes("ts-out")) { + contentPath = path.join(__dirname, "/ts-out/content/splash.html"); + } + } + }); storage.get("settings", function (error, data: any) { if (error) throw error; console.log(data); @@ -42,19 +50,33 @@ storage.get("settings", function (error, data: any) { settings = data; }); app.whenReady().then(async () => { - if (await getConfigUnsafe("customTitlebar") == true) { - console.log("Creating custom titlebar window."); - customTitlebar = true; - createCustomWindow(); - } else if (await getConfigUnsafe("customTitlebar") == "setup") { - //rare case of setup window - console.log("Creating setup window."); - customTitlebar = true; - createCustomWindow(); - } else { - console.log("Creating native titlebar window."); - customTitlebar = false; - createNativeWindow(); + switch (await getConfigUnsafe("windowStyle")) { + case "default": + createCustomWindow(); + customTitlebar = true; + break; + case "native": + createNativeWindow(); + break; + case "glasstron": + setTimeout( + createGlasstronWindow, + process.platform == "linux" ? 1000 : 0 + // Electron has a bug on linux where it + // won't initialize properly when using + // transparency. To work around that, it + // is necessary to delay the window + // spawn function. + ); + break; + case "tabs": + createTabsHost(); + tabs = true; + break; + default: + createCustomWindow(); + customTitlebar = true; + break; } session .fromPartition("some-partition") @@ -68,19 +90,21 @@ app.whenReady().then(async () => { callback(true); } }); - mainWindow.webContents.session.webRequest.onBeforeRequest( - (details, callback) => { - if (/api\/v\d\/science$/g.test(details.url)) - return callback({ cancel: true }); - return callback({}); - } - ); - app.on("activate", function () { + app.on("activate", async function () { if (BrowserWindow.getAllWindows().length === 0) - if (!settings.customTitlebar) { - createNativeWindow(); - } else { - createCustomWindow(); + switch (await getConfigUnsafe("windowStyle")) { + case "default": + createCustomWindow(); + break; + case "native": + createNativeWindow(); + break; + case "glasstron": + createGlasstronWindow(); + break; + default: + createCustomWindow(); + break; } }); }); diff --git a/src/preload/bridge.ts b/src/preload/bridge.ts index c65300f..5b9ba2c 100644 --- a/src/preload/bridge.ts +++ b/src/preload/bridge.ts @@ -15,6 +15,7 @@ contextBridge.exposeInMainWorld("armcord", { }, electron: process.versions.electron, channel: ipcRenderer.sendSync("channel"), + openTab: (number: number) => ipcRenderer.sendSync("openTab", number), version: ipcRenderer.sendSync("get-app-version", "app-version"), getDisplayMediaSelector: getDisplayMediaSelector, openSettingsWindow: () => ipcRenderer.send("openSettingsWindow"), diff --git a/src/preload/capturer.ts b/src/preload/capturer.ts index 1369560..fba6a8b 100644 --- a/src/preload/capturer.ts +++ b/src/preload/capturer.ts @@ -1,8 +1,11 @@ //Fixed context isolation version https://github.com/getferdi/ferdi/blob/develop/src/webview/screenshare.ts //original https://github.com/electron/electron/issues/16513#issuecomment-602070250 -import { desktopCapturer } from 'electron'; +import { ipcRenderer } from 'electron'; import {addStyle, addScript} from '../utils'; - +const desktopCapturer = { + getSources: (opts: any) => + ipcRenderer.invoke("DESKTOP_CAPTURER_GET_SOURCES", opts), +}; const CANCEL_ID = 'desktop-capturer-selection__cancel'; export async function getDisplayMediaSelector() { @@ -12,7 +15,7 @@ export async function getDisplayMediaSelector() { return `
+ `; + elem.classList.add("withFrame-haYltI"); + if (document.getElementById("app-mount") == null) { + document.body.appendChild(elem); + } else { + document.getElementById("app-mount")!.prepend(elem); + } + const cssPath = path.join(__dirname, "../", "/content/css/tabs.css"); + addStyle(fs.readFileSync(cssPath, "utf8")); +})} \ No newline at end of file diff --git a/src/preload/titlebar.ts b/src/preload/titlebar.ts index a48952c..f1d5560 100644 --- a/src/preload/titlebar.ts +++ b/src/preload/titlebar.ts @@ -39,7 +39,11 @@ export function injectTitlebar() { }); quit!.addEventListener("click", () => { - ipcRenderer.send("win-hide"); + if (ipcRenderer.sendSync("minimizeToTray") === true) { + ipcRenderer.send("win-hide"); + } else if (ipcRenderer.sendSync("minimizeToTray") === false) { + ipcRenderer.send("win-quit"); + } }); }); } diff --git a/src/settings/main.ts b/src/settings/main.ts index 3c503b0..d7d7e94 100644 --- a/src/settings/main.ts +++ b/src/settings/main.ts @@ -1,25 +1,46 @@ -import { BrowserWindow, shell } from "electron"; +import { BrowserWindow, shell, ipcMain } from "electron"; +import * as storage from "electron-json-storage"; +import {getConfigUnsafe, saveSettings} from "../utils"; import path from "path"; - -var settingsWindow; +var settings:any; +var isAlreadyCreated:boolean = false; +storage.get("settings", function (error, data: any) { + if (error) throw error; + console.log(data); + settings = data; +}); +var settingsWindow:BrowserWindow; export function createSettingsWindow() { + if (isAlreadyCreated) { + settingsWindow.show(); + } else { settingsWindow = new BrowserWindow({ width: 500, - height: 600, + height: 500, title: "ArmCord Settings", darkTheme: true, - icon: path.join(__dirname, "/assets/icon_transparent.png"), - frame: false, + frame: true, autoHideMenuBar: true, webPreferences: { - preload: path.join(__dirname, "preload/preload.js"), + preload: path.join(__dirname, "preload.js"), }, }); - + ipcMain.on("saveSettings", (event, ...args) => { + //@ts-ignore + saveSettings(...args); + }); + ipcMain.handle("getSetting", (event, toGet: string) => { + return getConfigUnsafe(toGet); + }); settingsWindow.webContents.setWindowOpenHandler(({ url }) => { shell.openExternal(url); return { action: "deny" }; }); - - settingsWindow.loadFile("settings.html"); + settingsWindow.loadURL(`file://${__dirname}/settings.html`); + settingsWindow.on("close", async (e) => { + e.preventDefault() + settingsWindow.hide() + }); + isAlreadyCreated = true; +} } diff --git a/src/settings/preload.ts b/src/settings/preload.ts index d8ec246..365ac03 100644 --- a/src/settings/preload.ts +++ b/src/settings/preload.ts @@ -1 +1,6 @@ -console.log("test") \ No newline at end of file +import {contextBridge, ipcRenderer} from "electron"; +console.log("ArmCord Settings") +contextBridge.exposeInMainWorld("settings", { + save: (...args: any) => ipcRenderer.send("saveSettings", ...args), + get: (toGet: string) => ipcRenderer.invoke('getSetting', toGet).then((result) => {return result}) //jank but works +}); \ No newline at end of file diff --git a/src/settings/settings.css b/src/settings/settings.css new file mode 100644 index 0000000..340ebe0 --- /dev/null +++ b/src/settings/settings.css @@ -0,0 +1,157 @@ +/*MIT License + +Copyright (c) 2021 GooseMod + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE.*/ +:root { + --background-primary: #282b30; + --background-secondary: rgba(255, 255, 255, 0.1); + --brand-experiment: #5865f2; + --header-primary: #fff; + --text-muted: #72767d; +} + +@font-face { + font-family: Whitney; + font-weight: 400; + font-style: normal; + src: url(https://armcord.smartfridge.space/whitney_400.woff) format("woff"); +} + +html, +body { + overflow: hidden; + + margin: 0; + padding: 0; + margin: 2%; + background: var(--background-primary); +} + +* { + font-family: "Whitney", sans-serif; + + box-sizing: border-box; + cursor: default; +} +.left { + float:right; + vertical-align: right!important; +} +.switch { + vertical-align: middle; +} +.header { + color: white; + font-size: 1.5em; +} +.center { + text-align: center; +} +/*buttons*/ +button { + background-color: #7289da; + font-family: Whitney, "Helvetica Neue", Helvetica, Arial, sans-serif; + color: #ffffff; + padding: 4px; + border-radius: 5px; + margin-top: 5px; + + text-align: center; + border-style: none; + outline: none; +} + +button:hover { + background-color: #687dc6; + border-style: none; + outline: none; + cursor: pointer; +} +.tgl { + display: none; +} +.tgl, .tgl:after, .tgl:before, .tgl *, .tgl *:after, .tgl *:before, .tgl + .tgl-btn { + box-sizing: border-box; +} +.tgl::-moz-selection, .tgl:after::-moz-selection, .tgl:before::-moz-selection, .tgl *::-moz-selection, .tgl *:after::-moz-selection, .tgl *:before::-moz-selection, .tgl + .tgl-btn::-moz-selection { + background: none; +} +.tgl::selection, .tgl:after::selection, .tgl:before::selection, .tgl *::selection, .tgl *:after::selection, .tgl *:before::selection, .tgl + .tgl-btn::selection { + background: none; +} +.tgl + .tgl-btn { + outline: 0; + display: block; + width: 4em; + height: 2em; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.tgl + .tgl-btn:after, .tgl + .tgl-btn:before { + position: relative; + display: block; + content: ""; + width: 50%; + height: 100%; +} +.tgl + .tgl-btn:after { + left: 0; +} +.tgl + .tgl-btn:before { + display: none; +} +.tgl:checked + .tgl-btn:after { + left: 50%; +} + +.tgl-light + .tgl-btn { + background: #5c5757; + border-radius: 2em; + padding: 2px; + transition: all 0.4s ease; +} +.tgl-light + .tgl-btn:after { + border-radius: 50%; + background: rgb(255, 255, 255); + transition: all 0.2s ease; +} +.tgl-light:checked + .tgl-btn { + background: #47ca5a; +} +select { + -webkit-appearance: button; + -moz-appearance: button; + background-color: #2c2f33; + background-position: center right; + background-repeat: no-repeat; + border: 1px solid #aaa; + border-radius: 2px; + box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1); + color: #fff; + font-size: 1.2em; + margin: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} \ No newline at end of file diff --git a/src/settings/settings.html b/src/settings/settings.html new file mode 100644 index 0000000..ae8d54b --- /dev/null +++ b/src/settings/settings.html @@ -0,0 +1,88 @@ + + + + + + ArmCord Settings + + + + + +
+ +

ArmCord theme:

+
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ +

Discord channel:

+
+
+ +

Client mod:

+
+
+ +

Glasstron blur type:

+
+ + + + + + + \ No newline at end of file diff --git a/src/tray.ts b/src/tray.ts index 1d43ef6..c20ecdd 100644 --- a/src/tray.ts +++ b/src/tray.ts @@ -1,6 +1,7 @@ import { app, Menu, Tray } from 'electron'; import {mainWindow} from './window'; import * as path from 'path' +import { createSettingsWindow } from './settings/main'; let tray = null app.whenReady().then(() => { tray = new Tray(path.join(__dirname, "../", "/assets/ac_plug.png")) @@ -11,6 +12,12 @@ app.whenReady().then(() => { mainWindow.show(); }, }, + { + label: "Open Settings", + click: function () { + createSettingsWindow(); + }, + }, { label: "Support Discord Server", click: function () { diff --git a/src/types/glasstron.d.ts b/src/types/glasstron.d.ts new file mode 100644 index 0000000..3d26fb7 --- /dev/null +++ b/src/types/glasstron.d.ts @@ -0,0 +1,86 @@ +declare module "glasstron" { + export class BrowserWindow extends Electron.BrowserWindow { + getBlur(): Promise; + setBlur(value: boolean): Promise; + blurType: WindowsBlurType; + setVibrancy(vibrancy: MacOSVibrancy): void; + } + /** + * @deprecated + */ + export function init(): void; + /** + * @deprecated + */ + export function update( + window: Electron.BrowserWindow, + values: { + windows?: { + blurType: WindowsBlurType; + }; + macos?: { + vibrancy: MacOSVibrancy; + }; + linux?: { + requestBlur: boolean; + }; + } + ): void; + export class Hacks { + static injectOnElectron(): void; + static delayReadyEvent(): void; + } + export type WindowsBlurType = + | "acrylic" + | "blurbehind" + | "transparent" + | "none"; + export type MacOSVibrancy = + | ( + | "appearance-based" + | "light" + | "dark" + | "titlebar" + | "selection" + | "menu" + | "popover" + | "sidebar" + | "medium-light" + | "ultra-dark" + | "header" + | "sheet" + | "window" + | "hud" + | "fullscreen-ui" + | "tooltip" + | "content" + | "under-window" + | "under-page" + ) + | null; +} + +declare module "glasstron/src/utils" { + class Utils { + static getSavePath(): string; + static copyToPath( + innerFile: string, + outerFilename?: string, + flags?: number + ): void; + static removeFromPath(filename: string): void; + static isInPath(filename: string): boolean; + static getPlatform(): any; + static parseKeyValString( + string: string, + keyvalSeparator?: string, + pairSeparator?: string + ): any; + static makeKeyValString( + object: any, + keyvalSeparator?: string, + pairSeparator?: string + ): string; + } + export = Utils; +} diff --git a/src/utils.ts b/src/utils.ts index 778284e..6b05c8b 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -17,15 +17,18 @@ export function addScript(scriptString: string) { document.body.append(script); } export function setup() { - console.log("Setting up ArmCord settings."); + console.log("Setting up temporary ArmCord settings."); storage.set( "settings", { - customTitlebar: true, + windowStyle: "default", channel: "stable", doneSetup: true, armcordCSP: true, + minimizeToTray: true, + automaticPatches: false, mods: "cumcord", + blurType: "acrylic", }, function (error) { if (error) throw error; @@ -35,21 +38,32 @@ export function setup() { export async function sleep(ms: number) { return new Promise((resolve) => setTimeout(resolve, ms)); } +export async function checkIfConfigIsNew() { + if (await getConfigUnsafe("automaticPatches") == undefined) { + firstRun = true; + } +} export function saveSettings( - customTitlebarSetting: boolean, + windowStyle: string, channelSetting: string, armcordCSPSetting: boolean, - modsSetting: string + minimizeToTray: boolean, + automaticPatches: boolean, + modsSetting: string, + blurType: string ) { console.log("Setting up ArmCord settings."); storage.set( "settings", { - customTitlebar: customTitlebarSetting, + windowStyle: windowStyle, channel: channelSetting, doneSetup: true, armcordCSP: armcordCSPSetting, + minimizeToTray: minimizeToTray, + automaticPatches: automaticPatches, mods: modsSetting, + blurType: blurType }, function (error) { if (error) throw error; @@ -74,3 +88,12 @@ export function getVersion() { //to-do better way of doing this return "3.1.0"; } +export async function injectJS(inject: string) { + const js = await (await fetch(`${inject}`)).text(); + + const el = document.createElement("script"); + + el.appendChild(document.createTextNode(js)); + + document.body.appendChild(el); +} \ No newline at end of file diff --git a/src/window.ts b/src/window.ts index 13a60fa..4d99a2b 100644 --- a/src/window.ts +++ b/src/window.ts @@ -2,22 +2,49 @@ // I had to add most of the window creation code here to split both into seperete functions // WHY? Because I can't use the same code for both due to annoying bug with value `frame` not responding to variables // I'm sorry for this mess but I'm not sure how to fix it. -import { BrowserWindow, shell } from "electron"; +import { BrowserWindow, shell, app, ipcMain } from "electron"; import path from "path"; import { contentPath } from "./main"; -import { firstRun } from "./utils"; +import { checkIfConfigIsNew, firstRun, getConfigUnsafe } from "./utils"; import { registerIpc } from "./ipc"; +import contextMenu from "electron-context-menu"; export let mainWindow: BrowserWindow; +import * as glasstron from "glasstron"; + +let guestWindows: BrowserWindow [] = []; +contextMenu({ + showSaveImageAs: true, + showCopyImageAddress: true, + showSearchWithGoogle: true, + +}); function doAfterDefiningTheWindow() { + checkIfConfigIsNew(); registerIpc(); mainWindow.webContents.userAgent = - "Mozilla/5.0 (X11; Linux x86) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"; //fake useragent for screenshare to work + "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36"; //fake useragent for screenshare to work mainWindow.webContents.setWindowOpenHandler(({ url }) => { shell.openExternal(url); return { action: "deny" }; }); - + mainWindow.webContents.session.webRequest.onBeforeRequest( + (details, callback) => { + if (/api\/v\d\/science$/g.test(details.url)) + return callback({ cancel: true }); + return callback({}); + } + ); + mainWindow.on("close", async (e) => { + if (await getConfigUnsafe("minimizeToTray")) { + e.preventDefault(); + mainWindow.hide(); + } else if (!await getConfigUnsafe("minimizeToTray")) { + e.preventDefault(); + app.exit(); + app.quit() + } + }); console.log(contentPath); try { mainWindow.loadFile(contentPath); @@ -52,6 +79,7 @@ export function createCustomWindow() { autoHideMenuBar: true, webPreferences: { preload: path.join(__dirname, "preload/preload.js"), + spellcheck: true, }, }); doAfterDefiningTheWindow(); @@ -67,7 +95,100 @@ export function createNativeWindow() { autoHideMenuBar: true, webPreferences: { preload: path.join(__dirname, "preload/preload.js"), + spellcheck: true, }, }); doAfterDefiningTheWindow(); } +export function createGlasstronWindow() { + mainWindow = new glasstron.BrowserWindow({ + width: 300, + height: 350, + title: "ArmCord", + darkTheme: true, + icon: path.join(__dirname, "/assets/icon_transparent.png"), + frame: true, + autoHideMenuBar: true, + webPreferences: { + preload: path.join(__dirname, "preload/preload.js"), + spellcheck: true, + }, + }); + + //@ts-expect-error + mainWindow.blurType = getConfigUnsafe("blurType"); + //@ts-expect-error + mainWindow.setBlur(true); + doAfterDefiningTheWindow(); +} +export function createTabsHost() { + guestWindows[1] = mainWindow; + mainWindow = new BrowserWindow({ + width: 300, + height: 350, + title: "ArmCord", + darkTheme: true, + icon: path.join(__dirname, "/assets/icon_transparent.png"), + frame: true, + autoHideMenuBar: true, + webPreferences: { + preload: path.join(__dirname, "preload/preload.js"), + }, + }); + doAfterDefiningTheWindow(); +} +export function createTabsGuest(number: number) { + console.log(guestWindows) + if (guestWindows[number] !== undefined || null) { + try { + console.log("Showing Guest Window " + number); + mainWindow.hide() + guestWindows[number].show(); + mainWindow = guestWindows[number]; + } catch (e) { + console.error(e); + } + } else { + console.log("Creating Guest Window " + number); + mainWindow.hide(); + + guestWindows[number] = new BrowserWindow({ + width: 800, + height: 600, + title: "ArmCord Guest Window " + number, + darkTheme: true, + icon: path.join(__dirname, "/assets/icon_transparent.png"), + frame: true, + autoHideMenuBar: true, + webPreferences: { + preload: path.join(__dirname, "preload/preload.js"), + }, + }); + + mainWindow = guestWindows[number]; + ipcMain.on("tab" + number, (event) => { + event.returnValue = true; //return true so we know the tab exists + }); + + guestWindows[number].webContents.userAgent = + "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36"; //fake useragent for screenshare to work + + guestWindows[number].webContents.setWindowOpenHandler(({ url }) => { + shell.openExternal(url); + return { action: "deny" }; + }); + + guestWindows[number].webContents.session.webRequest.onBeforeRequest( + ( + details: { url: string }, + callback: (arg0: { cancel?: boolean }) => any + ) => { + if (/api\/v\d\/science$/g.test(details.url)) + return callback({ cancel: true }); + return callback({}); + } + ); + + guestWindows[number].loadURL("https://discord.com/app"); + } +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index f1232bd..1985c03 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -26,7 +26,6 @@ "declaration": false, // Exports declaration files in addition, used for exporting a module. "declarationMap": false, // Allows the user to go to the source file when hitting a go-to-implementation key like F12 in VSCode for example. //"declarationDir": "typings", // declarationDir allows you to separate the compiled code from the declaration files, used in conjunction with package.json's "types" property. - // Web Compatibility // "target": "ES2020", // ES2017 supports async/await, reducing the amount of compiled code, especially for async-heavy projects. ES2020 is from the Node 14 base (https://github.com/tsconfig/bases/blob/master/bases/node14.json) "downlevelIteration": false, // This flag adds extra support when targeting ES3, but adds extra bloat otherwise.